# 下载和安装 > 译者:[飞龙](https://github.com/wizardforcel) > 原文:[Download and Installation](http://www.secdev.org/projects/scapy/doc/installation.html) > 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/) ## 概览 + 安装 Python 2.5。 + 下载并安装 Scapy。 + (对于非Linux平台):安装`libpcap`和`libdnet`及其 Python 包装器。 + (可选):安装用于特殊功能的其他软件。 + 使用 root 权限运行 Scapy。 每个步骤可以以不同的方式完成,具体取决于你的平台和要使用的 Scapy 版本。 目前,Scapy 有两个不同版本: + Scapy v1.x。它只包含一个文件,并适用于 Python 2.4,因此它可能更易于安装。 此外,你的操作系统可能已经含有一个为之特别准备的包或端口。 最后一个版本是 v1.2.2。 + Scapy v2.x。当前的开发版本增加了多个功能(例如 IPv6)。 它包括以`distutils`标准方式打包的几个文件。 Scapy v2 需要 Python 2.5。 > 注意:在 Scapy v2 中使用`from scapy.all import *`来代替`from scapy import *`。 ## 安装 Scapy v2.x 以下步骤描述如何安装(或更新)Scapy 本身。 根据你的平台,可能需要安装一些额外的库才能使其真正工作。 所以,请大家在平台特定之指南中查看如何安装这些必需的东西。 > 注意:以下步骤适用于类 Unix 操作系统(Linux,BSD,Mac OS X)。 对于 Windows,请参阅下面的特殊章节。 确保在继续之前安装了 Python。 ## 最新发行版 将[最新版本](http://scapy.net/)下载到临时目录,并以`distutils`标准方式来安装。 ``` $ cd /tmp $ wget scapy.net $ unzip scapy-latest.zip $ cd scapy-2.* $ sudo python setup.py install ``` 或者,你也可以执行 Zip 文件: ``` $ chmod +x scapy-latest.zip $ sudo ./scapy-latest.zip ``` 或者: ``` $ sudo sh scapy-latest.zip ``` 或者: ``` $ mv scapy-latest.zip /usr/local/bin/scapy $ sudo scapy ``` > 注意:要制作 zip 可执行文件,需要在 zip 标头之前添加一些字节。 大多数但并不是所有 zip 程序都会处理它。 如果你的 zip 程序报告该 zip 文件被损坏,可以更改它,或在 下载一个不可执行的 zip 文件。 ## 当前开发版 如果你总想使用带有所有新功能和错误修正的最新版本,请使用 Scapy 的 Mercurial 仓库: 1. 安装 [Mercurial](http://www.selenic.com/mercurial/) 版本控制系统,例如,在 Debian/Ubuntu 下执行: ``` $ sudo apt-get install mercurial ``` 或者在 OpenBSD 上: ``` $ pkg_add mercurial ``` 2. 克隆 Scapy 仓库: ``` $ hg clone http://hg.secdev.org/scapy ``` 3. 以`distutils`标准方式来安装 Scapy: ``` $ cd scapy $ sudo python setup.py install ``` 之后你可以始终更新到最新版本: ``` $ hg pull $ hg update $ sudo python setup.py install ``` Mercurial 的更多信息请参阅 [Mercurial book](http://hgbook.red-bean.com/)。 ## 安装 Scapy v1.2 由于 Scapy v1 仅包含一个单一的 Python 文件,安装很容易:只需下载最新版本并使用 Python 解释器运行它: ``` $ wget http://hg.secdev.org/scapy/raw-file/v1.2.0.2/scapy.py $ sudo python scapy.py ``` 在 BSD 系统上,你还可以尝试使用最新版本的 Scapy-bpf(开发仓库)。 它不需要`libpcap`或`libdnet`。 ## 用于特殊功能的可选软件 对于某些特殊功能,你必须安装更多软件。 有关如何安装这些包的平台特定说明,请参见下一节。 这里是涉及的主题和一些例子,你可以使用它们来尝试是否能够安装成功。 + 绘图。`plot()`需要 [Gnuplot-py](http://gnuplot-py.sourceforge.net/),它需要 [GnuPlot](http://www.gnuplot.info/) 和 [NumPy](http://numpy.scipy.org/)。 ```py >>> p=sniff(count=50) >>> p.plot(lambda x:len(x)) ``` + 2D 图形。 `psdump()`和`pdfdump()`需要 [PyX](http://pyx.sourceforge.net/),而这需要一个 [LaTeX 分发版](http://www.tug.org/texlive/)。 要以交互方式查看 PDF 和 PS 文件,你还需要 [Adobe Reader](http://www.adobe.com/products/reader/)(`acroread`)和 [gv](http://wwwthep.physik.uni-mainz.de/~plass/gv/)(`gv`)。 ```py >>> p=IP()/ICMP() >>> p.pdfdump("test.pdf") ``` + 图形。`conversations()`需要 [Grapviz](http://www.graphviz.org/) 和 [ImageMagick](http://www.imagemagick.org/)。 ```py >>> p=readpcap("myfile.pcap") >>> p.conversations(type="jpg", target="> test.jpg") ``` + 3D 图形。`trace3D()`需要 [VPython](http://www.vpython.org/)。 ```py >>> a,u=traceroute(["www.python.org", "google.com","slashdot.org"]) >>> a.trace3D() ``` + WEP 解密。`unwep()`需要 [PyCrypto](http://www.dlitz.net/software/pycrypto/)。例子中使用了 [Weplap 测试文件](http://weplab.sourceforge.net/caps/weplab-64bit-AA-managed.pcap)。 ```py >>> 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] ``` + 指纹识别。`nmap_fp()`需要 [Nmap](http://nmap.org/)。你需要支持第一代指纹识别的[老版本](http://nmap.org/dist-old/)(v4.23 之前)。 ```py >>> 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](http://sox.sourceforge.net/)。 ## 平台特定指南 ### Linux 原生 Scapy 可以在 Linux 上原生运行,不需要`libdnet`和`libpcap`。 安装 Python 2.5。 安装`tcpdump`并确保它在`$ PATH`中。 (它只用于编译 BPF 过滤器(`-ddd`选项)) 确保你的内核已选择分组套接字(`CONFIG_PACKET`) 如果你的内核`<2.6`,请确保选择套接字过滤(`CONFIG_FILTER`) ### Debian/Ubuntu 只需使用标准包: ``` $ sudo apt-get install tcpdump graphviz imagemagick python-gnuplot python-crypto python-pyx ``` ### Fedora 这里是在 Fedora 9 中安装 Scapy 的方法: ``` # yum install mercurial python-devel # cd /tmp # hg clone http://hg.secdev.org/scapy # cd scapy # python setup.py install ``` 一些可选包: ``` # yum install graphviz python-crypto 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 以下是在 Mac OS 10.4(Tiger)或 10.5(Leopard)上安装 Scapy 的方式。 #### 建立环境变量 + 安装 X11。 在 Mac OS X DVD 上,它位于『可选 Installs.mpkg』软件包中。 + 安装 SDK。 在 Mac OS X DVD 上,它位于『Xcode Tools/Packages』目录中。 + 从 Python.org 安装 Python 2.5。 使用 Apple 的 Python 版本会导致一些问题。 请见 。 #### 使用 MacPorts 安装 + 从 macports.org 下载 dmg 并安装它。 + 更新 MacPorts: ``` $ sudo port -d selfupdate ``` + 安装 Scapy: ``` $ sudo port install scapy ``` 像上面的通用安装所展示的那样,随后你可以更新到最新版。 #### 从源码安装 安装`libdnet`和 Python 包装器: ``` $ wget http://libdnet.googlecode.com/files/libdnet-1.12.tgz $ tar xfz libdnet-1.12.tgz $ ./configure $ make $ sudo make install $ cd python $ python2.5 setup.py install ``` 安装`libpcap`和 Python 包装器: ``` $ wget http://dfn.dl.sourceforge.net/sourceforge/pylibpcap/pylibpcap-0.6.2.tar.gz $ tar xfz pylibpcap-0.6.2.tar.gz $ cd pylibpcap-0.6.2 $ python2.5 setup.py install ``` 可选:安装`readline`: ``` $ python `python -c "import pimp; print pimp.__file__"` -i readline ``` ### OpenBSD 这里是在 OpenBSD 中安装 Scapy 的方式: ``` # export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/4.3/packages/i386/ # pkg_add py-libpcap py-libdnet mercurial # ln -sf /usr/local/bin/python2.5 /usr/local/bin/python # cd /tmp # hg clone http://hg.secdev.org/scapy # cd scapy # python setup.py install ``` #### 可选包 py-crypto ``` # pkg_add py-crypto ``` 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(下载的东西非常多,会安装 textlive 以及其他) ``` # pkg_add py-pyx ``` `/etc/ethertypes` ``` # wget http://www.secdev.org/projects/scapy/files/ethertypes -O /etc/ethertypes ``` python-bz2(用于 UTscapy) ``` # pkg_add python-bz2 ``` ### Windows Scapy 主要是为类 Unix 系统开发的,并且在这些平台上能正常工作。 但是最新版本的 Scapy 开箱即用支持 Windows。 所以你可以在 Windows 机器上使用几乎所有的 Scapy 的功能。 > 注意:如果你从 Scapy-win v1.2.0.2 更新到 Scapy v2,请记住使用`scapy.all import *`而不是`from scapy import *`。 ![](http://www.secdev.org/projects/scapy/doc/_images/scapy-win-screenshot1.png) 你需要以下软件包才能在 Windows 上安装 Scapy: + [Python](http://www.python.org/):[`python-2.5.4.msi`](http://www.python.org/ftp/python/2.5.4/python-2.5.4.msi)或[`python-2.6.3.msi`](http://www.python.org/ftp/python/2.6.3/python-2.6.3.msi)。安装后,将 Python 安装目录及其`Scripts`子目录添加到`PATH`。根据你的 Python 版本,默认值分别是`C:\ Python25`和`C:\Python25\Scripts`或`C:\Python26`和`C:\Python26\Scripts`。 + [Scapy](http://www.secdev.org/projects/scapy/):来自 [Mercurial 仓库](http://hg.secdev.org/scapy)的[最新开发版本](http://hg.secdev.org/scapy/archive/tip.zip)。解压缩归档文件,在该目录中打开命令提示符并运行`python setup.py install`。 + [pywin32](http://python.net/crew/mhammond/win32/Downloads.html):[`pywin32-214.win32-py2.5.exe`](http://surfnet.dl.sourceforge.net/sourceforge/pywin32/pywin32-214.win32-py2.5.exe)或[`pywin32-214.win32-py2.6.exe`](http://downloads.sourceforge.net/project/pywin32/pywin32/Build%20214/pywin32-214.win32-py2.6.exe)。 + [WinPcap](http://www.winpcap.org/):[`WinPcap_4_1_1.exe`](http://www.winpcap.org/install/bin/WinPcap_4_1_1.exe)。你可能需要选择`[x] Automatically start the WinPcap driver at boot time`(在启动时自动启动 WinPcap 驱动程序),以便非特权用户可以嗅探,特别是在 Vista 和 Windows 7 下。如果要使用以太网供应商数据库来解析 MAC 地址或使用`wireshark()`命令,请下载已经包含 WinPcap 的 Wireshark。 + [pypcap](http://code.google.com/p/pypcap/):[`pcap-1.1-scapy-20090720.win32-py25.exe`](http://www.secdev.org/projects/scapy/files/pcap-1.1-scapy-20090720.win32-py2.5.exe)或[`pcap-1.1-scapy-20090720.win32-py2.6.exe`](http://www.secdev.org/projects/scapy/files/pcap-1.1-scapy-20090720.win32-py2.6.exe)。这是 Scapy 的特殊版本,因为原始版本会导致一些时序问题。现在在 Vista 和 Windows 7 上也可工作。在 Vista/Win7 下,右键单击安装程序并选择`Run as administrator`(以管理员身份运行)。 + [libdnet](http://code.google.com/p/libdnet/):[`dnet-1.12.win32-py2.5.exe`](http://libdnet.googlecode.com/files/dnet-1.12.win32-py2.5.exe)或[`dnet-1.12.win32-py2.6.exe`](http://www.secdev.org/projects/scapy/files/dnet-1.12.win32-py2.6.exe)。在 Vista/Win7 下,右键单击安装程序,选择`Run as administrator`(以管理员身份运行)。 + [pyreadline](http://ipython.scipy.org/moin/PyReadline/Intro):[`pyreadline-1.5-win32-setup.exe`](http://ipython.scipy.org/dist/pyreadline-1.5-win32-setup.exe)。 只需下载文件并运行安装程序。选择默认安装选项应该会安全。 为了方便起见,链接中直接给出了我使用的版本(对于 Python 2.5 和 Python 2.6)。如果这些链接不起作用,或者你使用的是不同的 Python 版本,只需访问相应软件包的主页并查找 Windows 二进制文件即可。你可以在网上搜索文件名作为最后的手段。 安装所有软件包后,打开命令提示符(`cmd.exe`),然后键入`scapy`运行 Scapy。如果你正确设置了`PATH`,这将在`C:\Python26\Scripts`目录中会找到一个批处理文件,并指导 Python 解释器加载 Scapy。 如果不能正常工作,考虑跳过 Windows 版本,并从 Linux Live CD 中使用 Scapy - 在 Windows 主机上的虚拟机中,或通过从 CDROM 引导:例如旧版本的 Scapy 已经包含在 grml 和 BackTrack 中。在使用 Live CD 时,你可以通过键入`cd /tmp && wget scapy.net`轻松升级到最新的 Scapy 版本。 #### 可选包 绘图(`plot`) + [GnuPlot](http://www.gnuplot.info/):[`gp420win32.zip`](http://downloads.sourceforge.net/gnuplot/gp420win32.zip)。 解压 zip 文件(例如到`c:\gnuplot`),并将`gnuplot\bin`目录添加到`PATH`。 + [NumPy](http://numpy.scipy.org/):[`numpy-1.3.0-win32-superpack-python2.5.exe`](http://downloads.sourceforge.net/project/numpy/NumPy/1.3.0/numpy-1.3.0-win32-superpack-python2.5.exe)或[`numpy-1.3.0-win32-superpack-python2.6.exe`](http://downloads.sourceforge.net/project/numpy/NumPy/1.3.0/numpy-1.3.0-win32-superpack-python2.6.exe)。 Gnuplot-py 1.8 需要 NumPy。 + [Gnuplot-py](http://gnuplot-py.sourceforge.net/):[`gnuplot-py-1.8.zip`](http://downloads.sourceforge.net/project/gnuplot-py/Gnuplot-py/1.8/gnuplot-py-1.8.zip)。 解压到临时目录,打开命令提示符,进入临时目录并键入`python setup.py install`。 2D 图形(`psdump`,`pdfdump`) + [PyX](http://pyx.sourceforge.net/):[`PyX-0.10.tar.gz`](http://mesh.dl.sourceforge.net/sourceforge/pyx/PyX-0.10.tar.gz)。 解压到临时目录,打开命令提示符,进入临时目录并键入`python setup.py install`。 + [MikTeX](http://miktex.org/):[MiKTeX 2.8 基本安装程序](http://miktex.org/2.8/setup)。 PyX 需要安装 LaTeX 。 选择一个不带空格的安装目录(例如`C\MikTex2.8`,并将`(INSTALLDIR)\miktex\bin`子目录添加到你的`PATH`。 图形(`conversations`) + [Graphviz](http://www.graphviz.org/):[`graphviz-2.24.exe`](http://www.graphviz.org/pub/graphviz/stable/windows/graphviz-2.24.msi)。将`(INSTALLDIR)\ATT\Graphviz\bin`添加到你的`PATH`。 WEP 加密 [PyCrypto](http://www.dlitz.net/software/pycrypto/):[`pycrypto-2.1.0.win32-py2.5.zip`](http://www.voidspace.org.uk/downloads/pycrypto-2.1.0.win32-py2.5.zip)或[`pycrypto-2.1.0.win32-py2.6.zip`](http://www.voidspace.org.uk/downloads/pycrypto-2.1.0.win32-py2.6.zip)。 指纹识别 [Nmap](http://nmap.org/)。[`nmap-4.20-setup.exe`](http://download.insecure.org/nmap/dist-old/nmap-4.20-setup.exe)。如果使用默认安装目录,Scapy 应自动查找指纹文件。 Queso:[`queso-980922.tar.gz`](http://www.packetstormsecurity.org/UNIX/scanners/queso-980922.tar.gz)。解压`tar.gz`文件(例如使用 7-Zip)并将`queso.conf`放入你的 Scapy 目录 #### 截图 ![](http://www.secdev.org/projects/scapy/doc/_images/scapy-win-screenshot2.png) #### 已知 Bug + 你可能无法在 Windows 上捕获 WLAN 流量。 原因在 Wireshark wiki 和 WinPcap 常见问题中有解释。 尝试关闭混合模式`conf.sniff_promisc = False`。 + 数据包无法发送到 localhost(或你自己的主机上的本机 IP 地址)。 + `voip_play()`函数不工作,因为他们通过`/dev/dsp`输出声音,这在 Windows 上不可用。