Не удается отправить пакеты (ошибка 9: неверный дескриптор файла) - PullRequest
1 голос
/ 16 октября 2019

Привет, я новичок в Python и Scapy. Когда я пытаюсь использовать sendp() в базовом пакете уровня 2, я получаю ошибку трассировки.

Использование Python 3.8 и последней версии Scapy для разработки из https://scapy.readthedocs.io/en/latest/installation.html#platform-specific-instructions

Это то, чтоЯ ввожу в оболочку Python:

import scapy
from scapy.all import *
a=Ether()/IP(dst="www.google.ca")/ICMP()/"Hello world"
sendp(a)

Это сообщение об ошибке:

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    sendp(a)
  File "C:\Users\hoang\AppData\Local\Programs\Python\Python38-32\lib\site-packages\scapy-git_archive.dev304758016-py3.8.egg\scapy\sendrecv.py", line 336, in sendp
    results = __gen_send(socket, x, inter=inter, loop=loop,
  File "C:\Users\hoang\AppData\Local\Programs\Python\Python38-32\lib\site-packages\scapy-git_archive.dev304758016-py3.8.egg\scapy\sendrecv.py", line 296, in __gen_send
    os.write(1, b".")
OSError: [Errno 9] Bad file descriptor

1 Ответ

1 голос
/ 16 октября 2019

Как указывает @furas, это действительно проблема с вашей консолью (IDLE?). Scapy пытается показать, что пакет был отправлен, но это не удалось.

Вы всегда можете использовать

sendp(p, verbose=False)

, чтобы отключить журналы, поэтому обходите проблему.

ОднакоЯ должен сказать, что если os.write(1, ..) был единственным вариантом в те времена, он немного устарел в наши дни. Возможно, это можно исправить в восходящем потоке.

...