我已经从我的Ubuntu机器(Python 2.7)上的软件包存储库安装了Scapy,我正在尝试从文件中运行此代码:
import scapy
dg = scapy.IP()
pcap = scapy.rdpcap("../tst/Http.cap")
scapy.send(IP())
跑步给出错误,
AttributeError: 'module' object has no attribute 'IP'
在第3行注释掉IP调用并运行会出错,
AttributeError: 'module' object has no attribute 'rdpcap'
同时评论第4行,你得到了,
AttributeError: 'module' object has no attribute 'send'
很明显,当使用''python''调用时,此代码会失败,但是当我手动将每个命令输入到Python shell中时,它会按预期工作。我在三个新的Python安装上观察到了这种行为 - 两个在Ubuntu中,一个在Windows中。其他人可以看到这个错误的原因吗?
答案 0 :(得分:3)
您需要将Scapy导入全局命名空间。
来自Scapy module documentation -
注意:在Scapy v2中使用scapy.all import *而不是scapy import *。
也可在"Using Scapy to build your own tools"中找到。
所以你的代码应该是 -
from scapy.all import *
dg = IP()
pcap = rdpcap("../tst/Http.cap")
send(IP())