mayank02raj/Network-Traffic-Anomaly-Visualizer
GitHub: mayank02raj/Network-Traffic-Anomaly-Visualizer
一个基于统计与熵方法的网络流量异常实时检测与可视化工具,帮助用户快速发现可疑流量模式。
Stars: 0 | Forks: 0
# 网络流量异常可视化工具
一个用于捕获网络流量、使用统计方法和基于熵的方法检测异常并生成交互式仪表盘的 Python 工具。为需要快速查看流量模式而无需部署完整 SIEM 的安全分析师和研究人员而构建。




## 功能
- 实时数据包捕获或离线 `.pcap` / `.pcapng` 分析
- 流级特征提取:包速率、字节体积、协议分布、端口熵、TCP 标志比例
- 双重异常检测:Z 分数(参数法)+ IQR(非参数法),带可配置阈值
- 基于 Shannon 熵的源 IP 端口扫描检测
- 交互式 HTML 仪表盘(Plotly),带异常叠加和详细提示
- 结构化 JSON 输出,便于流水线集成
- 流式模式,支持长时间捕获并定期刷新
- 全类型注解,代码覆盖率 90%+
## 架构
```
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Capture │────▶│ Feature │────▶│ Anomaly │────▶│ Visualizer │
│ Engine │ │ Extractor │ │ Detector │ │ Dashboard │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
scapy/pcap flow windows z-score/IQR plotly/html
entropy calc port scan det. JSON export
```
## 快速开始
```
# clone 并安装
git clone https://github.com/yourusername/network-traffic-anomaly-visualizer.git
cd network-traffic-anomaly-visualizer
pip install -e ".[dev]"
# 分析 pcap 文件
python -m net_anomaly --pcap samples/test_capture.pcap
# 实时捕获(需要 root/admin)
sudo python -m net_anomaly --interface eth0 --duration 120
# 带周期性仪表板更新的流模式
sudo python -m net_anomaly --interface eth0 --stream --flush-interval 30
# 仅从之前结果重新生成仪表板
python -m net_anomaly --load-json output/results_2026-04-10.json --dashboard-only
```
### Docker
```
docker build -t net-anomaly .
docker run --rm --net=host -v $(pwd)/output:/app/output net-anomaly --interface eth0 --duration 60
# 或分析本地 pcap
docker run --rm -v $(pwd)/samples:/app/samples -v $(pwd)/output:/app/output \
net-anomaly --pcap samples/capture.pcap
```
## 配置
所有阈值均可通过 CLI 参数或 `config.py` 配置:
| 参数 | 默认值 | 描述 |
|------|--------|------|
| `--zscore` | 2.8 | 标记异常的 Z 分数阈值 |
| `--iqr-multiplier` | 1.5 | 异常检测的 IQR 倍数 |
| `--window` | 10 | 聚合窗口大小(秒) |
| `--min-datapoints` | 5 | 检测开始前的最小窗口数 |
| `--port-entropy-threshold` | 3.5 | 每源端口熵扫描阈值 |
## 测试
```
# 运行所有测试
pytest
# 带覆盖率
pytest --cov=net_anomaly --cov-report=term-missing
# 特定测试模块
pytest tests/test_detector.py -v
```
## 项目结构
```
├── net_anomaly/
│ ├── __init__.py
│ ├── __main__.py # Entry point
│ ├── cli.py # Argument parsing
│ ├── config.py # Defaults and settings
│ ├── exceptions.py # Custom exception hierarchy
│ ├── capture.py # Packet capture & pcap reading
│ ├── models.py # Data classes (PacketInfo, WindowFeatures, etc.)
│ ├── feature_extractor.py # Flow feature computation
│ ├── detector.py # Anomaly detection algorithms
│ ├── visualizer.py # Dashboard generation
│ └── utils.py # Shared helpers
├── tests/
│ ├── conftest.py # Shared fixtures
│ ├── test_capture.py
│ ├── test_feature_extractor.py
│ ├── test_detector.py
│ ├── test_visualizer.py
│ └── test_utils.py
├── pyproject.toml
├── Dockerfile
├── .github/workflows/ci.yml
└── .pre-commit-config.yaml
```
## 限制
- 在高吞吐链路(>1 Gbps)上的实时捕获可能会丢包。建议使用 tcpdump 写入 pcap 并离线分析。
- 仅支持 IPv4。IPv6 解析已存根但未充分测试。
- 统计检测器假设流量大致平稳。如果基线存在强周期性模式,请考虑更短的捕获窗口。
## 许可证
MIT
标签:AMSI绕过, HTML仪表盘, IQR, pcapng, pcap分析, Plotly仪表盘, Python数据包捕获, Python网络分析, Ruff代码风格, Scapy, SIEM替代, TCP标志位比率, Z-score, 交互式可视化, 代码覆盖率, 协议异常检测, 单元测试, 可配置阈值, 威胁检测, 安全规则引擎, 安全运营, 实时流量监控, 异常检测, 扫描框架, 流式处理, 流特征提取, 流量可视化, 流量峰值检测, 流量模式识别, 流量监控工具, 熵分析, 端口扫描检测, 端口熵检测, 类型注解, 结构化JSON输出, 统计异常, 网络流量分析, 网络行为分析, 逆向工具, 长时间捕获