概述
- 安装Python 2.7.X或3.4+。
- 下载并安装Scapy。
- 遵循特定于平台的说明(依赖性)。
- (可选):安装其他软件以实现特殊功能。
- 使用root权限运行Scapy。
这些步骤中的每一步都可以根据您的平台和您要使用的Scapy版本以不同的方式完成。
目前,有两种不同版本的Scapy:
- Scapy的版本2.x。目前的最新版本。它由以标准distutils方式打包的几个文件组成。Scapy v2 <= 2.3.3需要Python 2.5,Scapy v2> 2.3.3需要Python 2.7或3.4+。
- Scapy v1.x(已弃用)。它不支持Python 3.它只包含一个文件,适用于Python 2.4,因此安装起来可能更容易。此外,您的操作系统可能已经为其准备了专门的软件包或端口。最后一个版本是v1.2.2。
注意
在Scapy v2中使用是from scapy.all import *
而不是from scapy import *
安装Scapy的版本2.x
以下步骤描述了如何安装(或更新)Scapy本身。根据您的平台,可能必须安装一些额外的库才能使其真正起作用。因此,请查看有关如何安装这些要求的平台特定章节。
注意
以下步骤适用于类Unix操作系统(Linux,BSD,Mac OS X)。对于Windows,请参阅下面的特殊章节。
在继续之前,请确保已安装Python。
最新发布
注意
要获取最新版本,包含错误修正和新功能,但可能不稳定,请参阅开发版本。
使用点子:
pip install scapy
您还可以将最新版本下载到临时目录并以标准distutils方式安装:
cd /tmp
wget --trust-server-names https://github.com/secdev/scapy/archive/master.zip
or wget -O master.zip https://github.com/secdev/scapy/archive/master.zip
unzip master.zip
cd master
sudo python setup.py install
当前开发版
如果您一直想要具有所有新功能和错误修正的最新版本,请使用Scapy的Git存储库:
-
安装Git版本控制系统。例如,在Debian / Ubuntu上使用:
$ sudo apt-get install git
或者在OpenBSD上:
$ doas pkg_add git
-
查看Scapy存储库的克隆:
$ git clone https://github.com/secdev/scapy
-
以标准distutils方式安装Scapy:
$ cd scapy $ sudo python setup.py install
然后您可以随时更新到最新版本:
$ git pull
$ sudo python setup.py install
注意
您可以运行scapy而无需使用run_scapy
(unix)或run_scapy.bat
(Windows)脚本安装它或直接从可执行zip文件运行它(请参阅上一节)。
安装Scapy v1.2(已弃用)
由于Scapy v1只包含一个Python文件,因此安装非常简单:只需下载最新版本并使用Python解释器运行它:
$ wget https://raw.githubusercontent.com/secdev/scapy/v1.2.0.2/scapy.py
$ sudo python scapy.py
特殊功能的可选软件
对于某些特殊功能,您必须安装更多软件。大多数这些软件都可以通过安装pip
。以下是涉及的主题以及您可以用来尝试安装成功的一些示例。
-
绘制。
plot()
需要Matplotlib。它可以通过安装pip install matplotlib
>>> p=sniff(count=50) >>> p.plot(lambda x:len(x))
-
2D图形。
psdump()
并且pdfdump()
需要PyX,而PyX又需要LaTeX发行版:texlive(Unix)或MikTex(Windows)。注意:PyX需要Python 2.7上的版本0.12.1。这意味着在Python 2.7上,需要通过它安装。除此以外
pip install pyx==0.12.1
pip install pyx
>>> p=IP()/ICMP() >>> p.pdfdump("test.pdf")
-
图表。
conversations()
需要Graphviz和ImageMagick。>>> p=readpcap("myfile.pcap") >>> p.conversations(type="jpg", target="> test.jpg")
-
3D图形。
trace3D()
需要VPython-Jupyter。Jupyter-IPython可以通过pip install vpython安装
>>> a,u=traceroute(["www.python.org", "google.com","slashdot.org"]) >>> a.trace3D()
-
WEP解密。
unwep()
需要密码学。使用Weplap测试文件的示例:密码学可以通过安装
pip install cryptography
>>> enc=rdpcap("weplab-64bit-AA-managed.pcap") >>> enc.show() >>> enc[0] >>> conf.wepkey="AA\x00\x00\x00" >>> dec=Dot11PacketList(enc).toEthernet() >>> dec.show() >>> dec[0]
-
PKI操作和TLS解密。密码学也是必需的。
-
指纹。
nmap_fp()
需要Nmap。您需要一个仍然支持第一代指纹识别的旧版本(在v4.23之前)。>>> load_module("nmap") >>> nmap_fp("192.168.0.1") Begin emission: Finished to send 8 packets. Received 19 packets, got 4 answers, remaining 4 packets (0.88749999999999996, ['Draytek Vigor 2000 ISDN router'])
- VOIP。
voip_play()
需要SoX。
特定于平台的指令
Linux原生
Scapy可以在Linux上本机运行,不需要libdnet和libpcap。
- 安装Python 2.7或3.4+。
- 安装tcpdump并确保它在$ PATH中。(它仅用于编译BPF过滤器())
-ddd option
- 确保你的内核选择了Packet套接字(
CONFIG_PACKET
) - 如果您的内核<2.6,请确保选择了Socket过滤
CONFIG_FILTER
)
Debian /
只需使用标准包:
$ sudo apt-get install tcpdump graphviz imagemagick python-gnuplot python-cryptography python-pyx
Scapy可选择使用python-cryptography v1.7或更高版本。它尚未apt
在最近的操作系统版本中打包(例如Debian Jessie)。如果您需要与加密相关的方法,可以使用以下方法安装库:
# pip install cryptography
Fedora的
以下是如何在Fedora 9上安装Scapy:
# yum install git python-devel
# cd /tmp
# git clone https://github.com/secdev/scapy
# cd scapy
# python setup.py install
一些可选包:
# yum install graphviz python-cryptography sox PyX gnuplot numpy
# cd /tmp
# wget http://heanet.dl.sourceforge.net/sourceforge/gnuplot-py/gnuplot-py-1.8.tar.gz
# tar xvfz gnuplot-py-1.8.tar.gz
# cd gnuplot-py-1.8
# python setup.py install
Mac
在Mac OS X上,Scapy本身不起作用。您需要安装Python绑定才能使用libdnet和libpcap。您可以选择使用Homebrew或MacPorts进行安装。它们都运行良好,但Homebrew用于运行Travis CI的单元测试 。
使用Homebrew安装
-
更新自制软件:
$ brew update
-
安装Python绑定:
$ brew install --with-python libdnet $ brew install https://raw.githubusercontent.com/secdev/scapy/master/.travis/pylibpcap.rb $ sudo brew install --with-python libdnet $ sudo brew install https://raw.githubusercontent.com/secdev/scapy/master/.travis/pylibpcap.rb
使用MacPorts安装
-
更新MacPorts:
$ sudo port -d selfupdate
-
安装Python绑定:
$ sudo port install py-libdnet py-pylibpcap
OpenBSD系统
以下是在OpenBSD 5.9+上安装Scapy的方法
$ doas pkg_add py-libpcap py-libdnet git
$ cd /tmp
$ git clone http://github.com/secdev/scapy
$ cd scapy
$ doas python2.7 setup.py install
可选包(仅限OpenBSD)
PY-密码
# pkg_add py-cryptography
gnuplot及其Python绑定:
# pkg_add gnuplot py-gnuplot
Graphviz(大型下载,将安装几个GNOME库)
# pkg_add graphviz
ImageMagick(需要很长时间才能编译)
# cd /tmp
# ftp ftp://ftp.openbsd.org/pub/OpenBSD/4.3/ports.tar.gz
# cd /usr
# tar xvfz /tmp/ports.tar.gz
# cd /usr/ports/graphics/ImageMagick/
# make install
PyX(非常大的下载,将安装texlive等)
# pkg_add py-pyx
在/ etc /以太类型
# wget http://git.netfilter.org/ebtables/plain/ethertypes -O /etc/ethertypes
python-bz2(适用于UTscapy)
# pkg_add python-bz2
窗口
Scapy主要是针对类Unix系统开发的,在这些平台上运行得最好。但最新版本的Scapy支持Windows开箱即用。因此,您也可以在Windows机器上使用几乎所有Scapy的功能。
注意
如果您从Scapy-win v1.2.0.2更新到Scapy v2,请记住使用from scapy.all import *
而不是。from scapy import *
您需要以下软件包才能在Windows上安装Scapy:
只需下载文件并运行安装程序即可。选择默认安装选项应该是安全的。
为方便起见,直接链接到支持的版本(Python 2.7和3.4+)。如果这些链接不起作用或者您使用的是其他Python版本(肯定不起作用),只需访问相应软件包的主页并查找Windows二进制文件即可。作为最后的手段,在网上搜索文件名。
安装所有软件包后,打开命令提示符(cmd.exe)并键入以运行Scapy scapy
。如果已正确设置PATH,则会在C:\Python27\Scripts
目录中找到一个小批处理文件,并指示Python解释器加载Scapy。
如果真的没有任何效果,请考虑跳过Windows版本并从Linux Live CD中使用Scapy - 在Windows主机上的虚拟机中或从CDROM启动:例如,旧版本的Scapy已包含在grml和BackTrack中。使用Live CD时,您可以使用上述安装方法轻松升级到最新的Scapy版本。
截图
已知错误
- 您可能无法在Windows上捕获WLAN流量。在Wireshark wiki和WinPcap FAQ中解释了原因。尝试关闭混杂模式
conf.sniff_promisc=False
。- 有时无法将数据包发送到localhost(或您自己主机上的本地IP地址)。
Winpcap / Npcap冲突
随着Winpcap变老,建议改用Npcap。Npcap是Nmap项目的一部分。
- 如果收到消息“Winpcap已安装在Npcap上”。这意味着您已经安装了winpcap和npcap版本,这是不推荐的。
您可以从Program Files中卸载winpcap,然后您将需要删除:
- C:/Windows/System32/wpcap.dll
- C:/Windows/System32/Packet.dll
如果您使用的是x64机器:
- C:/Windows/SysWOW64/wpcap.dll
- C:/Windows/SysWOW64/Packet.dll
改为使用npcap。Winpcap卸载程序不会删除这些文件。
2.如果您收到消息'已安装的Windump版本无法与Npcap一起使用',则肯定意味着您已安装旧版本的Windump。在https://github.com/hsluoyz/WinDump/releases上下载正确的版本
在某些情况下,它也可能意味着你已经安装了Npcap和Winpcap,而Windump正在使用Winpcap。使用上述方法完全删除Winpcap以解决问题。
离线构建文档
Scapy项目的文档是使用reStructuredText(文件* .rst)编写的,可以使用Sphinx python库构建。官方在线版本可在readthedocs上找到。
HTML版
构建HTML版本的说明如下:
(activate a virtualenv)
pip install sphinx
cd doc/scapy
make html
您现在可以_build/html/index.html
在自己喜欢的Web浏览器中打开生成的HTML文件。
要使用ReadTheDocs的模板,您必须安装相应的主题:
pip install sphinx_rtd_theme
UML图
使用pyreverse
您可以构建Scapy源代码的对象层次结构的UML表示。以下是如何为Fields对象构建继承图的示例:
(activate a virtualenv)
pip install pylint
cd scapy/
pyreverse -o png -p fields scapy/fields.py
这将生成classes_fields.png
包含继承层次结构的图片。请注意,您可以根据需要提供任意数量的模块或程序包,但结果将很快变得不可读。
要查看DHCP层和ansmachine模块之间的依赖关系,您可以运行:
pyreverse -o png -p dhcp_ans scapy/ansmachine.py scapy/layers/dhcp.py scapy/packet.py
在这种情况下,Pyreverse还将生成一个packages_dhcp_ans.png
显示所提供的不同python模块之间的链接。