2015-11-10 5 views
1

Я пытаюсь запустить Scapy на моем Macbook pro с OS Yosemite.Установка Scapy на Yosemite

Я установил его с помощью следующей команды

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` 

Как я могу это исправить?

EDIT: если я бегу

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 не работает в osx с ошибкой импорта dnet] (http://stackoverflow.com/questions/26229057/sc apy-installation-fail-on-osx-with-dnet-import-error) – Yoel

+0

Он по-прежнему не работает, такая же ошибка. Я пробовал также со свежей установкой scapy, но ничего не изменилось. – brid

+0

вы запускаете scapy как root? –

ответ

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-адреса).

Удаленный статический маршрут, и он отлично работал.

 Смежные вопросы

  • Нет связанных вопросов^_^