我在玩 Scapy 时发现了一些奇怪的事情。
如果我创建数据包以触发 ICMP 超时错误消息:
myPacket = IP(dst="www.google.com", ttl=3)/TCP()
...一旦使用函数 sr
发送 ICMP 消息,我就会收到它。
另一方面,如果我获取嗅探到的任何传出数据包并将其 ttl 值更改为上面使用的相同值,我将不会收到任何回复。
这里有什么问题吗?我以为我可以通过使用虚拟流量而不是真实流量来体验这一点!我什至尝试过使用其他 TTL 值,但无济于事。
最佳答案
好吧,数据包被丢弃,因为一旦我更改了 ttl 值,校验和就不再正确了。我只需通过删除其值来强制再次计算校验和:
del(mypacket.getlayer(IP).chksum)
关于icmp - scapy:修改嗅探流量的 TTL 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10336448/