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 & all its main dependencies

pip install --pre scapy[complete]

Current development version

如果您始终想要具有所有新功能和错误修正的最新版本,请使用Scapy的Git存储库:

  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 ))

  • 确保您的内核已选择Packet sockets( 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

以类似的方式,要在OpenBSD 5.9+上安装Scapy,如果不想使用本机扩展,则可能要安装libpcap:

$ doas pkg_add libpcap tcpdump

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

SunOS / Solaris

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

Note

In fact, Solaris doesn’t support AF_PACKET, which Scapy uses on Linux, but rather uses its own system DLPI. See this page. We prefer using the very universal libpcap that spending time implementing support for DLPI.

Windows

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

_images/scapy-win-screenshot1.png

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

  • Python: Python 2.7.X or 3.4+. After installation, add the Python installation directory and its Scripts subdirectory to your PATH. Depending on your Python version, the defaults would be C:\Python27 and C:\Python27\Scripts respectively.

  • 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图片. 请注意,您可以根据需要提供任意数量的模块或软件包,但是结果将很快变得难以理解.

要查看DHCP层和ansmachine模块之间的依赖关系,可以运行:

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

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