写入pcap文件时,Scapy以太网填充层丢失

问题描述

当我尝试使用Scapy修改IP标头字段并使用wrpcap将修改后的数据包写入pcap时,以太网填充层更改为Raw。

数据包的show功能显示了Padding层: pktn.show()

### [填充] ### 负载='\ x00 \ x00 \ x00 \ x00 \ x00 \ x00'

但是数据包的show2函数显示Raw层: pktn.show2()

### [Raw] ### 负载='\ x00 \ x00 \ x00 \ x00 \ x00 \ x00'

有什么主意,为什么要保留填充层?否则,Wireshark会将填充字节识别为TCP有效负载

感谢1

解决方法

好。我终于发现更改标题字段后,以下代码行会导致此问题:

pkt [IP] .len = len(pkt ['IP'])

我试图使用此代码为新数据包分配IP标头长度,但似乎是导致此问题的原因,如果没有此行,则IP标头长度对于新数据包来说就很好。我仍然不太了解其背后的原因,但看来问题已解决。

谢谢!