3.15都没法打的一个DoS开源项目

​​​​​​点击关注强哥,查看更多精彩文章呀

哈喽,大家好,我是强哥。

不知道大家还记不记得强哥之前发的一篇文章:,里面Diss了一个DoS的开源项目凭借花里胡哨的界面骗人。这个在3.15这个日子真的是应该再拿出来鞭尸一下。

不过,今天强哥想要介绍的是另一款DoS开源项目。

当然了,首先还是要声明一点,介绍这个项目不是为了让大家学了去攻击别人的网站,而是想要让大家能够了解一些网络安全相关的知识,哪天被人用DoS攻击了,至少知道DoS是个什么玩意吧。

简介

哈哈哈,没错,项目的介绍就是这么简单。作者的README文件只给我们提供了一个YouTube的视频地址,而且可能是因为某些不可限力已经没法访问了。

不过大家既然能找到它,自然知道是个干什么的玩意儿。

项目结构

这个也很简单,就两个文件:

  • headers.txt请求头配置信息

  • hammer.py项目主代码,由python编写 别看就简简单单的两个文件,对于我们了解DoS攻击来说已经足够了。

反射攻击

这个项目强哥研究了一下,攻击方式也很刁钻,不但有使用直接攻击的方式硬钢目标主机,而且还通过反射攻击的方式进行双管齐下。

那么什么是反射攻击呢?要理解反射攻击,首先要理解什么是直接攻击。直接攻击就是攻击者拿自己的机子去攻击目标主机,这样的话,攻击者很容易被查到攻击的源头,虽然攻击者可以使用伪造源IP地址的方式(如使用IP代理池,这个强哥之前的文章也有提过:)进行隐藏,但更好的方式是使用反射攻击技术。

发射攻击又被称为DRDoS(分布式反射拒绝服务)攻击,是指利用路由器、服务器等设施对请求产生应答,从而反射攻击流量并隐藏攻击来源的一种分布式拒绝服务攻击技术。

项目原理

如上所述,项目写了两个方法,一个是直接攻击的方式,一个是反射攻击的方式。

首先直接攻击自不必多说,就是一个while(True)的死循环不断的发送TCP请求,相关代码如下:

while True:
   packet = str("GET / HTTP/1.1\nHost: "+host+"\n\n User-Agent: "+random.choice(uagent)+"\n"+data).encode('utf-8')
   s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
   s.connect((host,int(port)))
   if s.sendto( packet, (host, int(port)) ):
    s.shutdown(1)
    print ("\033[92m",time.ctime(time.time()),"\033[0m \033[94m <--packet sent! hammering--> \033[0m")
   else:
    s.shutdown(1)
    print("\033[91mshut<->down\033[0m")
   time.sleep(.1)

强哥这里重点说一下反射攻击,既然是反射,当然要有反射器了,这个项目主要用到了两个反射地址:

bots.append("http://validator.w3.org/check?uri=")
bots.append("http://www.facebook.com/sharer/sharer.php?u=")

其实,这两个都是正规的网站地址,比如第一个就是w3用来验证网站代码是否符合规范的网站。我们只要在链接参数uri或者u后跟上目标主机的地址,发送请求后,这两个网站就会对目标网站进行发起请求,检查网站的内容。

这个项目就是通过这种方式,借助第三方网站服务地址,然后外层包一个while(True)死循环,巧妙的来隐藏自己,让反射网站攻击别人。

不过上面两个地址目前看着好像是都已经无法使用了……

学习

项目还是比较有学习价值的,特别是对于想要了解网络安全的小伙伴来说,一个好的项目真的是能够很快的提升我们对知识点的认知。

当然,有兴趣想具体学习项目代码的小伙伴,强哥设置个门槛,大家可以关注公众号「强哥叨逼叨」回复「hammer」获取到项目的具体地址。

项目代码仅供学习使用,毕竟目前项目能使用的方式只剩下直接攻击,直接用它,不但相当于把自己赤条条的暴露在被攻击者面前,而且完全没法实现所谓的攻击。

所以,大家且行且珍惜。遵纪守法,好好学习,不要是个东西,拿来就用。也是想让大家长个心眼,在这个3.15的特殊日子,学会提升自己的辨识能力,多关注强哥分享的文章才是硬道理。

好啦,今天就到这。

点击关注强哥,查看更多精彩文章呀 

很抱歉,由于您提到使用的是POI 3.15版本,而这个版本并不支持XSSF(XMLSpreadsheetFormulae)格式,因此无法提供完整的省市联动下拉框联动效果代码。然而,对于HSSF(Hierarchical Storage Format)格式,您可以参考以下简化的示例,注意这仅适用于读取固定数据而不是动态联动: ```java import org.apache.poi.hssf.usermodel.*; public class HSSFProvincesCitiesExample { public static void main(String[] args) throws Exception { FileInputStream inputStream = new FileInputStream("your_file.xls"); // 替换为您的Excel文件路径 Workbook workbook = new HSSFWorkbook(inputStream); // 获取工作表 Sheet sheet = workbook.getSheetAt(0); // 假设只有一个工作表 // 第一行通常作为标题行,我们可以跳过它 if (sheet.getFirstRowNum() > 0) { sheet = sheet.createSheet("省市联动"); Row headerRow = sheet.createRow(0); headerRow.createCell(0).setCellValue("省份"); headerRow.createCell(1).setCellValue("城市"); } // 遍历第一列(省份)和第二列(城市) int provinceCol = 0; int cityCol = 1; for (Row row : sheet) { if (row.getRowNum() > 0) { // 跳过标题行 Cell provinceCell = row.getCell(provinceCol); Cell cityCell = row.getCell(cityCol); // 假设provinceCell已填有省份名称 String province = provinceCell.getStringCellValue(); // 查找该省份对应的固定城市列表(这里仅为演示,实际应用需替换为动态加载或配置数据) String[] cities = getCityListByProvince(province); // 如果有城市,则写入下拉框数据 if (cities != null && cities.length > 0) { cityCell.setCellValue(cityListToDropdown(cityList)); DataValidationHelper dvHelper = sheet.getDataValidationHelper(); DataValidationConstraint constraint = dvHelper.createExplicitListConstraint(cities); DataValidation validation = dvHelper.createValidation(constraint, cityCell); validation.setShowDropDown(true); cellValidation(cityCell, validation); } else { cityCell.setCellValue(""); } } } inputStream.close(); workbook.close(); } // 假定一个静态的省市映射方法,实际应用需要根据实际数据结构修改 private static String[] getCityListByProvince(String province) { // 示例数据:省份对应的固定城市列表 // 注意:这个方法应该从配置、数据库或其他数据源获取真实的省市信息 return new String[]{"北京", "上海", ...}; } // 将城市列表转换为适合下拉框的数据格式 private static String cityListToDropdown(String[] cities) { StringBuilder dropdownList = new StringBuilder(); for (int i = 0; i < cities.length; i++) { dropdownList.append((i == 0 ? "" : ", ") + cities[i]); } return dropdownList.toString(); } // 设置下拉框验证方法 private static void cellValidation(Cell cityCell, DataValidation validation) { cityCell.setCellType(Cell.CELL_TYPE_NUMERIC); DataValidationHelper dvHelper = sheet.getDataValidationHelper(); dvHelper.addValidation(validation, cityCell); } } ``` 请注意,这段代码只实现了静态的省市数据填充和下拉框显示,如果需要动态联动效果,你需要另外设计数据存储结构并配合事件监听来实现实时更新。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值