Установка Scapy завершилась с ошибкой osx с ошибкой импорта dnet

У вас возникли проблемы с установкой Scapy и требуются зависимости. Я потратил некоторое время на разработку Googling для решения, но все «решения», похоже, влияют на более старые версии Python или просто не работают.

Автор сценария:

#!/usr/bin/python import threading import Queue import time from scapy.all import * class WorkerThread(threading.Thread) : def __init__(self, queue, tid) : threading.Thread.__init__(self) self.queue = queue self.tid = tid print 'Worker: %d' %self.tid def run(self) : total_ports = 0 while True : port = 0 try : port = self.queue.get(timeout=1) except Queue.Empty : print 'Worker %d exiting. %d ports scanned' %(self.tid, total_ports) return #Scanning begins ip = sys.argv[1] response = sr1(IP(dst=ip)/TCP(dport=port, flags='S'), verbose=False, timeout=.2) if response : if response[TCP].flags == 18 : print 'ThreadID: %d: Got port no. %d status: OPEN' %(self.tid, port) self.queue.task_done() total_ports += 1 queue = Queue.Queue() threads = [] for i in range(1, 10) : print 'Creating WorkerThread : %d' %i worker = WorkerThread(queue, i) worker.setDaemon(True) worker.start() threads.append(worker) print 'WorkerThread %d created' %i for j in range(1, 100) : queue.put(j) queue.join() for item in threads : item.join() print 'Scanning complete' 

Версия Python – 2.7.5, а путь к Python – проверен.

 which python /usr/bin/python 

Когда скрипт выполняется, я получаю следующую ошибку:

 ./multi-threaded-scanner.py Traceback (most recent call last): File "./multi-threaded-scanner.py", line 6, in <module> from scapy.all import * File "/Library/Python/2.7/site-packages/scapy/all.py", line 16, in <module> from arch import * File "/Library/Python/2.7/site-packages/scapy/arch/__init__.py", line 75, in <module> from bsd import * File "/Library/Python/2.7/site-packages/scapy/arch/bsd.py", line 12, in <module> from unix import * File "/Library/Python/2.7/site-packages/scapy/arch/unix.py", line 20, in <module> from pcapdnet import * File "/Library/Python/2.7/site-packages/scapy/arch/pcapdnet.py", line 160, in <module> import dnet ImportError: No module named dnet 

Я могу использовать как интерпретаторы Scapy, так и Python для интерактивных интерпретаторов, а также запуск import scapy в интерпретаторе Python не вызывает ошибок. Когда сценарий запускался изначально, модуль pcapy отсутствовал, однако я установил его, а затем проблема переключилась на dnet, и я не могу найти решение. Аналогичная статья , похоже, описывает ту же проблему, но обходные решения не имеют никакого эффекта. Может ли кто-нибудь пролить свет на этот вопрос?

Команды, используемые для установки pcapy и libdnet:

libdnet-1.11.tar.gz (01-19-2005)

 ` ~/Downloads/libdnet-1.11  chmod a+x configure ~/Downloads/libdnet-1.11  ./configure && make` 

Выходы успешно завершены

Pcapy: последняя стабильная версия (0.10.8), обновленная 26 августа 2010 г.

~/Downloads/pcapy-0.10.8 
sudo python setup.py install Password: running install running build running build_ext running build_scripts running install_lib running install_scripts changing mode of /usr/local/bin/96pings.pcap to 777 changing mode of /usr/local/bin/pcapytests.py to 777 running install_data running install_egg_info Removing /Library/Python/2.7/site-packages/pcapy-0.10.8-py2.7.egg-info Writing /Library/Python/2.7/site-packages/pcapy-0.10.8-py2.7.egg-info ~/Downloads/pcapy-0.10.8 

Результаты для компиляции с новыми флагами

  ~/Downloads/libdnet-1.12  sudo CFLAGS='-arch i386 -arch x86_64' ./configure --prefix=/usr and archargs='-arch i386 -arch x86_64' make configure: WARNING: you should use --build, --host, --target configure: WARNING: you should use --build, --host, --target checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes /Users/richardcurteis/Downloads/libdnet-1.12/config/missing: Unknown `--is-lightweight' option Try `/Users/richardcurteis/Downloads/libdnet-1.12/config/missing --help' for more information configure: WARNING: 'missing' script is too old or missing checking for a thread-safe mkdir -p... config/install-sh -c -d checking for gawk... no checking for mawk... no checking for nawk... no checking for awk... awk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether to enable maintainer-specific portions of Makefiles... no checking build system type... Invalid configuration `and': machine `and' not recognized configure: error: /bin/sh config/config.sub and failed ~/Downloads/libdnet-1.12  

5 Solutions collect form web for “Установка Scapy завершилась с ошибкой osx с ошибкой импорта dnet”

EDIT. В этом ответе ниже говорится, что все упомянутые проблемы были исправлены и обеспечивают гораздо более простой способ установки. Тем не менее, его комментарии показывают, что, хотя, похоже, он работает на OS X 10.10 Yosemite и OS X 10.11 El Capitan , он может не работать для некоторых других версий.


Вы не завершили установку libdnet и его оболочки Python, как указано в руководстве по установке Scapy :

 $ wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz $ tar xfz libdnet-1.12.tgz $ ./configure $ make $ sudo make install $ cd python $ python2.5 setup.py install 

Если ваша система 64 бит, используйте следующие команды компиляции:

 $ CFLAGS='-arch i386 -arch x86_64' ./configure $ archargs='-arch i386 -arch x86_64' make 

Кроме того, убедитесь, что вы установили правильную версию, то есть 1.12, а не 1.11.

Если это не удается, попробуйте установить через macports и используйте его файл dnet.so , как описано здесь :

 $ port selfupdate $ port upgrade outdated $ port install py27-libdnet $ port install libdnet $ cp /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/dnet.so /Library/Python/2.7/site-packages 

Эта ссылка также рекомендует изменить некоторый код в /Library/Python/2.7/site-packages/scapy/arch/unix.py (исправить OSError: Device not configured ).

Изменить строку 34:

 f=os.popen("netstat -rn") # -f inet 

чтобы:

 f=os.popen("netstat -rn | grep -v vboxnet") # -f inet 

следующим образом:

 def read_routes(): if scapy.arch.SOLARIS: # f=os.popen("netstat -rvn") # -f inet f=os.popen("netstat -rn | grep -v vboxnet") # -f inet 

Если вы все еще получаете ошибку OSError: Device not configured , попробуйте выполнить аналогичные изменения в других ветвях предложения if (в частности, на его ветку else ), как описано в этом ответе .

Все проблемы, упомянутые выше, кажутся фиксированными. Я запускаю OS X Yosemite. Я получил рабочую косичку просто следующими тремя командами.

 brew install --with-python libdnet pip install pcapy pip install scapy 

Я запускаю OSX 10.5.9 – потратил навсегда попытку получить работу scapy – после установки библиотек dnet / pcap я также получил «OSError: Устройство не настроено». Попробовал заменить строку 34 в файле unix.py

"netstat -rn | grep -v vboxnet"

По-прежнему такая же ошибка. Но когда я заменю строку 37 вместо «else» части блока if:

 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 else: # f=os.popen("netstat -rn") # -f inet f=os.popen("netstat -rn | grep -v vboxnet") # -f inet 

Работает как шарм!

(Это комментарий к ответу Тима У , но мне не хватает репутации, чтобы это сделать)

Имейте в виду делать то, что на самом деле говорит вам пиво:

=== Предостережения
Модули Python были установлены, а сайты сайта Homebrew не находятся в вашем sys.path Python, поэтому вы не сможете импортировать модули, установленные этой формулой.
Если вы планируете разрабатывать эти модули, запустите: […]

 mkdir -p /Users/YourUsernameHere/Library/Python/2.7/lib/python/site-packages echo 'import site; site.addsitedir("/usr/local/lib/python2.7/site-packages")' >> /Users/YourUsernameHere/Library/Python/2.7/lib/python/site-packages/homebrew.pth 

Поэтому просто заново запустите команду пивоварения и выполните две строки, в которых вам сообщается, что вы используете все установленные пакеты питона python.

В OSX El Capitan для меня работала принудительная перезагрузка pcapy с помощью sudo: sudo pip install --user pcapy -I

  • Как создать пакет Scapy из необработанных байтов
  • Функция Scapy send без вывода
  • Ошибка импорта Python scapy
  • Сетевой мост с использованием Scapy и Python
  • Скапи, как получить пинг время?
  • scapy: отправка пакетов ошибок
  • Использование dispatch_hook ()
  • Как рассортировать scapy-пакет?
  • Python - лучший язык программирования в мире.