scapy使用
https://scapy.readthedocs.io/en/latest/introduction.html
在 Mac 上使用 Scapy 抓取特定 IP 的流量并保存到 a.pcap
的步骤如下:
步骤 1:安装 Scapy
在终端中执行以下命令安装:
pip install scapy
步骤 2:创建 Python 脚本
将以下代码保存为 capture.py
,替换 192.168.1.100
为目标 IP:
from scapy.all import *
# 抓包配置
target_ip = "192.168.1.100" # 替换为目标IP
interface = "en0" # Mac常用网卡(ifconfig查看)
timeout = 30 # 抓包时长(秒)
# 抓取特定IP的流量
packets = sniff(
filter=f"host {target_ip}", # BPF过滤器
iface=interface,
timeout=timeout,
store=True
)
# 保存到文件
wrpcap("a.pcap", packets)
print(f"已捕获 {len(packets)} 个数据包,保存到 a.pcap")
步骤 3:赋予权限并运行脚本
Scapy 需要 root 权限访问网卡,使用 sudo
运行:
sudo python3 capture.py
高级配置(可选)
-
实时写入:大量数据时逐包写入(可能影响性能):
def save_packet(pkt): wrpcap("a.pcap", pkt, append=True) sniff(prn=save_packet, filter="host 192.168.1.100", iface="en0")
-
持续抓包:去掉
timeout
按Ctrl+C
停止:packets = sniff(filter="host 192.168.1.100", iface="en0")
验证结果
用 Wireshark 或 tcpdump -r a.pcap
检查文件内容。