我有一些软件可以模拟 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/