首页 > 解决方案 > Scapy wrpcap 与 rdpcap 不匹配

问题描述

我正在尝试从单独捕获的二进制数据创建数据包。我基本上是在尝试合成 pcap 文件。

pkt = IP(dst="1.1.1.1", src="2.2.2.2") / UDP(sport=100) / Raw(load=b"".join([message_header, message_body]))

wrpcap('filtered-udp.pcap', pkt, append=False)
pcap = rdpcap('filtered-udp.pcap')

for pktRead in pcap:
     print(pktRead[UDP].load)

但是,在生成的 pcap 文件中,有一个额外的 DNS 层会自动添加。此外,写入和读取的数据包负载不匹配。我不确定为什么在我编写 pcap 文件和读回它时原始数据会发生变化。

二进制数据是

b"".join([message_header, message_body])
b'&\x00\x01\x00+\xc4\x01\x00Ny!\xb2j\xb6\x11\x14\x12\xa0\xf64&\xf5k\x0cC.:\x00\x00B\x1c\x07\x00\x00d\x00\x00\x00'

pkt[UDP].load
b'&\x00\x01\x00+\xc4\x01\x00Ny!\xb2j\xb6\x11\x14\x12\xa0\xf64&\xf5k\x0cC.:\x00\x00B\x1c\x07\x00\x00d\x00\x00\x00'

pktRead.layers()
[<class 'scapy.layers.inet.IP'>, <class 'scapy.layers.inet.UDP'>, <class 'scapy.layers.dns.DNS'>, <class 'scapy.packet.Raw'>]

pktRead[UDP].load
b'j\xb6\x11\x14\x12\xa0\xf64&\xf5k\x0cC.:\x00\x00B\x1c\x07\x00\x00d\x00\x00\x00'

标签: pythonudpscapy

解决方案


推荐阅读