在Mac

2013-01-12 57 views
2

我試圖使用Scapy的嗅探功能嗅出UDP數據包使用Scapy的嗅探UDP數據包,我送的Looback接口的數據包,發送代碼很簡單如下:在Mac

from socket import * 

IPv4 = "127.0.0.1" 
Port = 45943 

ClientSock = socket(AF_INET, SOCK_DGRAM) 

while True: 
    MESSAGE = raw_input() 
    ClientSock.sendto(MESSAGE, (IPv4, Port)) 

但是當我運行(進口Scapy的又一個終端選項卡):

a = sniff(iface="lo0", count = 5) 

我得到以下結果:

>>> a.nsummary() 
0000 Raw 
0001 Raw 
0002 Raw 
0003 Raw 
0004 Raw 

,而我應該得到UDP數據包!,任何人都可以指出我在這裏失蹤的任何東西。 感謝

+0

是什麼,監聽端口45943?否則,你看到的原始數據包可能是PORT UNREACHABLE ICMP消息。 – robertklep

+0

我沒有設置在另一側上的服務器套接字,但是我可以看到(該形式發送)出現在數據包如此的端部的消息:### [原料] ### 負載=「\ X02 \ X00 \ X00 \ x00E \ X00 \ X00 \ X00 \ XFF \ X00 \ X00 @ \ X11 \ X00 \ X00 \ 0x7F部分\ X00 \ X00 \ X01 \ 0x7F部分\ X00 \ X00 \ X01 \ x825 \ x9cE \ X00 \ X18 \ X83 \ xe1helllllllllllllo」 – OiaSam

+0

@robertklep我運行服務器偵聽該端口,但結果是相同的,忘記提到也出現此消息:警告:無法猜測數據鏈路類型(接口= lo0的LINKTYPE = 0)。使用原始 – OiaSam

回答

3

無法猜測數據鏈路類型(接口= lo0的LINKTYPE = 0)

該消息翻譯爲「Scapy的不理解DLT_NULL鏈路層報頭類型,在回送所使用設備* BSD和OS X,因此它不支持* BSD和OS X」迴環設備。

所以,你的運氣了,如果你想使用Scapy的OS X上捕捉迴環設備上,除非及直至Scapy的增強處理DLT_NULL。 (DLT_NULL不是難以處理,所以大概是它的而不是處理的唯一原因是大多數在環回設備上使用它的人在Linux上這樣做,其中環回的鏈路層報頭類型值設備是DLT_EN10MB,即以太網,所以沒有人費心去解決它。我去看看,如果我能得到它的工作,如果是這樣,給他們一個補丁。)

+0

非常感謝您的回覆。現在它是有道理的!我會在Ubuntu中試用它 – OiaSam

0

一些建議。

相反a.nsummary的(),您可以打印出來使用的東西單獨的數據包的更多信息像

a[1].show() 
a[1].show2() 
hexdump(a[1]) 

檢查的第一個包。 2)可以強制協議進行解碼,以特定類型的分組格式。例如,RAW_IP數據包捕獲(鏈路層報頭類型= 101)可以被強制IPv6的使用

conf.l2types.register(101, IPv6) 

如果你想在UDP上添加一個新圖層,您可以添加基於新解剖使用的端口。