一个基于 Web 的网络流量分析工具,专门为网络安全平台提供数据包分析能力,帮助售前/售后团队根据客户真实环境的流量特征,快速完成产品选型和配置建议。
PCAP 流量分析工具是一个现代化的 Web 应用程序,提供专业的网络流量分析功能。通过上传 PCAP 文件,用户可以快速获得详细的协议分析、包长度分布、流量趋势等关键指标,为网络安全产品选型和配置提供数据支持。
- ✅ PCAP 文件上传 - 支持拖拽和点击上传 .pcap/.pcapng 文件
- ✅ 协议类型分析 - 准确识别网络层、传输层、应用层协议
- ✅ 协议分布可视化 - 饼图和表格展示协议分布
- ✅ 包长度分析 - 按预定义区间统计包长度分布
- ✅ 包长度可视化 - 柱状图和表格展示包长度分布
- ✅ 基础文件信息展示 - 文件名、大小、包数、捕获时间等
- ✅ 批量上传多个 PCAP 文件 - 支持最多 10 个文件同时上传
- ✅ 流量趋势分析 - 时间维度展示流量变化趋势
- 快速分析: 100MB PCAP 文件在 30 秒内完成分析
- 批量处理: 支持 10 个文件并行分析
- 直观可视化: 丰富的图表展示协议分布和流量趋势
- 简约 UI: 使用 TailwindCSS 实现简洁直观的界面
- 易部署: 单机部署,零外部依赖
- 智能时间聚合: 根据捕获时长自动选择合适的时间间隔
- 完整协议支持: 支持网络层、传输层、应用层协议识别
- 框架: React 18 + TypeScript
- 样式: TailwindCSS
- 图表: Recharts
- 图标: Lucide React
- 构建工具: Vite
- 框架: FastAPI (Python)
- PCAP 解析: Scapy
- 数据处理: Pandas
- 服务器: Uvicorn
- Python 3.9+
- Node.js 16+
- 克隆项目
git clone <repository-url>
cd pcap-analyzer- 使用启动脚本(推荐)
chmod +x start.sh
./start.sh- 手动启动
启动后端服务:
cd backend
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
python start.py启动前端服务:
cd frontend
npm install
npm run dev- 访问应用
- 前端应用: http://localhost:3000
- 后端 API: http://localhost:8000
- API 文档: http://localhost:8000/docs
- 点击"单文件分析"标签
- 拖拽或点击上传 PCAP 文件
- 查看分析结果:
- 文件基本信息
- 协议分布饼图和表格
- 包长度分布柱状图和表格
- 流量趋势图表
- 点击"批量分析"标签
- 拖拽或点击上传多个 PCAP 文件(最多 10 个)
- 查看文件列表和状态
- 对比不同文件的协议分布和包长度分布
.pcap- libpcap 格式.pcapng- PCAP Next Generation 格式
- 单个文件: 最大 2GB
- 批量上传: 最多 10 个文件
- IP、IPv6、ARP、ICMP
- TCP、UDP
- HTTP、HTTPS、FTP、SSH、TELNET
- SMTP、POP3、IMAP、DNS、DHCP
- SNMP、NTP
- MySQL、PostgreSQL、Oracle、MSSQL
- 端点:
POST /api/analyze - 描述: 上传并分析单个 PCAP 文件
- 请求: FormData 包含文件
- 响应: 包含文件信息、协议分布、包长度分布、时间序列数据
- 端点:
POST /api/analyze/batch - 描述: 批量上传并分析 PCAP 文件
- 请求: FormData 包含多个文件
- 响应: 包含每个文件的分析结果和状态
- 端点:
GET /health - 描述: 服务健康状态检查
{
"success": true,
"data": {
"file_info": {
"file_name": "example.pcap",
"file_size": "1.2 MB",
"total_packets": 12345,
"capture_start": "2023-10-20 10:30:00",
"capture_end": "2023-10-20 10:35:00",
"duration": "5.0 分钟"
},
"protocols": [
{
"name": "TCP",
"count": 8000,
"percentage": 64.8
}
],
"packet_lengths": [
{
"range": "0-64",
"count": 3000,
"percentage": 24.3
}
],
"protocol_lengths": {
"TCP": [
{
"range": "0-64",
"count": 1500,
"percentage": 18.8
}
]
},
"time_series": [
{
"timestamp": "2023-10-20 10:30:00",
"packets_per_second": 45.2,
"megabits_per_second": 12.5
}
]
},
"message": "分析完成"
}详细 API 文档请访问: http://localhost:8000/docs
OnLanding/
├── backend/ # 后端服务 (FastAPI)
│ ├── app/
│ │ ├── main.py # FastAPI 应用入口
│ │ ├── models.py # 数据模型和响应结构
│ │ ├── analyzer.py # PCAP 解析核心逻辑
│ │ └── api/
│ │ └── upload.py # 文件上传 API
│ ├── requirements.txt # Python 依赖
│ └── start.py # 后端启动脚本
├── frontend/ # 前端应用 (React + TypeScript)
│ ├── src/
│ │ ├── components/ # React 组件
│ │ │ ├── FileUpload.tsx # 文件上传组件
│ │ │ ├── ProtocolChart.tsx # 协议分布图表
│ │ │ ├── LengthChart.tsx # 包长度分布图表
│ │ │ ├── TrendChart.tsx # 流量趋势图表
│ │ │ ├── BatchComparison.tsx # 批量分析对比
│ │ │ └── AnalysisProgress.tsx # 分析进度组件
│ │ ├── services/ # API 服务
│ │ │ └── api.ts # API 调用封装
│ │ ├── types/ # TypeScript 类型定义
│ │ │ └── index.ts # 类型定义文件
│ │ └── App.tsx # 主应用组件
│ ├── package.json # 前端依赖
│ ├── vite.config.ts # Vite 配置
│ └── tsconfig.json # TypeScript 配置
├── uploads/ # 临时上传目录
├── exports/ # 导出文件目录
├── logs/ # 日志目录
├── start.sh # 一键启动脚本
├── test_*.py # 各种测试脚本
└── README.md
cd backend
source venv/bin/activate
python start.pycd frontend
npm run devcd frontend
npm run build- 分析速度: 100MB PCAP 文件在 30 秒内完成分析,2GB 文件在 5-10 分钟内完成
- 批量处理: 支持同时分析 10 个文件
- 内存占用: 单次分析 < 4GB,批量分析 < 6GB
- 响应时间: API 响应时间 < 500ms(不含文件解析)
- 内存优化: 使用流式处理技术,支持大文件分析
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
- 问题: 文件格式不支持
- 解决: 确保上传
.pcap或.pcapng格式的文件
- 问题: 大文件分析时间过长
- 解决: 系统会自动处理,请耐心等待或使用较小的文件
- 问题: 处理大文件时内存占用过高
- 解决: 建议使用 8GB 以上内存的机器运行,系统会自动监控内存使用
- 问题: 端口 3000 或 8000 被占用
- 解决: 停止占用端口的进程或修改配置文件中的端口设置
应用运行日志位于 logs/ 目录,可用于排查问题:
- 后端日志:
logs/backend.log - 前端日志: 浏览器开发者工具 Console
MIT License
欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建功能分支
- 提交代码变更
- 创建 Pull Request
- 后端: 遵循 PEP 8 Python 代码规范
- 前端: 使用 TypeScript 和 ESLint
- 提交信息: 使用英文描述变更内容
如有问题或建议,请通过以下方式联系:
- 提交 GitHub Issue
- 发送邮件至项目维护者
PCAP 流量分析工具 - 专业的网络流量分析解决方案