python - 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'
解决方案
推荐阅读
- laravel-mix - 如何使用 Laravel Mix 定义编译文件的目录
- javascript - 为什么 Chrome V8 JavaScript 引擎将“TG-1”到“TG-12”识别为有效日期/时间?
- python - 如何使用关键字和索引提取子字符串?
- r - 如何使用 dcast 更改列名?
- python - 如何使用 Python 和 Pandas 从 Salesforce 的有序字典层次结构中提取数据
- php - 为什么 OpenCart 管理面板设计上的授权逻辑会像这样(奇怪)?
- amazon-web-services - Cloudformation:错误:成员的长度必须小于或等于 20
- github - 如何将不同的 GitHub 包安装到我的网站
- python - My program works but is very slow, it also slows down as it runs
- r - 设置包含边缘的绘图的白色背景(ggExtra + ggplot2)