我试图与Scapy建立一个3路TCP握手协议
我在Wireshark中看到SYN-ACK包,但sr1从未终止,似乎也没有收到任何包。
我有一个简单的设置来测试与Scapy的TCP握手。
DESTINATION_HOST = "194.232.104.142"
DESTINATION_PORT = 80
SOURCE_PORT = 50210
SOURCE_HOST = "192.168.0.31"
#create a TCL Handshake
#SYN
ip = IP(src=SOURCE_HOST,dst=DESTINATION_HOST)
SYN = TCP(sport=SOURCE_PORT, dport=DESTINATION_PORT, flags='S', seq=1000)
SYNACK =sr1(ip/SYN) #send the package and wait for the answer
#ACK
ACK = TCP(sport=SOURCE_PORT, dport=DESTINATION_PORT, flags='A', seq=SYNACK.ack, ack=SYNACK.seq + 1)
send(ip/ACK)
另外,作为一个也许很重要的评论,我在Windows 10上运行。
因为好像包永远到不了我的电脑,我打开wireshark,在那里找到了想要的包,但是nethertheless,sr1没有终止,甚至。
ans = sniff(filter=f"tcp port {DESTINATION_HOST}",lfilter=match_packet,count=12,timeout=10)
print(ans)
甚至:
def match_packet(self, pkt):
if pkt.haslayer(IP) and pkt[IP].dst == SOURCE_HOST \
and pkt.haslayer(TCP) and pkt[TCP].dport == SOURCE_PORT:
#and pkt[TCP].ack == self.seq_next:
return True
return False
返回
<Sniffed: TCP:0 UDP:0 ICMP:0 Other:0>
好吧,我解决了重装NPcap的问题,我以WinPcap兼容模式安装。我不知道只用普通的方式安装,而不使用兼容性模式是否会成功,因为我已经安装了最新的版本。