- 安装Python 2.7.X或3.4+。
- 下载并安装Scapy。
- 遵循特定于平台的说明(依赖性)。
- (可选):安装其他软件以实现特殊功能。
- 使用root权限运行Scapy。
这些步骤中的每一步都可以根据您的平台和您要使用的Scapy版本以不同的方式完成。
目前,有两种不同版本的Scapy:
注意
在Scapy v2中使用是from scapy.all import *
而不是from scapy import *
以下步骤描述了如何安装(或更新)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只包含一个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_play()
需要SoX。Scapy可以在Linux上本机运行,不需要libdnet和libpcap。
-ddd option
CONFIG_PACKET
)CONFIG_FILTER
)只需使用标准包:
$ 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 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 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 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:Python 2.7.X或3.4+。安装后,将Python安装目录及其Scripts子目录添加到PATH。根据您的Python版本,默认值分别为
C:\Python27
和C:\Python27\Scripts
。- Npcap:最新版本。建议使用默认值。Scapy也适用于Winpcap。
- Scapy的:最新开发版本从Git仓库。解压缩存档,在该目录中打开命令提示符并运行“python setup.py install”。
只需下载文件并运行安装程序即可。选择默认安装选项应该是安全的。
为方便起见,直接链接到支持的版本(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项目的一部分。
您可以从Program Files中卸载winpcap,然后您将需要删除:
如果您使用的是x64机器:
改为使用npcap。Winpcap卸载程序不会删除这些文件。
2.如果您收到消息'已安装的Windump版本无法与Npcap一起使用',则肯定意味着您已安装旧版本的Windump。在https://github.com/hsluoyz/WinDump/releases上下载正确的版本
在某些情况下,它也可能意味着你已经安装了Npcap和Winpcap,而Windump正在使用Winpcap。使用上述方法完全删除Winpcap以解决问题。
Scapy项目的文档是使用reStructuredText(文件* .rst)编写的,可以使用Sphinx python库构建。官方在线版本可在readthedocs上找到。
构建HTML版本的说明如下:
(activate a virtualenv)
pip install sphinx
cd doc/scapy
make html
您现在可以_build/html/index.html
在自己喜欢的Web浏览器中打开生成的HTML文件。
要使用ReadTheDocs的模板,您必须安装相应的主题:
pip install sphinx_rtd_theme
使用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模块之间的链接。