icmp - scapy:修改嗅探流量的 TTL 的正确方法

标签 icmp scapy ttl

我在玩 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/

相关文章:

python scapy 使用不正确的导出接口(interface)

redis更新具有相同值和ttl的键

c++ - Windows 套接字错误 10013

c - 在C程序中发送ICMP数据包

Python scapy 导入错误

python-2.7 - 使用 python/scapy 遍历 pcap 文件包

Node.js TTL 无法使数据过期

redis - Redis 中的默认 TTL 是多少?

java - 如何在不使用 ping.exe 的情况下使用 Windows 上的 Java 一次发送多个 ping?

java - 如何使用 Java 库 (JpCap) 发送 Ping6 请求