当前位置:首页>python>Python:Scapy 网络交互与安全的工具库

Python:Scapy 网络交互与安全的工具库

  • 2026-10-11 17:26:49
Python:Scapy 网络交互与安全的工具库

🌐  1、简述

Scapy 是一个强大的 Python 网络交互与安全工具库,它允许你:

  • 抓取和解析网络数据包
  • 构造和发送自定义网络包
  • 支持数百种协议(IP、TCP、UDP、ICMP、ARP、DNS、HTTP 等)
  • 可进行网络扫描、路由追踪、入侵检测、协议 fuzz 测试
  • 可替代部分 tcpdump、nmap 等工具的功能

一句话总结:

★

Scapy = Python 写的 tcpdump + nmap + Wireshark + 自定义注入工具


2、安装方法

pip install scapy

推荐在 Linux/macOS 使用,因为 Scapy 涉及底层网络操作,可能需要管理员权限(Windows 支持有限)。

核心功能

功能
描述
📡 抓包
捕获并分析数据包(类似 Wireshark)
✉️ 构造/发送包
自定义任意协议数据包并发送
🌍 网络扫描
ARP 扫描、端口扫描、DNS 探测
🧭 Traceroute
实现路由追踪
🔍 协议分析
支持解析 IP/TCP/UDP/ICMP/ARP/DNS/HTTP 等

3、实践样例

1️⃣ 抓取数据包

from scapy.all import sniff

defpacket_callback(packet):
    print(packet.summary())

# 抓取 5 个数据包
packets = sniff(count=5, prn=packet_callback)

2️⃣ 构造并发送 ICMP Ping 包

from scapy.all import IP, ICMP, sr1

packet = IP(dst="8.8.8.8")/ICMP()
reply = sr1(packet, timeout=2)

if reply:
    print(f"收到回应: {reply.src}")
else:
    print("无回应")

3️⃣ ARP 扫描局域网

from scapy.all import ARP, Ether, srp

target = "192.168.1.0/24"
arp = ARP(pdst=target)
ether = Ether(dst="ff:ff:ff:ff:ff:ff")
packet = ether/arp

result = srp(packet, timeout=2, verbose=0)[0]

print("局域网主机:")
for sent, received in result:
    print(f"IP: {received.psrc}, MAC: {received.hwsrc}")

4️⃣ Traceroute 路由追踪

from scapy.all import traceroute

res, unans = traceroute(["8.8.8.8"], maxttl=20)
res.show()

5️⃣ DNS 查询

from scapy.all import IP, UDP, DNS, DNSQR, sr1

query = IP(dst="8.8.8.8")/UDP(dport=53)/DNS(rd=1, qd=DNSQR(qname="www.google.com"))
response = sr1(query, verbose=0)

print(response[DNS].summary())

6️⃣ 简单的 TCP 端口扫描

from scapy.all import IP, TCP, sr1

target = "scanme.nmap.org"
ports = [22, 80, 443]

for port in ports:
    pkt = IP(dst=target)/TCP(dport=port, flags="S")
    resp = sr1(pkt, timeout=1, verbose=0)
if resp and resp.haslayer(TCP) and resp.getlayer(TCP).flags == 0x12:
        print(f"端口 {port} 开放")
else:
        print(f"端口 {port} 关闭/过滤")

4、实际应用场景

  • 🕵️ 安全研究:协议逆向、漏洞利用原型、入侵检测
  • 🛜 网络排错:快速测试 TCP/UDP 连通性
  • 📡 渗透测试:扫描端口、ARP 欺骗、中间人攻击演示
  • 🧪 协议 Fuzz:自动化构造异常数据包,测试防火墙/服务稳定性
  • 🖥️ 教学演示:展示 TCP 握手、ARP 通信等网络原理

Scapy vs 其他工具

工具
特点
tcpdump
专注抓包,分析能力有限
Wireshark
可视化抓包分析,但构造包能力弱
nmap
功能强大,但难以高度自定义
Scapy
灵活可编程,可抓包、发包、扫描、分析,一体化

5、总结

  • Scapy 是网络安全与协议分析领域的瑞士军刀
  • 它不仅能替代部分 nmap、tcpdump 功能,还能自定义构造协议包,灵活性极高
  • 适用于 安全研究、渗透测试、教学演示、网络诊断 等多种场景

📚 参考资料

  • 官方网站:https://scapy.net/
  • 官方文档:https://scapy.readthedocs.io/
  • GitHub 项目:https://github.com/secdev/scapy

最新文章

随机文章