我有一些软件可以模拟网络上的误码率和延迟。我需要一种方法来测试软件的误码率模块,以确保它实际工作正常。我的解决方案是创建一个程序,将类型字段设置为未使用的类型的原始以太网帧发送出去。在以太网帧中只是随机位。对于发送的每个帧,我需要将帧记录到pcap文件中。在网络链路的另一端将是一个接收应用程序,它只将看到的每个数据包写入自己的日志。测试完成后,将比较两个PCAP日志以获得BER。
我使用的是python模块,到目前为止它已经完成了我所需要的一切。我可以发送带有随机数据的原始以太网帧,并在wireshark中看到它们。但是,我不知道如何让pcap方法附加到PCAP文件,而不是重写。我知道我可以将数据包列表写入Scapy,但此应用程序需要能够无限长时间运行,而且我不想等到应用程序退出后再写入发送到硬盘的所有数据包。因为要在内存中存储很多东西,如果发生了什么事情,我必须从头开始测试。
我的问题是:如何使用wrpcap()而不是覆盖wrpcap文件来附加到pcap文件?有可能吗?如果没有,那么什么模块可以做我需要的?
在寻找具有scapy功能的东西时,我遇到了pcap,但没有找到很多文档。Scapy可以按照我的要求做吗?如果可以,我在哪里可以得到一些好的文档?

最佳答案

有一种方法可以做你想做的事,但它的意思是:
[内存占用一个大的内存:从磁盘中将现有的pcappcap读取到rdpcap()scapy中,然后在收到帧时将帧写入到PacketList()中。您可以随意有选择地将intermediatePacketList保存到PacketList中,但我认为在pcap中没有类似于append功能的功能。正如您所提到的,这种技术还意味着您要将整个scapy保存在内存中,直到完成为止。
[将单个文件粘在一起]:只保留内存中数据包的小快照…您应该每x分钟将wrpcap()快照保存到磁盘,然后在脚本完成时将这些单个文件聚合在一起。
您可以将Linux中的PacketList文件与pcap包结合起来…以下命令将结合到pcappcap中:

mergecap -w all_paks.pcap pak1.pcap pak2.pcap

至于mergecap,我查看了它们的源代码,它可能能够增量地写入数据包,但我不能说明它们的代码基是如何稳定或维护的…从提交日志中看,它有点被忽略(上一次提交是2011年1月9日)。

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

10-12 07:12