2015-07-11 53 views
1

我有一個反覆出現的問題,我用scapy發送的數據包沒有到達。我試圖用scapy和wireshark來嗅他們,但他們沒有被嗅到。就好像它們沒有被髮送,但發送它們的腳本顯示「發送1包」消息。scapy發送的數據包沒有到達,也不能被嗅探

我查了一下,發現this similar question問題可能是數據包被髮送到錯誤的接口。這似乎是可能的,因爲我scapy的默認iface設置爲「eth0」,並且我嗅探了我的wifi連接。如果這真的是問題,我該如何設置scapy來發送&在無線連接上嗅探?

代碼示例:

from scapy.all import * 

message = raw_input("enter your message:") 

for c in message: 
    packet = Ether()/IP(dst = "127.0.0.1")/UDP(sport = 4001, dport = ord(c)) 
    send(packet) 

raw_input() 

在此腳本應該通過發送空的UDP數據包的端口標誌着信件發送消息到服務器。腳本運行良好,我只是沒有在我的「服務器」上獲得任何數據包,並且該腳本應該發送的數據包不能被嗅探。

編輯:我的操作系統是Windows 8.1

回答

1

爲您包的目的地是127.0.0.1這下網絡範圍落在你的系統上的環回接口。如果您正在使用同一臺計算機(但是是一個單獨的進程)進行嗅探,您可以在該接口上收聽併發送(使用上述地址)。

您需要將您的數據包發送到您正在嗅探的計算機上的WiFi接口的地址。

您還需要確保防火牆(如果您有一個防火牆正在運行)不會阻止連接。

這只是故障排除過程中可能出錯的開始。如果你只是想測試基本Scapy - 我建議在你的機器上使用loopback接口來測試。

1

各種原因都是可能的。其中一些:

1)檢查conf.route,哪個接口用於發送到127.0.0.1。在交互式會話中最簡單,只嘗試一個數據包。

2)FW已經提到。嘗試完全禁用FW以查看它是否有效。

3)未能找到/導入數據包發送數據包。你沒有註明OS,所以不能詳細說明。例如。 MacOS使用libdnet。

4)缺乏製作數據包的權限。嘗試以root身份運行。

如果你想在python3(pip install scapy-python3)中使用scapy來嘗試它,我可以更詳細地幫你。

+0

什麼是conf.route?如何檢查我要發送數據包的接口?我如何以root身份運行scapy?我試圖在網上搜索,但收效甚微。謝謝。 – user1461837

+1

打開交互式會話(例如使用'sudo scapy'),並運行'conf.route'。你會看到你的路由是scapy解釋它們和相應的接口。由於scapy對路線做了自己的解釋,所以在發生錯誤的情況下, 127.0.0.1通過不同的接口發送。 –

+0

我試過禁用防火牆並嘗試了conf.route中的所有接口。我很確定問題出在libdnet上。我已安裝它。我應該怎麼做?不管怎麼說,還是要謝謝你。 – user1461837