PacMap 是一个以图为首的网络流量可视化工具,支持实时捕获和 PCAP 回放,帮助您查看发生了什么变化、哪些是噪声以及下一步应检查什么。
可以将其视为网络行为的 Git:快照、差异比较并以可视方式回放网络状态。

PacMap 支持两种工作流程:
.pcap 或 .pcapng 文件,并回放随时间变化的报文流。从仓库根目录:
python3 -m venv venv
source venv/bin/activate
pip install websockets scapy
npm install --prefix client
在 Windows 上,使用普通的 Python 工作流程创建并激活 venv,然后安装相同的软件包。Windows 上的数据包捕获需要 Npcap。
从仓库根目录启动 PacMap:
npm start -- --iface en0
常见接口示例:
en0eth0wlan0打开:
http://127.0.0.1:5176
然后使用控制面板启动实时捕获。
原始数据包捕获通常需要提升的本地权限。在 macOS/Linux 上:
sudo npm start -- --iface en0
在 Windows 上,以管理员身份运行终端。
打开 Web 应用,将源切换为 PCAP 回放,并上传一个 .pcap 或 .pcapng 文件。然后使用:
回放在浏览器中运行,无需 Python 捕获服务器运行。
回放包含用于对话、端点、协议分解、名称解析和 I/O 时间线活动的调查面板。
文件限制:100 MB 和 100,000 个数据包。不受支持的帧将被跳过,并在 UI 中计数。
当前回放支持:
.pcap 和基本 .pcapng实时捕获和回放都支持类似 Wireshark 的显示过滤器栏。输入过滤器并按 Enter 应用;清除字段并按 Enter 移除。
支持的语法:
tcp udp dns http arp
ip.addr == 192.168.1.10
ip.src == 10.0.0.1
ip.dst == 8.8.8.8
tcp.port == 443
udp.port == 53
port == 80
ip.src == 10.0.0.1 && ip.dst == 8.8.8.8
复合过滤器 (&&) 组合两个字段过滤器。应用过滤器将图缩小到匹配的节点和边;清除过滤器则恢复当前捕获窗口的完整视图。
复合过滤器 ip.src == X && ip.dst == Y 会激活路径追踪。PacMap 在整个捕获上运行 BFS 以查找两个端点之间的跃点链。控制面板下方出现一个面板,显示每个跃点的逐边数据包和字节计数,中间节点在图中高亮显示。
检查点在某个时间点快照当前网络状态 — 节点、边、流量体积。
检查点保存在 localStorage 的 pacmap_checkpoints 下(最多 50 条)。
浏览器无法嗅探主机网络流量或直接启动特权数据包捕获。PacMap 使用带有 Scapy 的本地 Python WebSocket 助手进行实时捕获,然后将数据包摘要流式传输到 React 应用:
ws://127.0.0.1:8765
PCAP 回放不同:浏览器读取上传的文件并重用相同的图形可视化,无需实时数据包访问。
仅前端:
cd client
npm install
npm run dev
生产构建:
npm run build
仅捕获服务器:
source venv/bin/activate
python3 server.py --iface en0
server.py 未运行或 WebSocket 端口不可用。ping 8.8.8.8、DNS 查询或其他网络活动生成流量。