2013-12-12 103 views
1

我想知道是否有任何可能性來捕獲網絡數據包並將其保存到變量中,例如在python中。 我需要一些信息從中獲取,而不是將其保存到文件中。linux上的實時數據包捕獲

我需要捕獲http數據包並獲取源地址和它的內容(應該是一個html代碼),從中只提取文本,然後對該信息執行剩餘的工作。 沒有理由將每個數據包保存到文件中,因爲整個過程會更慢。我一直在尋找相當長的時間來爲任何工具做到這一點,但沒有成功。 請,如果你知道任何工具可以幫助我做到這一點,請寫下來。

+0

'tcpdump'可能是你的工具,雖然我從來沒有親自用過python。 – admdrew

+0

http://www.secdev.org/projects/scapy/doc/introduction.html – Blender

回答

0

我相信你看過this link關於一個庫來處理PCAP文件。現在的問題是如何在不存儲文件的情況下實時採集數據。

也許最簡單的方法是使用一個FIFO

$ mkfifo /tmp/tcpdump.fifo 

現在,您可以捕獲和飼料數據到指定的FIFO

$ sudo tcpdump -s0 -i eth0 -f /tmp/tcpdump.fifo tcp port 80 

而且在你的Python程序,你可以打開「/ tmp目錄/ tcpdump的。 fifo'作爲輸入文件按照鏈接中的說明進行操作。

或者,您可以嘗試在程序中打開'/ dev/stdin'並從那裏讀取數據;您可以使用shell將PCAP數據直接輸入到stdin,然後跳過名爲fifo的中間程序。

$ sudo tcpdump -s0 -i eth0 -f - tcp port 80 | ./youprogram.py 
+0

感謝您的回覆!我非常感謝! :) – vit0

+0

@ vit0那麼你可以接受的答案,或者至少upvote它! – abasterfield

+0

對不起,我試過upvote但名氣太少:(。批准爲答案:) – vit0