基于 Python 的交互式数据包操作库,用于在多种协议中伪造、解码、发送、捕获和分析网络数据包,支持扫描、路由追踪、攻击和网络发现。
ScapyScapy 是一个基于 Python 的强大交互式数据包操作程序与库。
它能够伪造或解码大量协议的数据包,在网络上发送、捕获,使用 pcap 文件存储或读取,匹配请求与回复,以及更多功能。它设计为通过使用可工作的默认值来实现快速数据包原型开发。
它可以轻松处理大多数经典任务,例如扫描、路由追踪、探测、单元测试、攻击或网络发现(它可以替代 hping、85% 的 nmap、arpspoof、arp-sk、arping、tcpdump、wireshark、p0f 等)。它还在许多其他特定任务中表现出色,而这些任务大多数其他工具无法处理,例如发送无效帧、注入自定义的 802.11 帧、组合技术(VLAN 跳跃 + ARP 缓存中毒、WEP 保护通道上的 VoIP 解码等)。
Scapy 支持 Python 3.7 及以上版本。它旨在跨平台运行,支持多种不同平台(Linux、OSX、*BSD 和 Windows)。
Scapy 既可以作为Shell使用,也可以作为库使用。更多详情,请参考 Scapy 入门指南,该内容属于文档的一部分。
Scapy 可以很容易地用作交互式 Shell 来与网络交互。以下示例展示了如何向 github.com 发送 ICMP 回显请求消息,然后显示回复源 IP 地址:
sudo ./run_scapy
Welcome to Scapy
>>> p = IP(dst="github.com")/ICMP()
>>> r = sr1(p)
Begin emission:
.Finished to send 1 packets.
*
Received 2 packets, got 1 answers, remaining 0 packets
>>> r[IP].src
'192.30.253.113'
文档 包含更高级的用例和示例。
其他有用资源:
Scapy 在 Linux 和 BSD 类操作系统上无需任何外部 Python 模块即可工作。在 Windows 上,你需要安装一些必需的依赖项,如文档所述。
在大多数系统上,使用 Scapy 只需运行以下命令:
git clone https://github.com/secdev/scapy
cd scapy
./run_scapy
要利用所有 Scapy 功能(例如绘图),你可能需要安装 Python 模块,例如 matplotlib 或 cryptography。请参阅文档并按照说明安装它们。
Scapy 的代码、测试和工具采用 GPL v2 许可证。
文档(除非 doc/ 中另有说明,以及标志除外)采用 CC BY-NC-SA 2.5 许可证。
想要贡献?太棒了!请花几分钟阅读此文档!