01 前言

以前做DDOS的实验都是用python来编写工具的,开始不会编写结构不会算校验和的时候就用scapy写,后来学会了报文结构开始自己构造各种报文,但是用python写成之后虽然是能实现基本功能,但是性能太差,其不到攻击效果,然后又开始学c语言,用c语言重写了syn flood攻击工具,今天我把python和c的源码都发出来,分享给大家,如果是学习就用python的代码,因为比较方便修改其中的内容,如果是做压力测试的话就用c的代码,性能比较好威力也比较大。话不多说直接上代码了。

02 python攻击代码

环境:ubuntu/kali +python 2.7.11

使用方法如下:mode有三种模式 syn攻击、ack攻击、混合攻击,虽说是支持多线程但是多个线程反而不如单线程快,估计是我的多线程弄得有些问题,麻烦这方面比较懂的朋友帮我指点一下。

我电脑是i7-6700单线程也只能这点速度。cpu1已经使用89%了

看一下抓包情况吧,因为只是测试用我也没带tcp的options字段,报文长度也不够64字节,不过也能传到目的地址。

下面是代码: (阅读原文可直接复制粘贴代码)

03 C语言攻击代码

环境:ubuntu/kali gcc version 6.1.1 20160802 (Debian 6.1.1-11)

使用方法:支持两个参数 目的ip和目的端口

性能:限制发包速度的是带宽(我这是100M的网,除去报文的前导码和帧间隔极限速度差不多就是9m左右了),cpu利用才27%,我在1000Mbps的网速下测试,单线程的话速度能到40m左右,cpu占用率大约85%左右。所以说在这件事上(syn flood)C的性能要好过python10倍以上。

抓包情况:c的攻击代码模拟了真实的chrome发起tcp请求的情况,不仅仅是标准的ip头+tcp头还加上了tcp options字段,mss最大段大小、sack选择确认、window scale 窗口规模因子,大小总共66字节。

C语言代码:我以前没怎么写过c,所以写的比较糟糕,不过凑合还是能用的,各位可以拿去在修改修改,计算校验和的部分是我在网上抄来的,产生随机数的种子srand不能用time(),这样会造成很多报文随机数部分重复(时间精度是秒),我用的是clock(),这是cpu时间随机数每个都不会重复。pstcphdr是tcp的伪首部,只参与计算校验和而不真的发送,代码中用了linux定义好的Ip.h和tcp.h中的结构,这可能是程序比较快的原因之一。

(阅读原文可直接复制粘贴代码)

0×04 结语

还有些注意事项,就是测试的时候不要通过家用路由器(或者一切NAT设备),不然伪造的源地址全都会被替换成真实的,如果你带宽大的话c语言那个攻击代码威力还是很大的,我测试环境下发包30MB/s,能让一台空闲的双路E5+32G 的web服务器拒绝服务,也能让同等配置的DNS服务器拒绝服务(DNS 服务器一般也会开放TCP 53端口)。所以各位不要乱去攻击别人,就测测自己的服务器抗压能力就好了。

pythonddos防御_浅谈拒绝服务攻击的原理与防御(7):用Python和C实现syn flood攻击...相关推荐

  1. 动态磅是怎么原理_浅谈动态地磅的原理及未来发展方向

    浅谈动态地磅的原理及未来发展方向: 文章介绍了动态地磅的结构和工作原理,针对动态地磅的分类做了全面的概述,分别对不同的动态地磅做了对比及详细的阐述,说明选择和使用动态地磅器的注意事项,凸显了轴组式动态 ...

  2. 伺服驱动器生产文件_浅谈伺服驱动器的工作原理

    原标题:浅谈伺服驱动器的工作原理 目前,主流的伺服驱动器均采用数字信号处理器(DSP)作为控制核心,可以实现比较复杂的控制算法,实现数字化.网络化和智能化.功率器件普遍采用以智能功率模块(IPM)为核 ...

  3. syn flood 攻击 c 语言源代码,利用Python和C实现syn flood攻击

    python  python  python  python  python  python  python  python  python俗话说,知己知彼,百战不殆.学习攻击代码的编写逻辑,反向实现 ...

  4. 00005在java结果输出_浅谈Java反序列化漏洞原理(案例未完善后续补充)

    摘要: 0005,这个16进制流基本上也意味者java反序列化的开始:(2)HTTP:必有rO0AB,其实这就是aced0005的base64编码的结果:以上意味着存在Java反序列化,可尝试构造pa ...

  5. java线程池和线程实例化_浅谈Java 线程池原理及使用方式

    一.简介 什么是线程池? 池的概念大家也许都有所听闻,池就是相当于一个容器,里面有许许多多的东西你可以即拿即用.java中有线程池.连接池等等.线程池就是在系统启动或者实例化池时创建一些空闲的线程,等 ...

  6. synchronized原理_浅谈synchronized的实现原理

    Synchronized是Java中的重量级锁,在我刚学Java多线程编程时,我只知道它的实现和monitor有关,但是synchronized和monitor的关系,以及monitor的本质究竟是什 ...

  7. 1流式细胞术荧光比值计算_浅谈流式细胞仪的工作原理和应用

    流式细胞术(Flow Cytometry, FCM)是七十年代发展起来的一项高科学技术,80年代开始从基础研究发展到临床医学研究及疾病的诊断和治疗监测,我国在80年代初引进了第一台流式细胞仪. 它集光 ...

  8. https抓包_浅谈HTTPS抓包原理,为什么Charles能够抓取HTTPS报文?

    Charles作用其实相当于拦截器,当客户端和服务器通信时,Charles其实会先接收到服务器的证书,但是它会自己生成一个证书发送给客户端(不管是Web端或App应用),也就是说它不仅仅是拦截,甚至还 ...

  9. python对整数进行因数分解_浅谈将一个正整数分解质因数的逻辑思维和Python开发设计...

    今天讨论的是如何将一个正整数分解质因数.例如:输入36,打印出36=2*2*3*3. 1.首先要清晰两个概念,要知道什么是质数,如何进行分解质因数?质数是指在大于1的自然数中,除了1和它本身以外不再有 ...

最新文章

  1. Innodb表压缩过程中遇到的坑(innodb_file_format) - billy鹏
  2. Python基础教程学习笔记:第一章 基础知识
  3. 气泡形提示控件grumble.js
  4. 新元素之video,audio,meter,datalist,keygen,output
  5. salesforce开发入门1
  6. 安装oracle 11gR2单实例+ASM
  7. php的cookie不存在会是什么值,PHP setcookie() 首次存储不上值
  8. linux mono mysql_LJMM平台( Linux +Jexus+MySQL+mono) 上使用MySQL的简单总结
  9. matlab求微分数值,用MATLAB语言求微积分方程的数值解.(xd^2y)/dx^2-5dy/dx+y=0y(0)=0y'(0)=0...
  10. 详述MySQL事务及ACID特性的实现原理
  11. 给你的数据来一个顶层设计
  12. bdc注意清空bdcdata【否则bdc可能…
  13. windows系统启用2个以上的mysql服务
  14. java数字处理_Java数字处理类(上)
  15. bat脚本实现微信多开
  16. [读书笔录]解析卷积神经网络(魏秀参)——目录和绪论
  17. html个人单页代码,个人单页HTML模板
  18. 2013年c语言课后作业答案,C语言课后作业答案.pdf
  19. 如何让360浏览器打开网页默认为“极速模式”
  20. 手把手教你启用多可文档的数据备份

热门文章

  1. 3DSlicer29:Debug or Dev-170918
  2. CMake2:版本号配置与头文件生成
  3. VTK修炼之道68:体绘制讨论_梯度不透明度传输函数
  4. JavaScript中判断是否存在某属性
  5. C++list常用接口总结
  6. 构建linux根文件系统
  7. 在Navicat中直接向表里添加数据
  8. 【展开讲讲?xmind日常小知识】xmind2020插入表格
  9. springboot集成邮箱功能
  10. 使用c:foreach时链接失效