我嘗試實現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