JefferyCyber/Network-traffic-monitor
GitHub: JefferyCyber/Network-traffic-monitor
基于 Python 和 Scapy 的轻量级实时网络流量监控与异常检测工具,能捕获数据包并针对端口扫描、SYN 洪水、DNS 隧道等威胁即时告警。
Stars: 0 | Forks: 0
# 🛡️ NetWatch — 实时网络流量监控工具




一个基于 Python 和 Scapy 构建的实时网络流量监控与异常检测工具。能够捕获实时数据包,分析协议,并针对可疑活动(包括端口扫描、SYN 洪水攻击、DNS 隧道以及连接到已知恶意端口的行为)自动发出警报。
## 🚀 功能特性
- **实时数据包捕获** — 使用 Scapy 嗅探所选接口上的所有流量
- **协议分析** — 深入解析 TCP、UDP、ICMP、DNS、HTTP、ARP 流量
- **异常检测** — 基于滑动窗口检测以下威胁:
- 端口扫描(10秒内探测 15 个以上独立端口)
- SYN 洪水攻击(10秒内出现 50 个以上 SYN 数据包)
- ICMP Ping 洪水(10秒内出现 20 个以上数据包)
- DNS 隧道(长查询 + 高频查询请求)
- 可疑端口流量(Metasploit、Tor、C2 端口等)
- **HTTP 检查** — 记录 HTTP 方法、主机和路径
- **DNS 日志** — 捕获会话期间的所有 DNS 查询
- **实时统计仪表盘** — 每 15 秒输出主要通信节点(Top talkers)及协议分布情况
- **双重报告输出** — 退出时保存 `.txt` 摘要和 `.json` 报告
## 📋 系统要求
- Python 3.8+
- Scapy
- **Windows:** 必须安装 [Npcap](https://npcap.com/#download) 才能进行数据包捕获
- **Linux/macOS:** 需使用 `sudo` 运行
## ⚙️ 安装说明
```
# Clone 仓库
git clone https://github.com/JefferyCyber/network-traffic-monitor.git
cd network-traffic-monitor
# 安装依赖
pip install -r requirements.txt
# Windows — 同时安装 Npcap
# https://npcap.com/#download
```
## 🖥️ 使用方法
```
# Linux/macOS — 需要 root
sudo python3 src/monitor.py
# Windows — 以管理员身份运行终端
python src/monitor.py
# 指定网络接口
python src/monitor.py -i eth0
python src/monitor.py -i "Wi-Fi"
# Apply BPF filter(仅捕获 TCP 端口 80)
python src/monitor.py -f "tcp port 80"
# 精确捕获 500 个数据包后停止
python src/monitor.py -c 500
# 禁用定期统计
python src/monitor.py --no-stats
```
随时按下 **Ctrl+C** 可停止捕获并保存报告。
## 📊 示例输出
```
[+] Capture started...
[DNS] 192.168.1.5 → google.com
[DNS] 192.168.1.5 → api.github.com
[HTTP] 192.168.1.10 → example.com/index.html [GET]
───────────────────────────────────────────────────
LIVE STATS | 14:32:10
───────────────────────────────────────────────────
Packets captured : 1,204 (80.3/s)
Alerts raised : 2
Protocols : {'TCP': 890, 'UDP': 210, 'DNS': 85, 'ICMP': 19}
Top talkers:
192.168.1.5 432 packets
192.168.1.10 198 packets
[HIGH] [14:32:18] PORT SCAN DETECTED
Source IP : 192.168.56.101
Details : Probed 17 unique ports in 10s
[+] JSON report : reports/netwatch_20260514_143210.json
[+] Text report : reports/netwatch_20260514_143210.txt
```
## 📁 项目结构
```
network-traffic-monitor/
├── src/
│ └── monitor.py # Main monitor
├── reports/ # Auto-generated session reports
├── screenshots/ # Demo screenshots
├── requirements.txt
├── LICENSE
└── README.md
```
## 🔍 异常检测规则
| 威胁 | 触发条件 | 严重级别 |
|---|---|---|
| 端口扫描 (Port Scan) | 同一 IP 在 10秒内访问 15 个以上独立端口 | HIGH |
| SYN 洪水攻击 (SYN Flood) | 同一 IP 在 10秒内发送 50 个以上 SYN 数据包 | CRITICAL |
| ICMP 洪水攻击 (ICMP Flood) | 同一 IP 在 10秒内发送 20 个以上 ICMP 数据包 | HIGH |
| DNS 隧道 (DNS Tunnelling) | 10秒内超过 30 次 DNS 查询或查询长度大于 50 个字符 | MEDIUM |
| 可疑端口 (Suspicious Port) | 流量指向 4444、1337、6667、9050 等端口 | HIGH |
## 🗺️ 发展路线图
- [ ] GUI 仪表盘(Tkinter 或基于 Web)
- [ ] 源 IP 的 GeoIP 查询
- [ ] 邮件/Slack 告警集成
- [ ] PCAP 文件分析模式
- [ ] IP 白名单/黑名单管理
- [ ] 与威胁情报源集成
## 👤 作者
**Jeffery Ayando**
- GitHub: [@JefferyCyber](https://github.com/JefferyCyber)
- LinkedIn: [jeffery-ayando](https://linkedin.com/in/jeffery-ayando-00a662265)
## ⚖️ 法律免责声明
本工具仅供**授权的网络监控和教育目的**使用。
未经许可监控网络是非法的。
作者不对任何滥用行为承担责任。
## 📄 许可证
MIT License — 详见 [LICENSE](LICENSE)。
标签:AMSI绕过, DNS隧道检测, HTTP分析, ICMP洪水, Python, Scapy, SYN洪泛检测, 入侵检测系统, 协议分析, 威胁检测, 安全数据湖, 开源安全工具, 异常检测, 插件系统, 无后门, 权限提升, 流量监控, 端口扫描检测, 网络安全, 轻量级工具, 逆向工具, 逆向工程平台, 防御绕过, 隐私保护