2.md 15.5 KB
Newer Older
W
ch2  
wizardforcel 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
# 下载和安装

> 译者:[飞龙](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。

W
fix  
wizardforcel 已提交
24
> 注意:在 Scapy v2 中使用`from scapy.all import *`来代替`from scapy import *`。
W
ch2  
wizardforcel 已提交
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392

## 安装 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 文件被损坏,可以更改它,或在 <http://hg.secdev.org/scapy/archive/tip.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 版本会导致一些问题。 请见 <http://www.python.org/ftp/python/2.5.2/python-2.5.2-macosx.dmg>

#### 使用 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 上不可用。