AbhinavVijayvergia/Network-Traffic-Monitor
GitHub: AbhinavVijayvergia/Network-Traffic-Monitor
基于 Scapy 的轻量级网络流量监控工具,通过实时抓包和滑动窗口速率检测识别异常流量模式。
Stars: 0 | Forks: 0
# 网络流量监控器


## 为什么开发此工具
在开发完整的 IDS 之前,我需要了解在最底层是如何捕获和分析数据包的。
开发这个工具是为了回答一个问题:监控系统如何决定哪些流量是正常的,哪些不是?
这里实现的滑动窗口速率检测成为了我的入侵检测系统中异常检测逻辑的基础。
## 功能
- 使用 Scapy 进行实时数据包嗅探
- 协议检测(TCP、UDP、ICMP)
- 源端口和目标端口分析
- 按源 IP 统计的流量统计
- 带有时间戳的结构化流量日志记录
- 使用滑动时间窗口进行基于速率的异常检测
## 工作原理
1. 从活动的网络接口捕获实时数据包
2. 仅过滤并处理 IP 数据包
3. 提取协议、IP 地址和端口信息
4. 将带有时间戳的数据包详细信息记录到结构化日志文件中
5. 维护每个源 IP 的流量统计
6. 当来自某个源 IP 的流量在时间窗口内超过阈值时触发警报
## 检测逻辑
- **窗口大小:** 10 秒
- **阈值:** 每个窗口 80 个数据包
如果某个源 IP 在任意 10 秒的窗口内超过 80 个数据包,就会生成异常
警报 —— 模拟对泛洪或扫描行为的检测。
## 项目结构
```
network-traffic-monitor/
├── main.py
├── logs/
│ └── traffic_log.log
└── README.md
```
## 环境要求
- Python 3.x
- Scapy
- 管理员/root 权限(数据包嗅探所需)
## 安装与使用
```
git clone https://github.com/AbhinavVijayvergia/Network-Traffic-Monitor.git
cd Network-Traffic-Monitor
pip install scapy
sudo python3 main.py
```
日志会实时写入 `logs/traffic_log.log`。
## 学到了什么
- Scapy 如何在接口级别捕获和解析数据包
- 如何从原始数据包中提取协议、IP 和端口信息
- 滑动窗口速率检测如何识别异常流量模式
- 结构化日志记录如何应用于网络监控工具
- 为什么阈值调优很重要 —— 太低会导致误报,太高会漏报真实攻击
## 局限性
- 仅支持 CLI —— 没有仪表盘
- 仅支持单接口监控
- 仅限基于速率的检测 —— 非基于特征的检测
- 除了当前会话日志外,不具备持久化功能
## 未来改进
- 定期流量摘要
- 通过命令行参数配置阈值
- 将日志导出为 CSV 以便分析
- Web 仪表盘(下一版本的迭代请参阅 Intrusion-Detection-System)
标签:IP 地址批量处理, Python, Scapy, 协议分析, 异常检测, 无后门, 权限提升, 逆向工具, 防御绕过