2015-11-10 88 views
1

我想用OS Yosemite在我的Macbook Pro上運行Scapy。在Yosemite上安裝Scapy

我用下面的命令

brew install scapy 

一切正常安裝,但是當我運行

scapy 

我得到這個錯誤

Traceback (most recent call last): 
File "/usr/local/bin/scapy", line 25, in <module> 
interact() 
File "/Library/Python/2.7/site-packages/scapy/main.py", line 278, in 
interact 
scapy_builtins = __import__("all",globals(),locals(),".").__dict__ 
File "/Library/Python/2.7/site-packages/scapy/all.py", line 25, in <module> 
from route import * 
File "/Library/Python/2.7/site-packages/scapy/route.py", line 162, in <module> 
conf.route=Route() 
File "/Library/Python/2.7/site-packages/scapy/route.py", line 22, in __init__ 
self.resync() 
File "/Library/Python/2.7/site-packages/scapy/route.py", line 31, in resync 
self.routes = read_routes() 
File "/Library/Python/2.7/site-packages/scapy/arch/unix.py", line 86, in read_routes 
ifaddr = scapy.arch.get_if_addr(netif) 
File "/Library/Python/2.7/site-packages/scapy/arch/__init__.py", line 36, in get_if_addr 
return socket.inet_ntoa(get_if_raw_addr(iff)) 
File "/Library/Python/2.7/site-packages/scapy/arch/pcapdnet.py", line 201, in get_if_raw_addr 
return i.get(ifname)["addr"].data 
File "dnet.pyx", line 990, in dnet.intf.get 
OSError: Device not configured` 

我怎樣才能解決呢?

編輯:如果我運行

sudo scapy 

我得到這個:

Traceback (most recent call last): 
File "/usr/local/bin/scapy", line 25, in <module> 
interact() 
File "/Library/Python/2.7/site-packages/scapy/main.py", line 278, in interact 
scapy_builtins = __import__("all",globals(),locals(),".").__dict__ 
File "/Library/Python/2.7/site-packages/scapy/all.py", line 25, in <module> 
from route import * 
File "/Library/Python/2.7/site-packages/scapy/route.py", line 162, in <module> 
conf.route=Route() 
File "/Library/Python/2.7/site-packages/scapy/route.py", line 22, in __init__ 
self.resync() 
File "/Library/Python/2.7/site-packages/scapy/route.py", line 31, in resync 
self.routes = read_routes() 
File "/Library/Python/2.7/site-packages/scapy/arch/unix.py", line 86, in read_routes 
ifaddr = scapy.arch.get_if_addr(netif) 
File "/Library/Python/2.7/site-packages/scapy/arch/__init__.py", line 36, in get_if_addr 
return socket.inet_ntoa(get_if_raw_addr(iff)) 
File "/Library/Python/2.7/site-packages/scapy/arch/pcapdnet.py", line 201, in get_if_raw_addr 
return i.get(ifname)["addr"].data 
KeyError: 'addr' 
+0

[Scapy安裝在dx導入錯誤的osx上失敗]的可能重複(http://stackoverflow.com/questions/26229057/sc apy-installation-fails-on-osx-with-dnet-import-error) – Yoel

+0

它仍然不工作,同樣的錯誤。我也嘗試過scapy的全新安裝,但沒有任何改變 – brid

+0

你是否以root身份運行scapy? –

回答

0

您的問題是known bug。直到他們解決這個問題,你可以試試這個:

在文件scapy/arch/unix.py添加elif scapy.arch.DARWIN:部分:

def read_routes(): 
    if scapy.arch.SOLARIS: 
     f=os.popen("netstat -rvn") # -f inet 
    elif scapy.arch.FREEBSD: 
     f=os.popen("netstat -rnW") # -W to handle long interface names 
    elif scapy.arch.DARWIN: 
     f = os.popen("netstat -rn | grep -v vboxnet") # Fix OSX problem    
    else: 
     f=os.popen("netstat -rn") # -f inet 
    ok = 0 
    mtu_present = False 

如果你有麻煩找Scapy的位置,您可以運行

python -v 
>>> import scapy 
import scapy # directory /Library/Python/2.7/site-packages/scapy 

Reference

0

我有完全相同的問題,與「地址」鍵錯誤和工作了(你的第一個錯誤會權限 - 所以是的,你需要sudo)。

通過編輯底層Python代碼來獲得一些調試信息,我可以看到被檢查的接口沒有設置IP地址,但操作系統有一個使用這個未配置接口的(舊/手動)靜態路由。

當dnet加載/導入時,它正在遍歷路由,然後檢查接口以獲取IP(因爲我不再使用它,因此它沒有IP,所以它不能使用IP)。

刪除了靜態路由,它工作正常。

相關問題