我尝试从在线课程运行一个python代码来创建一个原始网络数据包并通过scapy在Debian 9上使用python 3.4.2发送到网络但是我收到了如下所示的错误消息:
NameError:name' IP'未定义
当我查看代码时:
#!/usr/bin/python
#for python 3 , must install scapy for python3 first by type command "pip3 install scapy-python3"
import scapy.all
frame = scapy.all.Ether(dst="15:16:89:fa:dd:09") / IP(dst="9.16.5.4") / TCP() / "This is my payload"
" IP"下面有一条红线。和" TCP"方法然后它告诉那两个方法是Unresolved reference
我尝试更改如何导入scapy库
from
import scapy.all
到
from scapy.all import *
但问题没有解决。我怎么了?
答案 0 :(得分:1)
from scapy.layers.inet import IP
答案 1 :(得分:0)
#!/usr/bin/python
#for python 3 , must install scapy for python3 first by type command "pip3 install scapy-python3"
import scapy.all.Ether
import scapy.all.IP
import scapy.all.TCP
frame = Ether(dst="15:16:89:fa:dd:09") / IP(dst="9.16.5.4") / TCP() / "This is my payload"
答案 2 :(得分:0)
好的,这可能会对您有所帮助,因为我犯了同样的错误。 确保您的文件名不是scapy.py
答案 3 :(得分:0)
自从你做了
import scapy.all
您必须引用所有带有'scapy.all'前缀的类型。
>>> import scapy.all
>>> frame = scapy.all.Ether(dst="15:16:89:fa:dd:09") / IP(dst="9.16.5.4") / TCP() / "This is my payload"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'IP' is not defined
>>> frame = scapy.all.Ether(dst="15:16:89:fa:dd:09") / scapy.all.IP(dst="9.16.5.4") / scapy.all.TCP() / "This is my payload"
>>>
另一种解决方法是
from scapy.all import *
但这往往会严重污染您的命名空间。