如何根据时间戳有效地重新排序 PCAP 文件中的数据包?

如何根据时间戳有效地重新排序 PCAP 文件中的数据包?

我有一个包含许多数据包的 PCAP 文件。但是,根据时间戳,它们是无序的(实际上是随机的)。最好的方法是什么有效率的根据时间戳对 PCAP 数据包进行排序以便稍后重播?

目前我正在通过斯卡皮和建议的 Python这里。这有效,但速度真的很慢。此外,它将转储完全加载到内存中,而时间戳实际上就足够了。我知道排序是一项昂贵的操作,但这种方法在现代 Core i7 上对包含 778589 个数据包的 344MB 文件花费了近 4 分钟。

我也知道Wireshark应该包括“reordercap”但是,此工具未包含在当前的 Debian 和 Ubuntu 版本中。在尝试从源代码构建 Wireshark 之前,也许有人有使用此工具的经验,并且可以建议其性能如何。

那么,回到问题:如何根据时间戳对 PCAP 文件中的数据包进行高效排序?内存不是制约因素,因为 PCAP 不会大于 2GB,并且有足够的 RAM 可用,但运行时间对我来说很重要。它应该尽快完成。

先感谢您!

答案1

我也遇到了同样的问题,实际上我的问题更严重,因为我的 pcapfile 比你的大得多,所以我需要一种更有效的方法来对数据包进行排序。我发现库跟踪它是用 C 开发的,是一个很好的解决方案。不幸的是,没有任何直接的工具可以完成这项任务,但它的 tracemerge 工具可以合并两个(或更多)文件并对数据包进行排序。所以你应该先用 tracesplit 拆分文件,然后用 tracemerge 合并它们。

答案2

只需使用reordercap工具

# order/sort pcap file according to the packets timestamp [Arrival Time]
reordercap -n input.pcap ordered.pcap

相关内容