Scapy - OSError: нет такого файла или каталога

Я пытался запустить этот код:

import logging
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)

print "hhhh"
from scapy.all import send
from scapy.layers.inet import IP, UDP

send(IP()/UDP())
print "BBBB"

и я получил эту ошибку вывода:

hhhh
Traceback (most recent call last):
  File "C:/Users/Tamir/PycharmProjects/SIP/main.py", line 12, in <module>
    send(IP()/UDP())
  File "C:\Python27\lib\site-packages\scapy\sendrecv.py", line 251, in send
    __gen_send(conf.L3socket(*args, **kargs), x, inter=inter, loop=loop, count=count,verbose=verbose, realtime=realtime)
  File "C:\Python27\lib\site-packages\scapy\sendrecv.py", line 234, in __gen_send
    s.send(p)
  File "C:\Python27\lib\site-packages\scapy\arch\pcapdnet.py", line 252, in send
    ifs = dnet.ip()
  File "dnet.pyx", line 250, in dnet.ip.__init__ (./dnet.c:2317)
OSError: No such file or directory

Но другие функции, такие как sniff(), работают нормально.

Кто-нибудь знает, как это исправить? Я использую Windows 7 и Python 2.7.


person tamird14    schedule 01.07.2015    source источник


Ответы (1)


Для Scapy требуется библиотека dnet. Это необходимо для отправки пакетов. Обнюхивание и анализ могли бы работать и без него.

Вы можете удалить импорт dnet или установить библиотеку dnet.

Это аналогичный вопрос с возможным решением: Запуск Scapy в Windows с помощью Python 2.7

person Eriks Dobelis    schedule 01.07.2015
comment
Я установил scapy с помощью python setup.py install из папки scapy (scapy-2.3.1), скачал файл dnet-1.12.win32-py2.7 и установил библиотеку dnet. У меня также есть все остальные необходимые библиотеки - person tamird14; 01.07.2015
comment
Создайте тестовый скрипт Python всего с одной строкой import dnet и запустите его. Удается ли это? - person Eriks Dobelis; 01.07.2015
comment
А если добавить строку r = dnet.ip() ? - person Eriks Dobelis; 01.07.2015
comment
та же ошибка: файл dnet.pyx, строка 250, в dnet.ip.__init__ (./dnet.c:2317) OSError: нет такого файла или каталога - person tamird14; 01.07.2015
comment
Это означает, что он неправильно установлен или это не рабочая версия dnet. Используйте python 2.6, как рекомендовано в документации по scapy, приведенной выше (со ссылками на dnet), или найдите работающую библиотеку dnet. Например. см. этот пост: stackoverflow. com/questions/7817926/ - person Eriks Dobelis; 01.07.2015