Download and Installation

Overview

每个步骤都可以通过不同的方式完成,具体取决于您的平台和要使用的Scapy版本. 请遵循特定于平台的说明以获取更多详细信息.

Scapy versions

_images/scapy_version_timeline.jpg

Note

在Scapy v2中,请使用from scapy.all import *而不是from scapy import * .

Installing Scapy v2.x

以下步骤描述了如何安装(或更新)Scapy本身. 根据您的平台,可能必须安装一些其他库才能使其真正起作用. 因此,还请查看有关如何安装这些要求的特定于平台的章节.

Note

以下步骤适用于类似Unix的操作系统(Linux,BSD,Mac OS X). 对于Windows,请参见下面的特殊章节 .

在继续之前,请确保已安装Python.

Latest release

Note

要获取具有错误修正和新功能的最新版本,但可能不太稳定,请参见开发版本 .

使用点数:

$ pip install --pre scapy[basic]

实际上,从2.4.3版本开始,Scapy分为3个捆绑包:

Bundle

Contains

点命令

Default

仅Scapy

pip install scapy

Basic

Scapy和IPython. 强烈推荐

pip install --pre scapy[basic]

Complete

Scapy及其所有主要依赖项

pip install --pre scapy[complete]

Current development version

If you always want the latest version with all new features and bugfixes, use Scapy’s Git repository:

  1. Install the Git version control system.

  2. 查看Scapy存储库的克隆:

    $ git clone https://github.com/secdev/scapy.git
    

Note

您也可以通过zip文件下载Scapy的最新版本

$ 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
  1. 以标准distutils方式安装Scapy:

    $ cd scapy
    $ sudo python setup.py install
    

如果您使用的是Git,则之后始终可以更新到最新版本:

$ git pull
$ sudo python setup.py install

Note

您可以运行scapy,而无需使用run_scapy (unix)或run_scapy.bat (Windows)脚本来安装它,也可以直接从可执行zip文件运行它(请参见上一节).

Optional Dependencies

对于某些特殊功能,Scapy将需要安装一些依赖项. 这些软件大多数都可以通过pip安装. 这里是涉及的主题和一些示例,可用于尝试安装成功.

  • Plotting. plot() needs Matplotlib.

    Matplotlib可通过pip install matplotlib

    >>> p=sniff(count=50)
    >>> p.plot(lambda x:len(x))
    
  • 2D图形. psdump()pdfdump()需要PyX ,而pdfdump()又需要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")
    
  • Graphs. conversations() needs Graphviz and ImageMagick.

    >>> p=readpcap("myfile.pcap")
    >>> p.conversations(type="jpg", target="> test.jpg")
    

    Note

    GraphvizImageMagick需要使用特定于平台的软件包管理器单独安装.

  • 3D图形. trace3D()需要VPython-Jupyter .

    VPython-Jupyter可通过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() needs SoX.

Platform-specific instructions

通常,您可以使用以下命令随时打开关闭 libpcap集成:

from scapy.config import conf
conf.use_pcap = True

Linux native

Scapy可以在没有libpcap的Linux上本地运行.

  • Install Python 2.7 or 3.4+.

  • 安装tcpdump并确保它在$ PATH中. (它仅用于编译BPF过滤器( -ddd option ))

  • 确保您的内核已选择数据包套接字( CONFIG_PACKET

  • 如果您的内核<2.6,请确保已选择套接字过滤( CONFIG_FILTER

Debian/Ubuntu/Fedora

确保已安装tcpdump:

  • Debian/Ubuntu:

$ sudo apt-get install tcpdump
  • Fedora:

$ yum install tcpdump

然后通过pipapt (捆绑在python-scapy )安装Scapy.可以通过特定于平台的安装程序或PyPI安装所有依赖项. 有关更多信息,请参见可选依赖项 .

Mac OS X

从最新版本开始,在Mac OS X上,Scapy DOES就可以正常工作 . 但是,您可能要使Scapy使用libpcap. 您可以选择使用Homebrew或MacPorts安装它. 它们都可以正常工作,但是使用Homebrew与Travis CI一起运行单元测试.

Note

Libpcap可能已经安装在您的平台上(例如,如果您有tcpdump). OSX就是这种情况

Install using Homebrew

  1. 更新自制程序:

    $ brew update
    
  2. 安装libpcap:

    $ brew install libpcap
    

在Scapy中启用它:

conf.use_pcap = True

Install using MacPorts

  1. 更新MacPorts:

    $ sudo port -d selfupdate
    
  2. 安装libpcap:

    $ sudo port install libpcap
    

在Scapy中启用它:

conf.use_pcap = True

OpenBSD

In a similar manner, to install Scapy on OpenBSD 5.9+, you may want to install libpcap, if you do not want to use the native extension:

$ doas pkg_add libpcap tcpdump

然后通过pippkg_add (捆绑在python-scapy )安装Scapy.可以通过特定于平台的安装程序或PyPI安装所有依赖项. 有关更多信息,请参见可选依赖项 .

SunOS / Solaris

Solaris / SunOS需要libpcap (默认安装)才能工作.

Note

实际上,Solaris不支持Scapy在Linux上使用的AF_PACKET ,而是使用其自己的系统DLPI . 参见本页 . 我们更喜欢使用非常通用的libpcap来花费时间实现对DLPI的支持.

Windows

Scapy主要是为类似Unix的系统开发的,在这些平台上效果最佳. 但是最新版本的Scapy支持开箱即用的Windows. 因此,您也可以在Windows计算机上使用Scapy的几乎所有功能.

_images/scapy-win-screenshot1.png

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

  • PythonPython 2.7.X或3.4+ . 安装后,将Python安装目录及其Scripts子目录添加到PATH. 根据您的Python版本,默认值分别为C:\Python27C:\Python27\Scripts .

  • Npcap最新版本 . 建议使用默认值. Scapy也将与Winpcap一起使用.

  • ScapyGit存储库中的 最新开发版本 . 解压缩归档文件,在该目录中打开命令提示符,然后运行python setup.py install .

只需下载文件并运行安装程序即可. 选择默认的安装选项应该是安全的. (在Npcap的情况下,Scapy 在启用802.11选项的情况下工作 .您可能需要确保在安装时勾选了该选项).

安装所有软件包后,打开命令提示符(cmd.exe)并通过键入scapy运行Scapy. 如果正确设置了PATH,它将在C:\Python27\Scripts目录中找到一个小的批处理文件,并指示Python解释器加载Scapy.

如果确实没有任何效果,请考虑跳过Windows版本,并从Linux Live CD使用Scapy –在Windows主机上的虚拟机中,或从CDROM引导:例如,grml和BackTrack中已经包含了Scapy的旧版本. . 使用Live CD时,可以使用上述安装方法轻松升级到最新的Scapy版本.

Screenshot

_images/scapy-win-screenshot2.png

Known bugs

如果Scapy不能自动管理围绕它们的工作,那么您可能会遇到以下特定于平台的错误:

  • 您可能无法在Windows上捕获WLAN通信. 原因在Wireshark WikiWinPcap FAQ中进行了解释. 尝试使用conf.sniff_promisc=False关闭混杂模式.

  • 有时无法将数据包发送到本地主机(或您自己的主机上的本地IP地址).

Winpcap/Npcap conflicts

随着Winpcap的变老,建议改用Npcap . NpcapNmap项目的一部分.

Note

这不适用于Npcap不支持的Windows XP.

  1. 如果你得到的消息'Winpcap is installed over 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.如果你得到的消息'The installed Windump version does not work with Npcap'已安装的是旧版本的它肯定意味着Windump是对于由Winpcap . 在https://github.com/hsluoyz/WinDump/releases下载正确的文件

在某些情况下,这还可能意味着您已经安装了NpcapWinpcap ,并且Windump正在使用Winpcap . 使用以上方法完全删除Winpcap ,即可解决问题.

Build the documentation offline

Scapy项目的文档是使用reStructuredText(文件* .rst)编写的,可以使用Sphinx python库进行构建. 官方在线版本可在readthedocs获得 .

HTML version

构建HTML版本的说明如下:

(activate a virtualenv)
pip install sphinx
cd doc/scapy
make html

现在,您可以在喜欢的Web浏览器中打开生成的HTML文件_build/html/index.html .

要使用ReadTheDocs的模板,必须使用以下命令安装相应的主题:

pip install sphinx_rtd_theme

UML diagram

使用pyreverse您可以构建Scapy源代码的对象层次结构的UML表示. 这是一个如何为Fields对象构建继承图的示例:

(activate a virtualenv)
pip install pylint
cd scapy/
pyreverse -o png -p fields scapy/fields.py

这将生成一个包含继承层次结构的classes_fields.png图片. 请注意,您可以根据需要提供任意数量的模块或软件包,但是结果将很快变得难以理解.

To see the dependencies between the DHCP layer and the ansmachine module, you can run:

pyreverse -o png -p dhcp_ans scapy/ansmachine.py scapy/layers/dhcp.py scapy/packet.py

在这种情况下,Pyreverse还将生成一个packages_dhcp_ans.png显示提供的不同python模块之间的链接.