Python

如何根據時間戳有效地重新排序 PCAP 文件中的數據包?

  • September 25, 2017

我有一個包含許多數據包的 PCAP 文件。然而,根據時間戳,它們是無序的(實際上是隨機的)。根據時間戳對 PCAP 數據包進行有效排序以供以後重放的最佳方法是什麼?

目前,我正在通過Scapy和 Python 來執行此操作,正如這裡提出的那樣。這是有效的,但真的很慢。此外,它將轉儲完全載入到記憶體中,時間戳實際上就足夠了。我知道排序是一項昂貴的操作,但在現代 Core i7 上,對於包含 778589 個數據包的 344MB 文件,這種方法需要將近 4 分鐘。

我也知道Wireshark應該包含 “reordercap”,但是這個工具不包含在目前的 Debian 和 Ubuntu 版本中。在嘗試從原始碼建構 Wireshark 之前,也許有人對這個工具有經驗,並且可以建議性能如何。

那麼,回到這個問題:如何根據時間戳有效地對 PCAP 文件中的數據包進行排序?記憶體不是限制因素,因為 PCAP 不會大於 2GB 並且有足夠的 RAM 可用,但執行時對我來說很重要。它應該盡快完成。

先感謝您!

我有同樣的問題,實際上我的問題最糟糕,因為我的 pcapfile 比你的大得多,所以我需要一種更有效的方法來對其數據包進行排序。我發現用 C 語言開發的libtrace是一個很好的解決方案。不幸的是,沒有任何直接的工具可以完成這項任務,但它的 tracemerge 工具可以合併兩個(或更多)文件並對數據包進行排序。所以你應該先用tracesplit分割你的文件,然後用tracemerge合併它們。

引用自:https://serverfault.com/questions/713122