Scapy的下载和安装

  • 安装 Python 2https://wizardforcel.gitbooks.io/scapy-docs/content/5。
  • 下载并安装 Scapy。
  • (对于非Linux平台):安装libpcaplibdnet及其 Python 包装器。
  • (可选):安装用于特殊功能的其他软件。
  • 使用 root 权限运行 Scapy。

每个步骤可以以不同的方式完成,具体取决于你的平台和要使用的 Scapy 版本。

目前,Scapy 有两个不同版本:

  • Scapy v1https://wizardforcel.gitbooks.io/scapy-docs/content/x。它只包含一个文件,并适用于 Python 2https://wizardforcel.gitbooks.io/scapy-docs/content/4,因此它可能更易于安装。 此外,你的操作系统可能已经含有一个为之特别准备的包或端口。 最后一个版本是 v1https://wizardforcel.gitbooks.io/scapy-docs/content/2https://wizardforcel.gitbooks.io/scapy-docs/content/2。
  • Scapy v2https://wizardforcel.gitbooks.io/scapy-docs/content/x。当前的开发版本增加了多个功能(例如 IPv6)。 它包括以distutils标准方式打包的几个文件。 Scapy v2 需要 Python 2https://wizardforcel.gitbooks.io/scapy-docs/content/5。

注意:在 Scapy v2 中使用from scapyhttps://wizardforcel.gitbooks.io/scapy-docs/content/all import *来代替from scapy import *

以下步骤描述如何安装(或更新)Scapy 本身。 根据你的平台,可能需要安装一些额外的库才能使其真正工作。 所以,请大家在平台特定之指南中查看如何安装这些必需的东西。

注意:以下步骤适用于类 Unix 操作系统(Linux,BSD,Mac OS X)。 对于 Windows,请参阅下面的特殊章节。

确保在继续之前安装了 Python。

最新版本下载到临时目录,并以distutils标准方式来安装。

 
  1. $ cd /tmp
  2. $ wget scapyhttps://wizardforcel.gitbooks.io/scapy-docs/content/net
  3. $ unzip scapy-latesthttps://wizardforcel.gitbooks.io/scapy-docs/content/zip
  4. $ cd scapy-2https://wizardforcel.gitbooks.io/scapy-docs/content/*
  5. $ sudo python setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

或者,你也可以执行 Zip 文件:

 
  1. $ chmod +x scapy-latesthttps://wizardforcel.gitbooks.io/scapy-docs/content/zip
  2. $ sudo https://wizardforcel.gitbooks.io/scapy-docs/content/scapy-latesthttps://wizardforcel.gitbooks.io/scapy-docs/content/zip

或者:

 
  1. $ sudo sh scapy-latesthttps://wizardforcel.gitbooks.io/scapy-docs/content/zip

或者:

 
  1. $ mv scapy-latesthttps://wizardforcel.gitbooks.io/scapy-docs/content/zip /usr/local/bin/scapy
  2. $ sudo scapy

注意:要制作 zip 可执行文件,需要在 zip 标头之前添加一些字节。 大多数但并不是所有 zip 程序都会处理它。 如果你的 zip 程序报告该 zip 文件被损坏,可以更改它,或在 http://hghttps://wizardforcel.gitbooks.io/scapy-docs/content/secdevhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/scapy/archive/tiphttps://wizardforcel.gitbooks.io/scapy-docs/content/zip 下载一个不可执行的 zip 文件。

如果你总想使用带有所有新功能和错误修正的最新版本,请使用 Scapy 的 Mercurial 仓库:

  1. 安装 Mercurial 版本控制系统,例如,在 Debian/Ubuntu 下执行:

     
    1. $ sudo apt-get install mercurial

    或者在 OpenBSD 上:

     
    1. $ pkg_add mercurial
  2. 克隆 Scapy 仓库:

     
    1. $ hg clone http://hghttps://wizardforcel.gitbooks.io/scapy-docs/content/secdevhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/scapy
  3. distutils标准方式来安装 Scapy:

     
    1. $ cd scapy
    2. $ sudo python setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

之后你可以始终更新到最新版本:

 
  1. $ hg pull
  2. $ hg update
  3. $ sudo python setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

Mercurial 的更多信息请参阅 Mercurial book

由于 Scapy v1 仅包含一个单一的 Python 文件,安装很容易:只需下载最新版本并使用 Python 解释器运行它:

 
  1. $ wget http://hghttps://wizardforcel.gitbooks.io/scapy-docs/content/secdevhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/scapy/raw-file/v1https://wizardforcel.gitbooks.io/scapy-docs/content/2https://wizardforcel.gitbooks.io/scapy-docs/content/0https://wizardforcel.gitbooks.io/scapy-docs/content/2/scapyhttps://wizardforcel.gitbooks.io/scapy-docs/content/py
  2. $ sudo python scapyhttps://wizardforcel.gitbooks.io/scapy-docs/content/py

在 BSD 系统上,你还可以尝试使用最新版本的 Scapy-bpf(开发仓库)。 它不需要libpcaplibdnet

对于某些特殊功能,你必须安装更多软件。 有关如何安装这些包的平台特定说明,请参见下一节。 这里是涉及的主题和一些例子,你可以使用它们来尝试是否能够安装成功。

  • 绘图。plot()需要 Gnuplot-py,它需要 GnuPlot 和 NumPy

     
    1. >>> p=sniff(count=50)
    2. >>> phttps://wizardforcel.gitbooks.io/scapy-docs/content/plot(lambda x:len(x))
  • 2D 图形。 psdump()pdfdump()需要 PyX,而这需要一个 LaTeX 分发版。 要以交互方式查看 PDF 和 PS 文件,你还需要 Adobe Readeracroread)和 gvgv)。

     
    1. >>> p=IP()/ICMP()
    2. >>> phttps://wizardforcel.gitbooks.io/scapy-docs/content/pdfdump("testhttps://wizardforcel.gitbooks.io/scapy-docs/content/pdf")
  • 图形。conversations()需要 Grapviz 和 ImageMagick

     
    1. >>> p=readpcap("myfilehttps://wizardforcel.gitbooks.io/scapy-docs/content/pcap")
    2. >>> phttps://wizardforcel.gitbooks.io/scapy-docs/content/conversations(type="jpg", target="> testhttps://wizardforcel.gitbooks.io/scapy-docs/content/jpg")
  • 3D 图形。trace3D()需要 VPython

     
    1. >>> a,u=traceroute(["wwwhttps://wizardforcel.gitbooks.io/scapy-docs/content/pythonhttps://wizardforcel.gitbooks.io/scapy-docs/content/org", "googlehttps://wizardforcel.gitbooks.io/scapy-docs/content/com","slashdothttps://wizardforcel.gitbooks.io/scapy-docs/content/org"])
    2. >>> ahttps://wizardforcel.gitbooks.io/scapy-docs/content/trace3D()
  • WEP 解密。unwep()需要 PyCrypto。例子中使用了 Weplap 测试文件

     
    1. >>> enc=rdpcap("weplab-64bit-AA-managedhttps://wizardforcel.gitbooks.io/scapy-docs/content/pcap")
    2. >>> enchttps://wizardforcel.gitbooks.io/scapy-docs/content/show()
    3. >>> enc[0]
    4. >>> confhttps://wizardforcel.gitbooks.io/scapy-docs/content/wepkey="AA\x00\x00\x00"
    5. >>> dec=Dot11PacketList(enc)https://wizardforcel.gitbooks.io/scapy-docs/content/toEthernet()
    6. >>> dechttps://wizardforcel.gitbooks.io/scapy-docs/content/show()
    7. >>> dec[0]
  • 指纹识别。nmap_fp()需要 Nmap。你需要支持第一代指纹识别的老版本(v4https://wizardforcel.gitbooks.io/scapy-docs/content/23 之前)。

     
    1. >>> load_module("nmap")
    2. >>> nmap_fp("192https://wizardforcel.gitbooks.io/scapy-docs/content/168https://wizardforcel.gitbooks.io/scapy-docs/content/0https://wizardforcel.gitbooks.io/scapy-docs/content/1")
    3. Begin emission:
    4. Finished to send 8 packetshttps://wizardforcel.gitbooks.io/scapy-docs/content/
    5. Received 19 packets, got 4 answers, remaining 4 packets
    6. (0https://wizardforcel.gitbooks.io/scapy-docs/content/88749999999999996, ['Draytek Vigor 2000 ISDN router'])
  • VOIP。voip_play()需要 SoX

Linux 原生

Scapy 可以在 Linux 上原生运行,不需要libdnetlibpcap

安装 Python 2https://wizardforcel.gitbooks.io/scapy-docs/content/5。 安装tcpdump并确保它在$ PATH中。 (它只用于编译 BPF 过滤器(-ddd选项)) 确保你的内核已选择分组套接字(CONFIG_PACKET) 如果你的内核<2https://wizardforcel.gitbooks.io/scapy-docs/content/6,请确保选择套接字过滤(CONFIG_FILTER

Debian/Ubuntu

只需使用标准包:

 
  1. $ sudo apt-get install tcpdump graphviz imagemagick python-gnuplot python-crypto python-pyx

Fedora

这里是在 Fedora 9 中安装 Scapy 的方法:

 
  1. # yum install mercurial python-devel
  2. # cd /tmp
  3. # hg clone http://hghttps://wizardforcel.gitbooks.io/scapy-docs/content/secdevhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/scapy
  4. # cd scapy
  5. # python setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

一些可选包:

 
  1. # yum install graphviz python-crypto sox PyX gnuplot numpy
  2. # cd /tmp
  3. # wget http://heanethttps://wizardforcel.gitbooks.io/scapy-docs/content/dlhttps://wizardforcel.gitbooks.io/scapy-docs/content/sourceforgehttps://wizardforcel.gitbooks.io/scapy-docs/content/net/sourceforge/gnuplot-py/gnuplot-py-1https://wizardforcel.gitbooks.io/scapy-docs/content/8https://wizardforcel.gitbooks.io/scapy-docs/content/tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz
  4. # tar xvfz gnuplot-py-1https://wizardforcel.gitbooks.io/scapy-docs/content/8https://wizardforcel.gitbooks.io/scapy-docs/content/tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz
  5. # cd gnuplot-py-1https://wizardforcel.gitbooks.io/scapy-docs/content/8
  6. # python setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

Mac OS X

以下是在 Mac OS 10https://wizardforcel.gitbooks.io/scapy-docs/content/4(Tiger)或 10https://wizardforcel.gitbooks.io/scapy-docs/content/5(Leopard)上安装 Scapy 的方式。

建立环境变量

使用 MacPorts 安装

  • 从 macportshttps://wizardforcel.gitbooks.io/scapy-docs/content/org 下载 dmg 并安装它。

  • 更新 MacPorts:

     
    1. $ sudo port -d selfupdate
  • 安装 Scapy:

     
    1. $ sudo port install scapy

像上面的通用安装所展示的那样,随后你可以更新到最新版。

从源码安装

安装libdnet和 Python 包装器:

 
  1. $ wget http://libdnethttps://wizardforcel.gitbooks.io/scapy-docs/content/googlecodehttps://wizardforcel.gitbooks.io/scapy-docs/content/com/files/libdnet-1https://wizardforcel.gitbooks.io/scapy-docs/content/12https://wizardforcel.gitbooks.io/scapy-docs/content/tgz
  2. $ tar xfz libdnet-1https://wizardforcel.gitbooks.io/scapy-docs/content/12https://wizardforcel.gitbooks.io/scapy-docs/content/tgz
  3. $ https://wizardforcel.gitbooks.io/scapy-docs/content/configure
  4. $ make
  5. $ sudo make install
  6. $ cd python
  7. $ python2https://wizardforcel.gitbooks.io/scapy-docs/content/5 setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

安装libpcap和 Python 包装器:

 
  1. $ wget http://dfnhttps://wizardforcel.gitbooks.io/scapy-docs/content/dlhttps://wizardforcel.gitbooks.io/scapy-docs/content/sourceforgehttps://wizardforcel.gitbooks.io/scapy-docs/content/net/sourceforge/pylibpcap/pylibpcap-0https://wizardforcel.gitbooks.io/scapy-docs/content/6https://wizardforcel.gitbooks.io/scapy-docs/content/2https://wizardforcel.gitbooks.io/scapy-docs/content/tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz
  2. $ tar xfz pylibpcap-0https://wizardforcel.gitbooks.io/scapy-docs/content/6https://wizardforcel.gitbooks.io/scapy-docs/content/2https://wizardforcel.gitbooks.io/scapy-docs/content/tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz
  3. $ cd pylibpcap-0https://wizardforcel.gitbooks.io/scapy-docs/content/6https://wizardforcel.gitbooks.io/scapy-docs/content/2
  4. $ python2https://wizardforcel.gitbooks.io/scapy-docs/content/5 setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

可选:安装readline

 
  1. $ python `python -c "import pimp; print pimphttps://wizardforcel.gitbooks.io/scapy-docs/content/__file__"` -i readline

OpenBSD

这里是在 OpenBSD 中安装 Scapy 的方式:

 
  1. # export PKG_PATH=ftp://ftphttps://wizardforcel.gitbooks.io/scapy-docs/content/openbsdhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/pub/OpenBSD/4https://wizardforcel.gitbooks.io/scapy-docs/content/3/packages/i386/
  2. # pkg_add py-libpcap py-libdnet mercurial
  3. # ln -sf /usr/local/bin/python2https://wizardforcel.gitbooks.io/scapy-docs/content/5 /usr/local/bin/python
  4. # cd /tmp
  5. # hg clone http://hghttps://wizardforcel.gitbooks.io/scapy-docs/content/secdevhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/scapy
  6. # cd scapy
  7. # python setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/py install

可选包

py-crypto

 
  1. # pkg_add py-crypto

Graphviz(下载的东西多,会安装多个 GNOME 库)

 
  1. # pkg_add graphviz

ImageMagick(需要较长时间来编译)

 
  1. # cd /tmp
  2. # ftp ftp://ftphttps://wizardforcel.gitbooks.io/scapy-docs/content/openbsdhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/pub/OpenBSD/4https://wizardforcel.gitbooks.io/scapy-docs/content/3/portshttps://wizardforcel.gitbooks.io/scapy-docs/content/tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz
  3. # cd /usr
  4. # tar xvfz /tmp/portshttps://wizardforcel.gitbooks.io/scapy-docs/content/tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz
  5. # cd /usr/ports/graphics/ImageMagick/
  6. # make install

PyX(下载的东西非常多,会安装 textlive 以及其他)

 
  1. # pkg_add py-pyx

/etc/ethertypes

 
  1. # wget http://wwwhttps://wizardforcel.gitbooks.io/scapy-docs/content/secdevhttps://wizardforcel.gitbooks.io/scapy-docs/content/org/projects/scapy/files/ethertypes -O /etc/ethertypes

python-bz2(用于 UTscapy)

 
  1. # pkg_add python-bz2

Windows

Scapy 主要是为类 Unix 系统开发的,并且在这些平台上能正常工作。 但是最新版本的 Scapy 开箱即用支持 Windows。 所以你可以在 Windows 机器上使用几乎所有的 Scapy 的功能。

注意:如果你从 Scapy-win v1https://wizardforcel.gitbooks.io/scapy-docs/content/2https://wizardforcel.gitbooks.io/scapy-docs/content/0https://wizardforcel.gitbooks.io/scapy-docs/content/2 更新到 Scapy v2,请记住使用scapyhttps://wizardforcel.gitbooks.io/scapy-docs/content/all import *而不是from scapy import *

 

你需要以下软件包才能在 Windows 上安装 Scapy:

只需下载文件并运行安装程序。选择默认安装选项应该会安全。

为了方便起见,链接中直接给出了我使用的版本(对于 Python 2https://wizardforcel.gitbooks.io/scapy-docs/content/5 和 Python 2https://wizardforcel.gitbooks.io/scapy-docs/content/6)。如果这些链接不起作用,或者你使用的是不同的 Python 版本,只需访问相应软件包的主页并查找 Windows 二进制文件即可。你可以在网上搜索文件名作为最后的手段。

安装所有软件包后,打开命令提示符(cmdhttps://wizardforcel.gitbooks.io/scapy-docs/content/exe),然后键入scapy运行 Scapy。如果你正确设置了PATH,这将在C:\Python26\Scripts目录中会找到一个批处理文件,并指导 Python 解释器加载 Scapy。

如果不能正常工作,考虑跳过 Windows 版本,并从 Linux Live CD 中使用 Scapy - 在 Windows 主机上的虚拟机中,或通过从 CDROM 引导:例如旧版本的 Scapy 已经包含在 grml 和 BackTrack 中。在使用 Live CD 时,你可以通过键入cd /tmp && wget scapyhttps://wizardforcel.gitbooks.io/scapy-docs/content/net轻松升级到最新的 Scapy 版本。

可选包

绘图(plot

2D 图形(psdumppdfdump

图形(conversations

WEP 加密

PyCryptopycrypto-2https://wizardforcel.gitbooks.io/scapy-docs/content/1https://wizardforcel.gitbooks.io/scapy-docs/content/0https://wizardforcel.gitbooks.io/scapy-docs/content/win32-py2https://wizardforcel.gitbooks.io/scapy-docs/content/5https://wizardforcel.gitbooks.io/scapy-docs/content/zippycrypto-2https://wizardforcel.gitbooks.io/scapy-docs/content/1https://wizardforcel.gitbooks.io/scapy-docs/content/0https://wizardforcel.gitbooks.io/scapy-docs/content/win32-py2https://wizardforcel.gitbooks.io/scapy-docs/content/6https://wizardforcel.gitbooks.io/scapy-docs/content/zip

指纹识别

Nmapnmap-4https://wizardforcel.gitbooks.io/scapy-docs/content/20-setuphttps://wizardforcel.gitbooks.io/scapy-docs/content/exe。如果使用默认安装目录,Scapy 应自动查找指纹文件。 Queso:queso-980922https://wizardforcel.gitbooks.io/scapy-docs/content/tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz。解压tarhttps://wizardforcel.gitbooks.io/scapy-docs/content/gz文件(例如使用 7-Zip)并将quesohttps://wizardforcel.gitbooks.io/scapy-docs/content/conf放入你的 Scapy 目录

截图

 

已知 Bug

  • 你可能无法在 Windows 上捕获 WLAN 流量。 原因在 Wireshark wiki 和 WinPcap 常见问题中有解释。 尝试关闭混合模式confhttps://wizardforcel.gitbooks.io/scapy-docs/content/sniff_promisc = False
  • 数据包无法发送到 localhost(或你自己的主机上的本机 IP 地址)。
  • voip_play()函数不工作,因为他们通过/dev/dsp输出声音,这在 Windows 上不可用。
上一篇:Scapy介绍官方文档翻译(第一部分:介绍)


下一篇:关于PyCharm安装scapy报错(python3)