scapy没有答案碎片tcp得到

时间:2018-06-14 12:35:20

标签: python scapy

我正在尝试使用scapy进行快速TCP连接。在这种情况下,我将使用HTTP,我希望服务器重定向我并关闭连接。这在很大程度上起作用。打开连接后,我发送HTTP GET并获得重定向回复。

但现在我想要破坏我的收获。我使用scapy的片段方法来分​​割有效载荷,我将它们分别发送出去。我用tshark捕获了序列,一切看起来都很好:

Capturing on eth1 0.000000 10.80.0.8 -> 30.0.0.1 TCP 40823 > http [SYN] Seq=0 Win=8192 Len=0 0.003022 30.0.0.1 -> 10.80.0.8 TCP http > 40823 [SYN, ACK] Seq=0 Ack=0 Win=2048 Len=0 MSS=1024 0.020846 10.80.0.8 -> 30.0.0.1 TCP 40823 > http [ACK] Seq=0 Ack=1 Win=8192 Len=0 0.042347 10.80.0.8 -> 30.0.0.1 IP Fragmented IP protocol (proto=TCP 0x06, off=0) 0.562284 10.80.0.8 -> 30.0.0.1 IP Fragmented IP protocol (proto=TCP 0x06, off=16) 1.079767 10.80.0.8 -> 30.0.0.1 IP Fragmented IP protocol (proto=TCP 0x06, off=32) 1.599802 10.80.0.8 -> 30.0.0.1 HTTP GET /index.php HTTP/1.1 1.603175 30.0.0.1 -> 10.80.0.8 TCP http > 40823 [ACK] Seq=1 Ack=44 Win=2048 Len=0 1.603245 30.0.0.1 -> 10.80.0.8 HTTP HTTP/1.1 302 Moved temporarily 3.648274 30.0.0.1 -> 10.80.0.8 HTTP [TCP Retransmission] HTTP/1.1 302 Moved temporarily

我在scapy中发送数据包的方式是使用srp(pkt,timeout=0.5,multi=1)。但这似乎不适用于IP片段,因为它没有找到对最终片段发送的响应,尽管有3(ACK,重定向和重传) Scapy将打印:

Begin emission: Finished to send 1 packets. .. Received 2 packets, got 0 answers, remaining 1 packets

(它只收到2,因为它只等待0.5秒,转发的时间要晚得多)

有没有办法告诉scapy将这些数据包捕获为有效答案?或以某种方式返回“无效”的答案?

1 个答案:

答案 0 :(得分:0)

scapy目前不支持碎片答案:您可以轻松发送碎片数据包,但无法轻松接收其答案。

使用srp时,Scapy会等待发送的每个数据包,这是一个独特的答案 这意味着如果几个数据包只生成一个答案(片段),则无法获得它们。

您可以在scapy github页面上将此报告为一个问题,以使其处于/状态