我尝试实现3路,hadnshake与Python中的原始套接字,并使用Scapy的。Scapy的原始套接字
的代码是:
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)
IPheader()方法返回Scapy的IP报头。
运行脚本时我得到这个错误:
ERROR: --- Error in child 3057
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 89, in sndrcv
pks.send(p)
File "/usr/lib/python2.7/dist-packages/scapy/supersocket.py", line 34, in send
return self.outs.send(sx)
error: [Errno 6] No such device or address
所做的更改和工作随机它。现在,我尝试通过StreamSocket发送SYN数据包,但我看到了畸形的Wireshark的。 iph = IPheader() syn = TCP(sport = TCP_SOURCE_PORT,dport = TCP_DESTINATION_PORT,seq = 100,ack = 400,flags =“S”) pkt = iph/syn ss.send(pkt)' – user2399087
我解决了上面的问题,通过发送通过套接字只有TCP头没有IP头。接下来的问题是,我的设备没有响应我的SYN数据包。我无法设置我想要的序列号和SYN数据包与SEQ = 0发送,但我不认为这是问题 – user2399087