mayank02raj/Network-Traffic-Anomaly-Visualizer

GitHub: mayank02raj/Network-Traffic-Anomaly-Visualizer

一个基于统计与熵方法的网络流量异常实时检测与可视化工具,帮助用户快速发现可疑流量模式。

Stars: 0 | Forks: 0

# 网络流量异常可视化工具 一个用于捕获网络流量、使用统计方法和基于熵的方法检测异常并生成交互式仪表盘的 Python 工具。为需要快速查看流量模式而无需部署完整 SIEM 的安全分析师和研究人员而构建。 ![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue) ![Tests](https://img.shields.io/badge/tests-passing-brightgreen) ![License: MIT](https://img.shields.io/badge/License-MIT-green.svg) ![Code style: ruff](https://img.shields.io/badge/code%20style-ruff-000000.svg) ## 功能 - 实时数据包捕获或离线 `.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输出, 统计异常, 网络流量分析, 网络行为分析, 逆向工具, 长时间捕获