srixivas/PcapXray

GitHub: srixivas/PcapXray

一款离线网络取证工具,通过将 PCAP 文件可视化为网络拓扑图来加速流量调查分析过程。

Stars: 1849 | Forks: 290

# PcapXray [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/39bc304a33162718.svg)](https://github.com/srixivas/PcapXray/actions/workflows/test.yml) [![codecov](https://codecov.io/gh/srixivas/PcapXray/branch/master/graph/badge.svg)](https://codecov.io/gh/srixivas/PcapXray) [![defcon27](https://img.shields.io/badge/defcon27-demolabs-blue)](https://www.defcon.org/html/defcon-27/dc-27-demolabs.html#PcapXray) ``` A Network Forensics Tool - To visualize a Packet Capture offline as a Network Diagram including device identification, highlight important communication and file extraction ``` ![PcapXray](logo.png "PcapXray") ## PcapXray 设计规范 Wiki 提供了更多帮助。 ### 目标: 给定一个 Pcap 文件,绘制一个网络拓扑图,显示网络中的主机、网络流量,突出显示重要流量和 Tor 流量,以及潜在的恶意流量(包括通信中涉及的数据)。 ### 问题: * 鉴于调查初期的卡顿,Pcap 文件的调查需要花费大量时间 * 每一位取证调查员和任何分析网络的人都会面临这个问题 * 位置: https://github.com/srixivas/PcapXray ### 解决方案: 加快调查过程 * 根据 Pcap 文件制作具有以下特征的网络拓扑图 工具亮点: * 网络拓扑图 – 完整网络的摘要拓扑图 * 信息: * 包含服务器详细信息的 Web 流量 * Tor 流量 * 潜在的恶意流量 * 报告中从数据包获取的数据 – 设备/流量/Payload * 设备详细信息 ### 工具截图: ![Screen 1](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/7b0792175e162719.png) ![Screen 2](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/94b62d4bb5162720.png) ### 组件: * 网络拓扑图 * 设备/流量详情与分析 * 恶意流量识别 * Tor 流量 * GUI – 提供上传 pcap 文件并显示网络拓扑图选项的图形用户界面 ### 安装设置 * Python 3 ``` apt install python3-pip apt install python3-tk apt install graphviz apt install python3-pil python3-pil.imagetk pip3 install -r requirements.txt python3 Source/main.py ``` (请确保提升权限以允许创建文件 - 使用 `sudo` 运行) 对于 MAC: ``` brew install graphviz ``` * Python 2 ``` apt install python-tk apt install graphviz pip install -r requirements.txt python Source/main.py ``` (请确保提升权限以允许创建文件 - 使用 `sudo` 运行) ### 使用的 Python 库: - 以下所有库均为实现功能所必需 * Tkinter 和 TTK – 通过 pip 或 apt-get 安装 – 确保已安装 Tkinter 和 graphviz(大多数 Linux 默认包含) * apt install python-tk * apt install graphviz * apt install python3-tk (用于 python3 支持) * 在 python3 环境中有时会抛出 ImageTk 错误 --> 使用 apt install python3-pil python3-pil.imagetk * 所有这些均已包含在 requirements.txt 文件中 * Scapy – rdpcap,用于从 pcap 文件中读取数据包 * Ipwhois – 用于从 IP 获取 whois 信息 * Netaddr – 用于检查 IP 信息类型 * Pillow – 图像处理库 * Stem – Tor 共识数据获取库 * pyGraphviz – 绘制图形 * Networkx – 绘制图形 * Matplotlib – 绘制图形(目前未使用) ### 演示 ![Demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/00929b58af162721.gif) ### 入门指南: * 克隆该代码库 * pip install -r requirements.txt * python Source/main.py ### 附加信息: * 已在 Linux 上测试 * 流量选项包括 - Web (HTTP 和 HTTPS), Tor, 恶意流量, ICMP, DNS ### 挑战: * TK GUI 的不稳定性: * 在 Django 和 TK 之间决定 GUI 时,为了实现简单的本地界面最终选择了 TK,但 TK GUI 的不稳定性导致了诸多问题 * 图形绘制: * 从获取的数据中绘制出可读性强的合适网络拓扑图颇费了一番功夫,尝试使用了多种库才最终实现。 * 性能与时间: * 由于涉及各种数据收集和输出生成,整个应用程序的性能和耗时是一个巨大的挑战 ### 已知缺陷: * 内存占用过高 * 当系统 RAM 较低时,有时会出现内存占用过高的情况,因为内存中存储的 pcap 文件数据量非常庞大 * 应通过将数据迁移到数据库而非直接存入内存来解决 * 竞态条件 * 由于 TK GUI 的 mainloop 机制,其他线程可能会发生竞态条件 * 应通过迁移到结构更良好的 TK 实现或 Web GUI 来解决 * TK GUI 不稳定性: * 原因同上 * 代码: * 代码结构臃肿且缺乏条理 * 目前的临时修复方案:在极少数情况下,如果发生上述任何问题,进度条会一直转圈且无法生成输出,此时需要重启应用程序。 ### PcapXray 的 Docker 容器 * 位于根目录中的 Dockerfile 用于构建镜像 * 已构建好的 Docker 镜像可在 dockerhub 上找到 - srinivas11789/pcapxray-1.0 - srinivas11789/pcapxray-2.2 * 手动执行 `run.sh` 文件中的步骤即可通过 docker 启动该工具(如有错误我可以提供帮助) * 运行 `run.sh` 脚本是一种自动化尝试(无法保证 100% 成功运行) - 已在 mac 和 linux 上测试 - 很快会做得更好!... ### 近期未来任务: (目标: 3.0) - 清理代码(将代码库从原型状态进行优化重构) - 为数据包捕获的所有资产生成存放在独立文件夹中的报告 - 可疑活动检测 - 支持更多 pcap 读取引擎 - 流量支持: ICMP, DNS * 已知文件类型检测与提取 - Python2 和 Python3 - 交互式地图 ### 未来规划: * 结构化且清晰的代码流程 * 由于内存占用过高,将数据库从 JSON 更改为 sqlite 或主流数据库 * 将前端更改为基于 Web 的框架,例如 Django * 提升应用程序的稳定性 * 支持更多协议 * 清理代码 ### 致谢: * 感谢你们让其变得更好, - Marc Budofsky 教授 - Kevin Gallagher * 感谢所有使用到的依赖库 * Logo 使用 logomakr.com 和 www.inkscape.org 制作 ## ***一切为了安全的乐趣!***
标签:DefCon, Graphviz, IP 地址批量处理, PCAP分析, Python3, Tkinter, Tor流量分析, 图形界面, 安全分析工具, 恶意流量检测, 数字取证, 文件提取, 流量可视化, 流量审查, 离线分析, 网络安全, 网络拓扑图, 自动化脚本, 设备识别, 请求拦截, 逆向工具, 隐私保护