下载和安装

概述

  1. 安装 Python 2.7.X or 3.4+ .

  2. Download and install Scapy.

  3. Follow the platform-specific instructions (dependencies) <#platform-specific-instructions> _.

  4. (可选): Install additional software for special features .

  5. 使用管理员权限运行 Scapy。

根据您的平台和您想要使用的scapy版本,这些步骤中的每一个都可以以不同的方式完成。请按照平台特定的说明了解更多详细信息。

尖刻的版本

_images/scapy_version_timeline.jpg

注解

在SCAPY V2使用中 from scapy.all import * 而不是 from scapy import * .

安装scapy v2.x

以下步骤描述如何安装(或更新)scapy本身。根据平台的不同,可能需要安装一些附加的库才能使其实际工作。因此,还请看一看有关如何安装这些需求的平台特定章节。

注解

以下步骤适用于类似Unix的操作系统(Linux、BSD、Mac OS X)。对于Windows,请参见 special chapter 下面。

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

最新版本

注解

要获得最新版本,包括错误修复和新功能,但可能不太稳定,请参见 development version .

使用 pip:

$ pip install --pre scapy[basic]

事实上,从2.4.3开始,scapy分为三类:

包含

PIP命令

违约

只会耍花招

pip install scapy

基本的

斯凯和伊普顿。 强烈推荐

pip install --pre scapy[basic]

完成

scapy及其所有主要依赖项

pip install --pre scapy[complete]

当前开发版本

如果您总是想要最新版本的所有新功能和错误修复,请使用scapy的git存储库:

  1. Install the Git version control system <https://git-scm.com/book/en/v2/Getting-Started-Installing-Git> _.

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

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

注解

你也可以下载scapy的 latest version 在zip文件中:

$ 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. 在标准中安装scapy distutils 方式:

    $ cd scapy
    $ sudo python setup.py install
    

如果您使用了git,以后您可以一直更新到最新版本:

$ git pull
$ sudo python setup.py install

注解

您可以运行scapy而不使用 run_scapy (UNIX)或 run_scapy.bat (Windows)编写脚本或直接从可执行zip文件运行该脚本(请参阅上一节)。

可选依赖项

对于某些特殊功能,scapy需要安装一些依赖项。这些软件大多可以通过 pip . 以下是涉及的主题和一些示例,如果安装成功,您可以使用这些示例进行尝试。

  • 作图。 plot() 需要 Matplotlib .

    Matplotlib可通过以下方式安装: pip install matplotlib

    >>> p=sniff(count=50)
    >>> p.plot(lambda x:len(x))
    
  • 2D图形。 psdump()pdfdump() 需要 PyX 依次需要 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")
    
  • 图。 conversations() 需要 GraphvizImageMagick .

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

    注解

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

  • 三维图形。 trace3D() 需要 VPython-Jupyter .

    vpyton jupyter可通过安装 pip install vpython

    >>> a,u=traceroute(["www.python.org", "google.com","slashdot.org"])
    >>> a.trace3D()
    
  • WEP解密。 unwep() 需要 cryptography . 使用A的示例 Weplap test file

    密码术可通过安装 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解密。 cryptography 也是需要的。

  • 指纹图谱。 nmap_fp() 需要 Nmap . 你需要一个 old version (在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() 需要 SoX .

平台特定说明

作为一般规则,您可以切换 数据包捕获函数库 整合 onoff 随时使用:

from scapy.config import conf
conf.use_pcap = True

Linux本地

scapy可以在Linux上本地运行,而不需要libpcap。

  • 安装 Python 2.7 or 3.4+ .

  • 安装 tcpdump 确保它在$path中。(它只用于编译BPF过滤器 (-ddd option

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

  • 如果内核小于2.6,请确保选择了套接字筛选 CONFIG_FILTER

德班/乌班图/费多拉

确保安装了tcpdump:

  • Debian/Ubuntu:

$ sudo apt-get install tcpdump
  • Fedora:

$ yum install tcpdump

然后安装scapy via pipapt (捆绑在 python-scapy )所有依赖项都可以通过平台特定的安装程序安装,或者通过PYPI安装。见 Optional Dependencies 更多信息。

Mac OS X

在Mac OS X上,scapy 在本地工作 因为最近的版本。但是,您可能希望使用libpcap进行欺诈。您可以选择使用自制或MacPorts进行安装。它们都可以很好地工作,但是自制用于运行单元测试 Travis CI .

注解

libpcap可能已经安装在您的平台上(例如,如果您有tcpdump)。这就是 OSX

使用自制安装

  1. 更新自制:

    $ brew update
    
  2. 安装libpcap::

    $ brew install libpcap
    

在scapy中启用:

conf.use_pcap = True

使用MacPorts安装

  1. 更新MacPorts::

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

    $ sudo port install libpcap
    

在scapy中启用:

conf.use_pcap = True

OpenBSD

以类似的方式,要在OpenBSD 5.9+上安装scapy,您需要 may 要安装libpcap,如果不想使用本机扩展名:

$ doas pkg_add libpcap tcpdump

然后安装scapy via pippkg_add (捆绑在 python-scapy )所有依赖项都可以通过平台特定的安装程序安装,或者通过PYPI安装。见 Optional Dependencies 更多信息。

Windows

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

_images/scapy-win-screenshot1.png

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

只需下载文件并运行安装程序。选择默认安装选项应该是安全的。(如果是 Npcap ,狡猾的 会有用的 具有 802.11 选项已启用。您可能希望确保在安装时勾选此选项)。

安装完所有软件包后,打开命令提示符(cmd.exe)并通过键入scapy运行 scapy . 如果您正确设置了路径,这将在您的 C:\Python27\Scripts 目录并指示python解释器加载scapy。

如果真的什么都不起作用,可以考虑跳过Windows版本并使用Linux Live CD中的scapy—在Windows主机上的虚拟机中或从cdrom启动:例如,grml和backtrack中已经包含了旧版本的scapy。使用Live CD时,您可以使用 above installation methods .

截图

_images/scapy-win-screenshot2.png

已知错误

如果scapy没有自动管理它们周围的工作,您可能会遇到以下特定于平台的错误:

  • 您可能无法在Windows上捕获WLAN流量。原因解释在 Wireshark wiki 而在 WinPcap FAQ . 尝试关闭混乱模式 conf.sniff_promisc=False .

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

winpcap/npcap冲突

AS Winpcap 正在变老,建议使用 Npcap 相反。 NpcapNmap 项目。

注解

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

  1. 如果你收到消息 'Winpcap is installed over Npcap.' 这意味着您已经安装了winpcap和npcap版本,这是不推荐的。

你可以先 从程序文件中卸载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上下载正确的版本

在某些情况下,也可能意味着您已安装 NpcapWinpcapWindump 正在使用 Winpcap . 完全删除 Winpcap 用上述方法解决问题。

脱机生成文档

scapy项目的文档是使用restructuredtext(文件)编写的 * .rst)并且可以使用 Sphinx python库。官方在线版本可在 readthedocs .

HTML版本

构建HTML版本的说明如下:

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

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

要使用readthedocs的模板,您必须安装相应的主题:::

pip install sphinx_rtd_theme

UML图

使用 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

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