Scapy,网络数据包的瑞士军刀
Scapy,网络数据包的瑞士军刀
Scapy 在 GitHub 上有 12,391 Star。
这是一个 Python 写的网络数据包处理库,能做的事情很直接:构造数据包、解码数据包、发送数据包、抓包、匹配请求和响应。基本上网络层能干的事,它都能插一脚。

1、 它能替代哪些工具
Scapy 能覆盖大部分传统网络工具的功能:hping、nmap 大约 85% 的扫描能力、arpspoof、arp-sk、arping、tcpdump、wireshark、p0f。
一个工具顶一堆,不用在不同软件之间来回切换。
2、 它擅长什么
常规的扫描、traceroute、网络探测这些它都能做。真正拉开差距的是那些其他工具搞不定的场景:发送畸形帧、注入自定义 802.11 帧、组合多种技术(VLAN 跳跃配合 ARP 缓存投毒、在 WEP 保护的信道上解码 VoIP)。
做安全测试和协议研究的人,碰到这些需求基本只能靠它。
3、 怎么用
Scapy 有两种用法:交互式 Shell 和 Python 库。
Shell 模式可以直接在终端里操作网络。比如发一个 ICMP 请求然后看响应:
sudo ./run_scapy
Welcome to Scapy
>>> p = IP(dst="github.com")/ICMP()
>>> r = sr1(p)
>>> r[IP].src
'192.30.253.113'
数据包用 / 运算符叠加协议层,写法直觉化。构造一个 TCP SYN 包就是 IP(dst="target")/TCP(dport=80, flags="S"),一行搞定。
库模式就是在 Python 脚本里 import 使用,适合写自动化测试和批量任务。
4、 安装
Linux 和 BSD 上不需要额外依赖,直接 clone 就能跑:
git clone https://github.com/secdev/scapy
cd scapy
./run_scapy
Windows 需要装一些依赖,文档里有说明。想用绘图功能的话,装上 matplotlib 和 cryptography。
支持 Python 3.7 以上,跨平台:Linux、macOS、BSD、Windows 都能跑。
5、 谁适合用
做网络安全的人,日常需要扫描、嗅探、做渗透测试。写协议解析的人,要快速构造各种格式的数据包验证逻辑。搞网络教学的人,用交互式 Shell 演示协议原理比 PPT 直观。
它不是那种开箱即用的图形化工具,上手需要一定网络基础。但一旦熟悉了,处理网络任务的效率会高很多。

了,处理网络任务的效率会高很多。
[外链图片转存中…(img-XP9Pd2tK-1782893848342)]
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)