Python Scapy wrpcap - 如何将数据包附加到 pcap 文件?

标签 python networking network-programming scapy raw-ethernet

我有一些软件可以模拟 BER 和网络延迟之类的东西。我需要一种方法来测试软件的 BER 模块,以确保它确实能正常工作。我的解决方案是创建一个程序,发送类型字段设置为未使用类型的原始以太网帧。以太网帧内部只是随机位。对于发出的每一帧,我需要将帧记录到 pcap 文件中。在网络链接的另一端将是一个接收应用程序,它简单地将它看到的每个数据包写入它自己的 pcap 日志。测试完成后运行两个 pcap 日志将进行比较以获得 BER。

我正在使用 python 模块 Scapy,到目前为止它已经完成了我需要的一切。我可以发送带有随机数据的原始以太网帧并在 Wireshark 中查看它们。但是,我不知道如何让 wrpcap() 方法附加到 pcap 文件,而不是覆盖。我知道我可以将数据包列表写入 wrpcap,但此应用程序需要能够无限期地运行,我不想等到应用程序退出才能写入所有发送到硬盘的数据包。因为这会在内存中存储很多东西,如果发生什么事情,我将不得不从头开始测试。

我的问题是:如何使用 scapy 附加到 pcap 文件而不是覆盖 pcap 文件?有可能吗?如果不是那么什么模块可以做我需要的?

在寻找具有 Scapy 功能的东西时,我遇到了 dpkt,但我没有找到很多关于它的文档。 dpkt 可以执行我要求的操作吗?如果可以,我可以从哪里获得一些好的文档?

最佳答案

对于后代而言,PcapWriter 或 RawPcapWriter 看起来是在 scapy 2.2.0 中处理此问题的更简单方法。除了浏览源代码外,找不到太多文档。一个简单的例子:

from scapy.utils import PcapWriter

pktdump = PcapWriter("banana.pcap", append=True, sync=True)

...
pktdump.write(pkt)
...

关于Python Scapy wrpcap - 如何将数据包附加到 pcap 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574092/

相关文章:

networking - DNS服务器IP地址

PHP imap_open() 太慢?还有其他选择吗?

C++ 无输出,boost.asio

python - Jinja2 将 HTML 字符串标记为安全

python - 导入错误:没有名为 xlwt 的模块

Python:如何在 if 语句中使用类型函数?

python - 仅获取 Pandas 中的一组元素

networking - 网络: Longest prefix matching

java - 使用 Java 检测另一台设备上的端口是否打开

使用 Zeromq 的 Python 脚本停止接收消息