我正在使用Scala的rdpcap
函數來讀取PCAP文件。 我也使用link to HTTP support in Scapy中描述的模塊,這是我需要的,因爲我必須檢索所有的HTTP請求和響應及其相關的數據包。Scapy和rdpcap函數
我注意到解析一個大的PCAP文件rdpcap
函數需要太多時間來讀取它。
是否有解決方案快速讀取pcap
文件?
我正在使用Scala的rdpcap
函數來讀取PCAP文件。 我也使用link to HTTP support in Scapy中描述的模塊,這是我需要的,因爲我必須檢索所有的HTTP請求和響應及其相關的數據包。Scapy和rdpcap函數
我注意到解析一個大的PCAP文件rdpcap
函數需要太多時間來讀取它。
是否有解決方案快速讀取pcap
文件?
儘管我同意加載時間比預期的要長,但這很可能是因爲正在解析文件以生成高度組合的對象數組。我所要做的就是使用editcap
來截斷數據包捕獲,使它們更容易閱讀。例如:
$ editcap -B 2013-05-2810:05:55 -i 5 -F libpcap inputcapture.pcap outputcapture.pcap
請注意:此命令的開關的完整說明,請here。
此外,-F libpcap
部分似乎是必要的(至少對我來說)讓scapy的pcap
函數能夠解析文件。 (這應該是默認的pcap文件輸出格式,但是對於我來說這種情況並非如此,無論出於何種原因,您可以使用capinfos
來驗證輸入和輸出文件的文件類型(例如,只需輸入capinfos your_capture.pcap
)
兩個capinfos
和editcap
可與Wireshark的分佈
Scapy的還有另外一個方法sniff
,你可以用它來讀取PCAP文件了:
def method_filter_HTTP(pkt):
#Your processing
sniff(offline="your_file.pcap",prn=method_filter_HTTP,store=0)
rdpcap
負載整個PCAP文件到內存中。 H因爲它使用了大量的內存,正如你所說的那樣緩慢。而sniff
一次只讀取一個數據包,並將其傳遞給提供的prn
函數。 store=0
參數確保數據包在處理完成後立即從內存中刪除。
你的pcap文件有多大?閱讀它需要多長時間?是否真的太長(即使只裝載一次)?你想讀多少次(反問題)? –
我的文件大於300 MB,我不得不多次啓動Python腳本。 – auino
@auino,讀取時間的問題具體是什麼?每當您進行更改時解析300MB文件時是否需要花費太長時間來開發腳本,或者是否存在實時處理要求?此外,請給我們一個什麼是可接受的解析時間的感覺 –