2015-06-29 39 views
2

我一直在關注Seitz的黑帽python書籍,他舉了一個使用scapy庫捕獲網絡流量的例子。scapy sniff函數沒有捕獲任何數據包

import logging 
logging.getLogger("scapy.runtime").setLevel(logging.ERROR) 
from scapy.all import * 

def packet_callback(packet): 
    print packet.show() 

sniff(filter="",iface="any",prn=packet_callback, count = 1) 

我運行上面的函數如下:sudo python sniffer.py並打開谷歌瀏覽器頁面。沒有數據包被捕獲。我對一個域做了一個ping請求,沒有任何東西被捕獲。我期待print packet.show()這一行打印正在發送的第一個數據包。

所有這些都在無線網絡連接上的Macbook Pro上運行。

有人可以幫我排除故障嗎?

回答

2

如果你想讓scapy在所有接口上嗅探,只需刪除iface =「any」參數即可。由於「任何」不是一個接口,所以scapy不能嗅探。

還刪除過濾器參數,因爲它沒有應用任何過濾器。 正確的命令是這樣的。

sniff(prn=packet_callback, count = 1) 
+0

如果答案有幫助。你應該接受答案。 – aaveg

1

iface參數期望接口的確切名稱。很可能你沒有名爲ANY的界面。您可以省略參數,這很可能是您在這種情況下必須執行的操作,或者使用實際的接口名稱(例如「eth0」)。

當我嘗試你的代碼時,我實際上得到一個異常「沒有這樣的設備」。這是你運行的實際代碼嗎?

另外,請寫scapy版本。我正在使用python3版本,你可以從http://github.com/phaethon/scapy或scapy-python3獲得。

相關問題