from scapy.all import *
# VARIABLES
src = sys.argv[1]
dst = sys.argv[2]
sport = random.randint(20000,65535)
dport = int(sys.argv[3])
print src
print dst
print sport
print dport
# SYN
ip=IP(src=src,dst=dst)
SYN=TCP(sport=sport,dport=dport,flags='S',seq=1000)
SYNACK=sr1(ip/SYN)
SYN.show()
SYNACK.show()
# ACK
seq=SYNACK.ack + 1
ack=SYNACK.seq + 1
print seq
print ack
ACK=TCP(sport=sport, dport=dport, flags='A', seq=seq, ack=ack)
sr1(ip/ACK)
ACK.show()exec命令:
python 3WSK.py 10.16.11.21 10.11.157.130 26789SYNACK结果如下:
###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 44
id = 0
flags = DF
frag = 0L
ttl = 60
proto = tcp
chksum = 0x821a
src = 10.11.157.130
dst = 10.16.11.21
\options \
###[ TCP ]###
sport = 26789
dport = 35067
seq = 1918207620
ack = 1001
dataofs = 6L
reserved = 0L
flags = SA
window = 5840
chksum = 0xd630
urgptr = 0
options = [('MSS', 1460)]
###[ Padding ]###
load = '\x00\x00'但是我的tcp服务器没有记录任何东西。
所以,我不确定我的替身代码连接是否成功,我也想知道
如何验证tcp连接是否正常工作。谢谢
发布于 2016-01-14 04:45:55
检查当SYN+ACK到达时,您是否看到从您的操作系统发送的RST。如果是这样的话,看看this answer,并删除带有iptables的RST:
iptables -A OUTPUT -p tcp --tcp-flags RST RST -s <your_ip> -j DROP
如果不是这样,看看this gist,它对我来说工作得很好。
https://stackoverflow.com/questions/34652455
复制相似问题