dougburks/ohmypcap

GitHub: dougburks/ohmypcap

一个基于 Suricata 的独立 Web 应用,提供 PCAP 文件上传解析、安全告警查看、网络元数据浏览和单流提取的一站式离线流量分析能力。

Stars: 138 | Forks: 12

# OhMyPCAP 一个独立的 Web 应用程序,用于使用 Suricata 分析 PCAP 文件。查看安全警报,浏览网络元数据(DNS、HTTP、TLS、flows),提取 ASCII 记录,并提取单个流——所有这些都可以在单页 UI 中完成。 ## 截图 欢迎屏幕允许您上传 PCAP 文件或加载以前的分析: ![欢迎屏幕](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/899eae6bb6093531.png) 分析完成后,您可以查看安全警报、网络元数据并提取流: ![分析屏幕](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/23ce438758093532.png) ## 快速演示 体验 OhMyPCAP 最快的方式是使用我们的在线演示: https://securityonion.net/pcap 请注意以下几点: - 这是一个基于云的服务,因此请不要分享任何敏感的 PCAP 文件或任何其他敏感信息 - 免费账户限制使用 60 分钟,之后实例将自动终止 - 如果您需要一个私有或永久的 OhMyPCAP 实例,您可以继续阅读下一节,在本地安装 OhMyPCAP ## 快速安装 对于私有或永久的 OhMyPCAP 实例,大多数用户会希望使用我们预构建的 Docker 镜像。如果您不想使用我们预构建的 Docker 镜像,还有其他选项如[下方](#build-your-own-docker-image)所示。 ### 在 OhMyDebn 上快速安装 如果您运行的是最新版本的 [OhMyDebn](https://ohmydebn.org),只需按下 `Ctrl + Alt + P` 即可自动安装并运行 OhMyPCAP,然后您可以跳到下面的用法部分。 ### 使用 docker run 快速安装 如果您没有运行 OhMyDebn,以下是在 Debian 13 或兼容发行版上使用“docker run”安装和运行 OhMyPCAP 的步骤: ``` # 安装和配置 docker.io sudo apt update && sudo apt -y install docker.io && sudo usermod -aG docker $USER # 创建 data 目录 mkdir -p ~/ohmypcap-data # 启动 OhMyPCAP newgrp docker -c "docker run -v ~/ohmypcap-data:/data -p 8000:8000 ghcr.io/dougburks/ohmypcap:main" ``` OhMyPCAP 将更新其 NIDS 规则,然后提示您在浏览器中打开 http://localhost:8000/ohmypcap.html。 要停止,只需在运行 OhMyPCAP 的终端窗口中按下 Ctrl-C,或直接关闭终端窗口。 ### 使用 docker compose 快速安装 如果您更喜欢使用“docker compose”,以下是在 Debian 13 或兼容发行版上可以使用的步骤: ``` # 安装和配置 docker.io 和 docker-compose sudo apt update && sudo apt -y install docker.io docker-compose && sudo usermod -aG docker $USER # 下载 docker-compose.yml wget https://raw.githubusercontent.com/dougburks/ohmypcap/refs/heads/main/docker-compose.yml # 创建 data 目录 mkdir -p ohmypcap-data # 启动 OhMyPCAP (如果需要,添加 -d 选项以在后台运行) newgrp docker -c "docker compose up" ``` OhMyPCAP 初始化完成后,您可以在浏览器中连接到 http://localhost:8000/ohmypcap.html。 停止: ``` docker compose down ``` 重启: ``` docker compose restart ``` ## 用法 在浏览器中连接到 OhMyPCAP 后,您可以执行以下操作。 ### 分析 PCAP 1. **上传文件** — 点击“Choose File”并选择一个 `.pcap`、`.pcapng`、`.cap` 或 `.trace` 文件(或包含其中一种文件的 `.zip`) 2. **从 URL 加载** — 粘贴指向 PCAP 文件的 URL 并点击“Load from URL”。来自 `malware-traffic-analysis.net` 的受密码保护的 zip 文件会使用基于日期的密码格式自动解密 3. **重新打开以前的分析** — 以前分析过的 PCAP 会列在欢迎屏幕上 ### 浏览结果 Suricata 处理完成后,UI 将显示: - **统计网格** — 可点击的卡片,按类型显示事件计数(Alerts、DNS、HTTP、TLS、Flows 等) - **数据表格** — 可排序的表格,带有可展开的详细行,显示完整的事件 JSON 和 ASCII 记录 - **聚合表** —(高级模式)每列的频率计数;点击一个值即可进行过滤 - **过滤** — 通过点击聚合值来应用过滤器;过滤标签显示当前活动的过滤器;过滤器在所有标签页中保持有效 ### 高级模式 切换右上角的“Advanced”开关以启用: - 显示每列前 10 个值的聚合表 - 带有过滤标签的内联过滤栏 - 跨标签页的过滤持久性 ### 流分析 点击数据表中的任意行将其展开,然后可以: - **ASCII 记录** — 将解码后的 TCP/UDP 负载视为可读文本 - **下载 PCAP** — 将该特定流提取为一个独立的 `.pcap` 文件 ## 数据存储 所有分析过的 PCAP 都存储在 `~/ohmypcap-data/` 中。每次分析都会获得一个以其 MD5 哈希值命名的子目录,其中包含: ``` ~/ohmypcap-data// .pcap # The uploaded PCAP eve.json # Suricata's JSON output events.db # SQLite index (auto-created after analysis) name.txt # Human-readable display name ``` ## 构建您自己的 Docker 镜像 如果您想构建自己的 Docker 镜像,可以克隆此 github 仓库,然后构建该镜像: ``` git clone https://github.com/dougburks/ohmypcap cd ohmypcap docker build -t ohmypcap . mkdir -p ~/ohmypcap-data docker run -v ~/ohmypcap-data:/data -p 8000:8000 ohmypcap ``` 然后在浏览器中打开 http://localhost:8000/ohmypcap.html。 ## 在不使用 Docker 的情况下运行 如果您希望在不使用 docker 的情况下运行,则需要以下先决条件: - **Python 3**(仅限标准库——不需要 pip 包) - **Suricata** — 用于 PCAP 分析和基于规则的警报 - **suricata-update** — 用于下载/更新 Suricata 规则 - **tcpdump** — 用于流提取 (`/api/download-stream`) - **tshark** — 用于 ASCII 记录提取 (`/api/ascii-stream`) 一旦具备了先决条件,您就可以克隆此 github 仓库并运行服务器: ``` python3 ohmypcap.py ``` 然后在浏览器中打开 http://localhost:8000/ohmypcap.html。 ### 环境变量 | 变量 | 默认值 | 描述 | |---|---|---| | `DATA_DIR` | `~/ohmypcap-data` | 用于已分析的 PCAP 和 Suricata 配置的目录 | | `BIND_ADDRESS` | `127.0.0.1` | HTTP 服务器绑定的地址 | | `PORT` | `8000` | HTTP 服务器端口 | ## 配置 | 常量 | 默认值 | 描述 | |---|---|---| | `PORT` | `8000` | HTTP 服务器端口 | | `BASE_DIR` | `~/ohmypcap-data` | 已分析 PCAP 的根目录 | | `MAX_UPLOAD_SIZE` | `1000 MB` | PCAP 最大上传大小 | | `MAX_EVE_SIZE` | `1000 MB` | 最大 eve.json 大小 | | `MAX_TRANSCRIPT_SIZE` | `100,000 chars` | 最大 ASCII 记录长度 | Suricata 配置在首次运行时从 `/etc/suricata/` 自动生成。如果不存在规则,将通过 `suricata-update` 下载。 ## 安全 - 仅绑定到 `127.0.0.1`(无外部访问) - 无 CORS 通配符 - 对所有端点进行输入验证(IP、端口、MD5、路径遍历) - PCAP 幻数(magic byte)验证(拒绝非 PCAP 上传) - URL 安全检查(阻止 localhost、私有 IP,并解析主机名) - 在提取存档时防止 Zip-slip(Zip slip 漏洞) - 通用错误消息(不泄露内部细节) ## 架构 有关各个部分如何组合的详细概述,请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 有关完整的 API 参考,请参阅 [docs/API.md](docs/API.md)。 有关过滤系统的详细信息,请参阅 [docs/FILTERING.md](docs/FILTERING.md)。 ## 测试 ``` # Server 测试 python3 -m unittest test_server -v # UI 测试 python3 -m unittest test_ui -v # 所有测试 python3 -m unittest discover -v ``` ## 许可证 请参阅 [LICENSE](LICENSE)
标签:AMSI绕过, ASCII转录, DNS分析, DNS枚举, Docker, HTTP分析, Metaprompt, PB级数据处理, PCAP分析, Suricata, TLS分析, 会话恢复, 单页应用, 在线演示, 威胁检测, 安全分析平台, 安全告警, 安全运维, 安全防御评估, 数据包抓取, 数据可视化, 流量可视化, 流量审查, 流量监控, 现代安全运营, 网络元数据, 网络安全工具, 网络流提取, 网络流量分析, 请求拦截