我有一个包跟踪,我用scapy伪造,用tcpreplay重新发送。我用Scapy重新计算IP和传输层校验和,将数据包保存到pcap文件上的磁盘上,并在其上调用tcpreplay。
通过并行运行tcpdump,我注意到所有传出数据包的IP校验和都没有任何价值。看来tcpreplay每次都要删除它。
这是故意的吗?我是不是遗漏了什么?
校验和应该是正确的,所以我认为tcpreplay不会删除它们,因为对它的检查失败了。
发布于 2013-02-23 06:34:20
您没有指定要使用的实际tcpreplay命令,但是tcpreplay 从不编辑数据包。您可以使用tcpreplay -编辑或tcprewrite来编辑数据包,但不能使用tcpreplay。即使如此,tcpreplay编辑/tcprewrite也会计算/修复您的校验和,而不是将它们归零。
您是否打开了Wireshark中的scapy生成的原始pcap,并验证了那里确实存在校验和?老实说,这听起来就像一个简单的例子,垃圾进入,垃圾输出。
我不知道有什么能把你的支票和清零.至少我无法想象为什么内核会对通过PF_PACKET接口发送的数据包这样做--这将是一个bug IMHO。
如果你想清楚了,告诉我。
发布于 2013-02-14 13:36:33
我不太清楚到底发生了什么,但我怀疑tcpreplay检测到接口将用来发送包,Offload Checksum处于活动状态,并让NIC计算正确的校验和。
尝试禁用卸载校验和
ethtool -K eth0 rx off tx off然后再试一次,让我们知道
发布于 2015-08-20 14:11:37
您可以使用tcpreplay-edit解决这个问题,它包含在与tcpreplay相同的包中,特别是这个选项:
-C, --fixcsum Force recalculation of IPv4/TCP/UDP header checksums取消对接口的卸载校验和是没有意义的:当数据包退出时,将被下一台启用校验和检查的机器拒绝(+99%)
https://stackoverflow.com/questions/14874300
复制相似问题