2012-08-27 35 views
0

我想匹配数据包与他们触发的ICMP超时数据包。因此,我将每个数据包的28个字节长的字符串(有效负载的IP头+ 8B)与全部(28个字节长)的ICMP有效负载进行比较。匹配数据包和ICMP数据包在TCP重复的情况下

我有问题,当我重复发送的TCP数据包:

>>> p1 
<IP version=4L ihl=5L tos=0x0 len=60 id=0 flags=DF frag=0L ttl=1 proto=tcp chksum=0x7093 src=XXX dst=YYY options=[] |<TCP sport=10743 dport=37901 seq=2939035442L ack=2703569003L dataofs=10L reserved=0L flags=SA window=14480 chksum=0x9529 urgptr=0 options=[('MSS', 1460), ('SAckOK', ''), ('Timestamp', (215365485, 52950)), ('NOP', None), ('WScale', 4)] |>> 
>>> p2 
<IP version=4L ihl=5L tos=0x0 len=60 id=0 flags=DF frag=0L ttl=1 proto=tcp chksum=0x7093 src=XXX dst=YYY options=[] |<TCP sport=10743 dport=37901 seq=2939035442L ack=2703569003L dataofs=10L reserved=0L flags=SA window=14480 chksum=0x9426 urgptr=0 options=[('MSS', 1460), ('SAckOK', ''), ('Timestamp', (215365744, 52950)), ('NOP', None), ('WScale', 4)] |>> 

...其前28个字节是相同的,但在TCP报头的其余部分不同:

'E\x00\x00<\x00\[email protected]\x00\x01\x06p\x93\x8a`t\x86\xb2.X\x14)\xf7\x94\r\xaf.\x1f2' 
'E\x00\x00<\x00\[email protected]\x00\x01\x06p\x93\x8a`t\x86\xb2.X\x14)\xf7\x94\r\xaf.\x1f2' 

ICMP数据包我有这样相同的有效载荷:

>>> i1[ICMP] 
<ICMP type=time-exceeded code=ttl-zero-during-transit chksum=0x689a unused=0 |<IPerror version=4L ihl=5L tos=0x0 len=60 id=0 flags=DF frag=0L ttl=1 proto=tcp chksum=0x7093 src=XXX dst=YYY options=[] |<TCPerror sport=10743 dport=37901 seq=2939035442L |>>> 

>>> i2[ICMP] 
<ICMP type=time-exceeded code=ttl-zero-during-transit chksum=0x689a unused=0 |<IPerror version=4L ihl=5L tos=0x0 len=60 id=0 flags=DF frag=0L ttl=1 proto=tcp chksum=0x7093 src=XXX dst=YYY options=[] |<TCPerror sport=10743 dport=37901 seq=2939035442L |>>> 

相应的字符串是:

'E\x00\x00<\x00\[email protected]\x00\x01\x06p\x93\x8a`t\x86\xb2.X\x14)\xf7\x94\r\xaf.\x1f2' 
'E\x00\x00<\x00\[email protected]\x00\x01\x06p\x93\x8a`t\x86\xb2.X\x14)\xf7\x94\r\xaf.\x1f2' 

眼下在这种特殊情况下,我声称a1比赛i1因为i1i2之间,它是i1说的a1发送后,很快就到了,而i2到达晚得多。

这够了吗?我还有什么遗漏?

回答

1

TCP数据包的标头大小并不总是20个字节。如果有选项设置,标题可能会更大。您可以使用Internet标题长度字段查找标题大小并将所需的有效负载量添加到该数字。

Scapy: how do I get the full IP packet header?

+0

是的,但在任何情况下,我只有前8个字节所需要的,所以...... 这个问题是我的,顺便说一下! –