dougburks/ohmypcap
GitHub: dougburks/ohmypcap
一个基于 Suricata 的独立 Web 应用,提供 PCAP 文件上传解析、安全告警查看、网络元数据浏览和单流提取的一站式离线流量分析能力。
Stars: 138 | Forks: 12
# OhMyPCAP
一个独立的 Web 应用程序,用于使用 Suricata 分析 PCAP 文件。查看安全警报,浏览网络元数据(DNS、HTTP、TLS、flows),提取 ASCII 记录,并提取单个流——所有这些都可以在单页 UI 中完成。
## 截图
欢迎屏幕允许您上传 PCAP 文件或加载以前的分析:

分析完成后,您可以查看安全警报、网络元数据并提取流:

## 快速演示
体验 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分析, 会话恢复, 单页应用, 在线演示, 威胁检测, 安全分析平台, 安全告警, 安全运维, 安全防御评估, 数据包抓取, 数据可视化, 流量可视化, 流量审查, 流量监控, 现代安全运营, 网络元数据, 网络安全工具, 网络流提取, 网络流量分析, 请求拦截