嗨,我是Python和Scapy的初学者。当我尝试在基本的第2层数据包上使用sendp()
时,出现回溯错误。
使用Python 3.8和https://scapy.readthedocs.io/en/latest/installation.html#platform-specific-instructions的最新开发版本的Scapy
这是我要输入到Python shell中的内容:
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
答案 0 :(得分:1)
正如@furas所指出的,这确实是您的控制台的一个问题(IDLE?)。 Scapy尝试显示该数据包已发送,但失败。
您可以随时使用
sendp(p, verbose=False)
要禁用日志,因此可以解决此问题。
但是我必须说,如果os.write(1, ..)
是过去的唯一选择,那么如今它已经有些过时了。这可能固定在上游。