我尝试使用Python中的原始套接字并使用Scapy实现3-way-hadnshake。在
代码是:
s=socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.IPPROTO_TCP)
ss=StreamSocket(s)
iph=IPheader()
syn = TCP(sport=TCP_SOURCE_PORT,dport=TCP_DESTINATION_PORT, flags="S")
synack = ss.sr1(iph/syn)
myack = iph/TCP(dport=synack[TCP].sport, sport=synack[TCP].dport, seq=synack[TCP].ack, ack=synack[TCP].seq+1, flags="A")
ss.send(myack)
方法返回一个scapy IP头。在
运行脚本时,我遇到以下错误:
^{pr2}$
设备没有响应您的SYN包,因为原始套接字没有响应。您必须手动发送SYN-ACK。此外,Wireshark和TCP将序列号显示为相对的。为了显示实际数字,必须关闭此选项。第三,您可以手动设置序列号或使用
或者
^{pr2}$我发现你的代码可能有几个问题:
在调用
StreamSocket()
之前,您需要与常规套接字建立连接。所以您需要建立一个连接,类似于s.connect(("10.1.1.1",9000))
在ss=StreamSocket(s)
行之前。更多信息请参见here您可能需要更正基本套接字类型。我建议用
s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)
。有关详细信息,请查看this相关问题 更多 >
编程相关推荐