Scapy,网络数据包的瑞士军刀
文章目录
- Scapy,网络数据包的瑞士军刀
- 1、 它能替代哪些工具
- 2、 它擅长什么
- 3、 怎么用
- 4、 安装
- 5、 谁适合用
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 就能跑:
gitclone https://github.com/secdev/scapycdscapy ./run_scapyWindows 需要装一些依赖,文档里有说明。想用绘图功能的话,装上 matplotlib 和 cryptography。
支持 Python 3.7 以上,跨平台:Linux、macOS、BSD、Windows 都能跑。
5、 谁适合用
做网络安全的人,日常需要扫描、嗅探、做渗透测试。写协议解析的人,要快速构造各种格式的数据包验证逻辑。搞网络教学的人,用交互式 Shell 演示协议原理比 PPT 直观。
它不是那种开箱即用的图形化工具,上手需要一定网络基础。但一旦熟悉了,处理网络任务的效率会高很多。
了,处理网络任务的效率会高很多。
[外链图片转存中…(img-XP9Pd2tK-1782893848342)]
