Skip to content

HEXING19/OnLanding

Repository files navigation

PCAP 流量分析选型工具

一个基于 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+

安装和启动

  1. 克隆项目
git clone <repository-url>
cd pcap-analyzer
  1. 使用启动脚本(推荐)
chmod +x start.sh
./start.sh
  1. 手动启动

启动后端服务:

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
  1. 访问应用

使用说明

单文件分析

  1. 点击"单文件分析"标签
  2. 拖拽或点击上传 PCAP 文件
  3. 查看分析结果:
    • 文件基本信息
    • 协议分布饼图和表格
    • 包长度分布柱状图和表格
    • 流量趋势图表

批量分析

  1. 点击"批量分析"标签
  2. 拖拽或点击上传多个 PCAP 文件(最多 10 个)
  3. 查看文件列表和状态
  4. 对比不同文件的协议分布和包长度分布

支持的文件格式

  • .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

API 接口

主要接口

单文件分析

  • 端点: 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.py

前端开发

cd frontend
npm run dev

构建生产版本

cd frontend
npm run build

性能指标

  • 分析速度: 100MB PCAP 文件在 30 秒内完成分析,2GB 文件在 5-10 分钟内完成
  • 批量处理: 支持同时分析 10 个文件
  • 内存占用: 单次分析 < 4GB,批量分析 < 6GB
  • 响应时间: API 响应时间 < 500ms(不含文件解析)
  • 内存优化: 使用流式处理技术,支持大文件分析

浏览器兼容性

  • Chrome 90+
  • Firefox 88+
  • Safari 14+
  • Edge 90+

故障排除

常见问题

1. 文件上传失败

  • 问题: 文件格式不支持
  • 解决: 确保上传 .pcap.pcapng 格式的文件

2. 分析超时

  • 问题: 大文件分析时间过长
  • 解决: 系统会自动处理,请耐心等待或使用较小的文件

3. 内存不足

  • 问题: 处理大文件时内存占用过高
  • 解决: 建议使用 8GB 以上内存的机器运行,系统会自动监控内存使用

4. 端口占用

  • 问题: 端口 3000 或 8000 被占用
  • 解决: 停止占用端口的进程或修改配置文件中的端口设置

日志查看

应用运行日志位于 logs/ 目录,可用于排查问题:

  • 后端日志: logs/backend.log
  • 前端日志: 浏览器开发者工具 Console

许可证

MIT License

贡献

欢迎提交 Issue 和 Pull Request!

开发流程

  1. Fork 项目
  2. 创建功能分支
  3. 提交代码变更
  4. 创建 Pull Request

代码规范

  • 后端: 遵循 PEP 8 Python 代码规范
  • 前端: 使用 TypeScript 和 ESLint
  • 提交信息: 使用英文描述变更内容

联系方式

如有问题或建议,请通过以下方式联系:

  • 提交 GitHub Issue
  • 发送邮件至项目维护者

PCAP 流量分析工具 - 专业的网络流量分析解决方案

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors