Python3 - 在 OS 中安装 Scapy

Python3 - installing Scapy in OS

我安装了网络模块Scapy。 当我导入 scapy (import scapy) 时,一切正常。当我从 scapy (from scapy.all import *) 导入所有内容时,会出现此错误:

Traceback (most recent call last):
File "/Users/***/Downloads/test.py", line 5, in <module>
from scapy.all import *
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/all.py", line 16, in <module>
from .arch import *
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/arch/__init__.py", line 75, in <module>
from .bsd import *
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/arch/bsd.py", line 12, in <module>
from .unix import *
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/arch/unix.py", line 22, in <module>
from .pcapdnet import *
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/arch/pcapdnet.py", line 22, in <module>
from .cdnet import *
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/arch/cdnet.py", line 17, in <module>
raise OSError("Cannot find libdnet.so")
OSError: Cannot find libdnet.so

我在另一个 post 上发现我们可能必须下载额外的模块才能使 scapy 充分工作。具体应该怎么做? 我尝试使用 (port ** install) 但没有用,因为端口不再受支持?如果你知道如何让它在 python3 中工作,我会很活跃。这里有更多的附加信息:

python 3.4.3
mac os 10.10.4
scapy-python3==0.14

编辑:另一个有趣的事情是:

除了 Linux 之外的所有 OS 都应该安装 libpcap 来发送和接收数据包(不是 python 模块 - 只是 C 库)。推荐使用libdnet发送数据包,没有libdnet的数据包将由libpcap发送,有限制。此外,netifaces 模块可用于替代和可能更清洁的方式来确定本地地址。 资料来源:https://pypi.python.org/pypi/scapy-python3/0.11

Dnet 似乎只适用于 2.7 版:https://pypi.python.org/pypi/dnet/1.12

最新编辑:此问题已在最新版本的 scapy 上修复,只需使用 pip install scapy>=2.4.0

更新您的 scapy 版本

您必须安装 libdnet。不是 python 库(如您所述,它不适用于 python3),而是库本身。系统中某处必须有库文件 libdnet.so,python 会在其中搜索库。下载 libdnet 源代码并编译应该可以正常工作:

wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz
tar xfz libdnet-1.12.tgz
cd libdnet-1.12
./configure
make

此外,有可能使用 libpcap 发送数据包而不使用 libdnet,但我建议先尝试让 libdnet 工作。

您现在可以使用以下命令轻松地Homebrew 安装它:

brew install libdnet

安装 Homebrew 之后。

您可以尝试以下方法:

git clone https://github.com/secdev/scapy

cd scapy

./run_scapy