获取" NameError:name' IP'没有定义"错误信息

时间:2016-07-18 16:36:24

标签: python python-3.x network-programming scapy

我尝试从在线课程运行一个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 *

但问题没有解决。我怎么了?

4 个答案:

答案 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 *

但这往往会严重污染您的命名空间。