Advertisement

SCAPY官方教程二

阅读量:

摘要:
本摘要介绍了如何安装Scapy 2.x版本及其依赖项,并提供了针对不同平台(如Linux、Windows、Mac OS X等)的具体指导。对于Linux用户,默认情况下无需libpcap即可本地运行Scapy;而Windows用户需安装Npcap和PyX等工具包以启用WEP解密功能。此外,本摘要还提到了如何通过Sphinx工具构建离线文档以及利用pyreverse生成对象层次结构图的方法,并提醒了在某些平台上可能遇到的问题及解决方案。

一、SCAPY版本

基于您的平台选择和所使用的Scapy版本差异,请注意这些步骤的具体执行方式各有不同。建议参考相关的指南以获得完整的指导说明。

在 Scapy v2 中使用

复制代码
      from scapy.all import * 
    
    AI助手

而不是

复制代码
     from scapy import *
    
    AI助手

二、Scapy v2.x 安装

下面详细说明了如何(或更新)Scapy软件包。因不同的操作系统可能会有一些特殊需求,请确保已正确配置系统环境变量。建议参考相关文档获取完整的安装指南。

以下步骤适用于类 Unix 操作系统(Linux、BSD、Mac OS X)。

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

获取scapy发布版本

复制代码
    $ pip install --pre scapy[basic]
    
    AI助手

从 2.4.3 开始,Scapy 分为 3 个捆绑包:

包含 点命令
默认 只有 Scapy pip install scapy
基本的 Scapy 和 IPython。强烈推荐 pip install --pre scapy[basic]
完全的 Scapy 及其所有主要依赖项 pip install --pre scapy[complete]

建议您在需要所有新功能与错误修正时选择最新型态,请确信您正在使用Scapy的官方Git存储库

采用 Git 作为版本控制系统 [https://git-scm.com/book/en/v2/Getting-Started-Installing-Git "安装 Git 版本控制系统"]。

查看 Scapy 存储库的克隆:

复制代码
    $ git clone https://github.com/secdev/scapy.git

    
    AI助手

您可以通过 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
    
    
    
    
    AI助手

遵循标准distutils的方式进行Scapy的安装:

复制代码
 $ cd scapy

    
 $ sudo python setup.py install
    
    
    
    
    AI助手

如果您使用过 Git,您可以随时更新到最新版本:

复制代码
 $ git pull

    
 $ sudo python setup.py install
    
    
    
    
    AI助手

您可以直接使用 scapy 软件进行操作。无需通过 run_scipy 命令(在 unix 系统上)或 run_scipy.bat 文件(在 Windows 系统上)。安装相应的程序或从可执行 zip 文件直接运行。

4. 卸载

您需要手动删除所有文件,还要撤消安装手动执行的任何其他操作。

如果您的系统中缺少某个特定的文件列表,请您通过--record选项重新安装相应的软件包,并让其在运行后自动生成对应的文件索引。

要记录已安装文件的列表,您可以使用:

复制代码
    python setup.py install --record files.txt
    
    
    AI助手

一旦要卸载,可以使用xargs进行删除:

复制代码
    xargs rm -rf < files.txt
    
    
    AI助手

或者,如果您正在运行Windows,请使用Powershell:

复制代码
    Get-Content files.txt | ForEach-Object {Remove-Item $_ -Recurse -Force}
    
    
    AI助手

随后移除包含的目录macOS /Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/my_module-0.1.egg/ 。即使没有实际存在的文件路径指向该模块也不会影响其被导入

复制代码
 >>> import my_module

    
 >>> my_module.__file__
    
 None
    
    
    
    
    AI助手

删除后,Python会显示:

复制代码
 >>> import my_module

    
 Traceback (most recent call last):
    
   File "<stdin>", line 1, in <module>
    
 ModuleNotFoundError: No module named 'my_module'
    
    
    
    
    AI助手

三、可选依赖项

为了实现特定功能模块, Scapy 必须先安装相关库件. 主要这些工具可以通过命令行工具pip完成更新. 以下是一些相关主题及其示例, 如果您顺利完成安装, 您可以参考这些示例进行操作.

绘图。plot()需要Matplotlib

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

复制代码
 >>> p=sniff(count=50)

    
 >>> p.plot(lambda x:len(x))
    
    
    
    
    AI助手

平面图形。psdump()pdfdump()函数依赖于[PyX](http://pyx.sourceforge.net/ PyX),其中后者依赖于LaTeX发行版:[texlive (Unix)](http://www.tug.org/texlive/ TeX Live (Unix))或[MikTeX (Windows)](https://miktex.org/ MikTeX (Windows系统))。

PyX 在 Python 2.7 上有一个最高可选版本限制为0.12.1。这表明该软件在 Python 2.7 环境下仅能支持至这个版本号以下的安装,请确保您的开发环境配置正确以避免运行时错误。具体来说,在 Python 2.7 环境中执行安装操作时,请使用命令 pip install pyx==0.12.1 或者 pip install pyx(注意后者可能因缺少指定版本而引发问题)。为了避免这种冲突情况的发生,在实际应用中建议严格按照指定的版本进行安装并运行相关组件测试以确认兼容性。

复制代码
 >>> p=IP()/ICMP()

    
 >>> p.pdfdump("test.pdf")
    
    
    
    
    AI助手

Charts.conversations() is a tool that requires the installation of both Graphviz and ImageMagick. The required libraries can be obtained from their respective official websites: Graphviz and ImageMagick.

复制代码
 >>> p=rdpcap("myfile.pcap")

    
 >>> p.conversations(type="jpg", target="> test.jpg")
    
    
    
    
    AI助手

Graphviz并且ImageMagick需要使用特定于平台的包管理器单独安装。

三维图像依仗于trace3D()函数需调用VPython-Jypyter

VPython-Jupyter 可通过以下方式安装pip install vpython

复制代码
 >>> a,u=traceroute(["www.python.org", "google.com","slashdot.org"])

    
 >>> a.trace3D()
    
    
    
    
    AI助手

破解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]
    
    
    
    
    AI助手

PKI 操作和 TLS 解密。还需要密码学。

指纹识别技术是一种广泛应用于身份验证的生物特征识别方法。
该脚本依赖于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'])
    
    
    
    
    AI助手

网络电话。voip_play()需要SoX

四、 特定于平台的说明

作为一般规则,您可以随时使用以下方法打开或关闭libpcap 集成:

复制代码
 from scapy.config import conf

    
 conf.use_pcap = True
    
    
    
    
    AI助手

Linux 原生

Scapy 可以在 Linux 上本地运行,无需 libpcap。

安装Python 2.7 或 3.4+

请下载并安装程序tcpdump(可通过访问"http://www.tcpdump.org/"获取),确保其位于系统路径中。该工具特别适用于构建BPF过滤器,并使用-ddd选项进行配置。

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

若您的内核版本低于2.6,则建议您安装必要的安全更新以防止潜在的安全漏洞风险。同时,请确保安装了CONFIG_FILTER参数所需的必要组件,并参考官方文档获取详细指导:https://scapy.readthedocs.io/en/latest/installation.html#debian-ubuntu-fedor

Debian/Ubuntu/Fedora

确保已安装 tcpdump:

Debian/Ubuntu:

复制代码
    $ sudo apt-get install tcpdump
    
    AI助手

红帽

复制代码
    $ yum install tcpdump
    
    AI助手

然后我们可以采用 pip 或 apt 进行安装(若与 Python-Scapy 绑定,则需借助相应的平台工具包或 PyPI)。所有必要的附加组件均可通过指定的工具包获取。(有关更多信息,请参阅 可选依赖项

Mac OS X

在 Mac OS X 系统上安装 Scapy 时会发现,默认情况下其已实现了本地运行功能。

Libpcap 可能已预先配置在您的平台上(例如,在您运行 tcpdump 时)。具体而言,请参见 OSX 的情况

通过 Homebrew 进行安装! [¬](https://scapy.readthedocs.io/en/latest/installation.html#install-using-homebrew ¬)

更新自制软件:

复制代码
    $ brew update

    
    AI助手

安装 libpcap:

复制代码
    $ brew install libpcap

    
    AI助手

在 Scapy 中启用它:

复制代码
    conf.use_pcap = True
    
    AI助手

使用 MacPorts 安装

更新 MacPorts:

复制代码
    $ sudo port -d selfupdate

    
    AI助手

安装 libpcap:

复制代码
    $ sudo port install libpcap

    
    AI助手

在 Scapy 中启用它:

复制代码
    conf.use_pcap = True
    
    AI助手

OpenBSD

通过类似的方法,在OpenBSD 5.9+系统上安装Scapy工具包;如果希望避免依赖本地扩展,则可能需要安装libpcap。

复制代码
    $ doas pkg_add libpcap tcpdump
    
    AI助手

随后,请运行以下命令: pip install python-scapy 或者 pkg_add bundled with python-scapy, 以获取并安装 Scrapy 的所有依赖项。有关更多信息,请参阅可选依赖项.

SunOS / Solaris

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

实际上Solaris并不支持Scapy在Linux系统中使用AF_PACKET协议包(AF_PACKET),而是采用了自己开发的网络接口层协议DLPI(Dynamic Link Protocol Interface)。请参阅此页面。我们更倾向于选择非常通用且强大的libpcap库(PCAP),而非花时间去实现对DLPI的支持代码。

Windows

Scapy主要基于类Unix系统设计,并在这些操作系统上表现出色;然而,在最新版本中它已实现了对Windows平台的无缝兼容性;因此,在您的Windows设备上同样能够充分发挥其功能

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

PythonPython 2.7.X 或 3.4+。将Python及其Scripts子目录添加到系统路径环境变量中。

Npcap最新版本。默认配置通常提供良好的性能表现。

Scapy:来自Git存档库的最新开发版本。解压源码包后,在解压目录下启动Python解释器并执行安装脚本。

请下载文件后运行安装程序以完成配置。默认情况下选择的安装选项通常被认为是一种安全配置。(当采用Npcap技术时,在802.11频段下Scapy会启用相关选项进行配置。建议确保在安装过程中勾选此选项以避免潜在问题)。)

在完成所有软件包的安装后,请您依次打开命令提示符(cmd.exe),然后按住键盘运行 Scapy scapy。如果设置正确,在您的 C:\Python27\Scripts 目录中将出现一个小批处理文件,并指示 Python 解释器加载 Scapy。

假如没有任何实际效果,请跳过Windows版本,并选用Linux live CD上的Scapy工具。不论是Windows主机下的虚拟机环境还是通过CD-ROM启动的方式,在GRML和BackTrack等软件中都已集成有旧版Scapy功能模块。如果您采用LiveCD的方式,则可通过前述官方链接轻松升级至最新Scipy版本。

已知错误

如果没有自动管理功能去解决这些问题,在某些情况下会遇到与平台相关的错误信息。

您可能无法在 Windows 上成功抓取无线局域网(WLAN)流量。原因可参考 Wireshark 官方文档中的相关内容以及 WinPcap 项目的FAQ资料。建议配置网络参数时,请确保已禁用混合模式conf.sniff_promisc=False
数据包有时会因为网络配置问题而无法发送至本机IP地址(即localhost)。

Winpcap/Npcap 冲突

随着Winpcap年龄的增长,建议Npcap改用。NpcapNmap项目的一部分。

这不适用于 Windows XP,它不受Npcap.

如果您的设备接收到此消息,请确认该设备已成功安装了WinPCAP和NPCI-AP版本;操作无需继续进行。'Once confirmed, please ensure the device has successfully installed the WinPCAP and NPCI-AP versions before proceeding with further operations.

您可以先从Program Files 中卸载 winpcap ,然后您需要删除:

复制代码
 C:/Windows/System32/wpcap.dll

    
 C:/Windows/System32/Packet.dll
    
    
    
    
    AI助手

如果你在 x64 机器上:

复制代码
 C:/Windows/SysWOW64/wpcap.dll

    
 C:/Windows/SysWOW64/Packet.dll
    
    
    
    
    AI助手

改为使用Npcap,因为Winpcap卸载程序不会删除这些文件。

2. 如果您收到了消息,则表明您已安装了旧版。
前往[此处](https://github.com/hsluoyz/WinDump/releases "在https://github.com/hsluoyz/WinDump/releases"上下载正确的The installed Windump version does not work with Npcap'``Windump``Winpcap)。

当遇到这种情况时,请确认系统已安装Npcap和Winpcap组件。其中该程序试图通过Winpcap进行配置。可以通过前述方式彻底清除该组件以恢复正常状态。

五、 离线构建文档

Scapy项目的文档是以reST格式(文件*.rst)的形式编写而成,并通过Sphinx Python库进行构建。其官方在线文档可以在readthedocs平台上查阅

HTML版本

构建 HTML 版本的说明是:

复制代码
 (activate a virtualenv)

    
 pip install sphinx
    
 cd doc/scapy
    
 make html
    
    
    
    
    AI助手

您可以使用命令_build/html/index.html在您的 favorite web browsers中查看生成的 HTML file。

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

复制代码
    pip install sphinx_rtd_theme
    
    AI助手

UML 图

该工具允许您生成Scapy源代码对象层次结构的UML表示图。下面展示了一个基于Fields对象进行继承关系展示的例子:

复制代码
 (activate a virtualenv)

    
 pip install pylint
    
 cd scapy/
    
 pyreverse -o png -p fields scapy/fields.py
    
    
    
    
    AI助手

该工具将自动生成classes_fields.png这一图表文件来展示其对象之间的继承关系。特别提醒:开发时请不要提供过高的模块或包数量,以免导致生成内容可能过于复杂难以理解。

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

复制代码
    pyreverse -o png -p dhcp_ans scapy/ansmachine.py scapy/layers/dhcp.py scapy/packet.py
    
    AI助手

在这种情况下,Pyreverse 也会创建一个packages_dhcp_ans.png展示提供的不同 Python 模块之间的连接关系图。

全部评论 (0)

还没有任何评论哟~