rayan76140/netmonitor-dashboard
GitHub: rayan76140/netmonitor-dashboard
一个由Python扫描器和PHP仪表板构建的网络监控工具,支持ICMP ping扫描、TCP端口扫描及数据持久化展示。
Stars: 0 | Forks: 0
# NetMonitor Dashboard
一个使用 **Python**(扫描器 + REST API)和 **PHP**(Web 仪表板)构建的网络监控工具。
作为 BUT Réseaux & Télécommunications 学生的实践项目而设计。
## 功能
- 对任何 IPv4 CIDR 范围进行 **ICMP ping 扫描**(多线程)
- 对每台主机上的 15 个常见端口进行 **TCP 端口扫描**
- **反向 DNS** 主机名解析
- **SQLite** 持久化存储(主机、端口、扫描历史)
- 使用 Python (`http.server`) 的 **REST API** — 无外部依赖
- **PHP 仪表板**包含 4 个页面:仪表板、主机、端口、历史
- 每 30 秒 **自动刷新**
- 从 Web UI 触发扫描
## 架构
```
netmonitor/
├── python/
│ ├── scanner.py # Core scanner (ping, port scan, DB)
│ └── api_server.py # HTTP REST API (port 5000)
├── php/
│ ├── api/
│ │ └── config.php # API client helpers
│ └── public/
│ ├── index.php # Dashboard overview
│ ├── hosts.php # Full host list
│ ├── host.php # Host detail + ports
│ ├── ports.php # All port results
│ ├── history.php # Scan history
│ └── css/
│ └── style.css
├── data/ # SQLite DB + logs (auto-created)
└── README.md
```
## 环境要求
**Python**
- Python 3.8+
- 仅需标准库(无需 pip install)
**PHP**
- PHP 7.4+,需启用 `file_get_contents` 并设置 `allow_url_fopen = On`
- 任意 Web 服务器(Apache、Nginx、PHP 内置服务器)
## 使用方法
### 1. 启动 Python API
```
cd python/
python3 api_server.py
# API 运行在 http://127.0.0.1:5000
```
### 2. 启动 PHP Web 服务器
```
cd php/public/
php -S localhost:8080
# Dashboard 位于 http://localhost:8080
```
### 3. 从 CLI 运行扫描(可选)
```
cd python/
# Single scan
python3 scanner.py 192.168.1.0/24
# 每 60s 自动扫描
python3 scanner.py 192.168.1.0/24 --loop
```
### 4. 从 Web UI 触发扫描
打开仪表板 → **Launch a Scan** → 输入 CIDR → 点击 **Scan**。
## REST API 端点
| 方法 | 端点 | 描述 |
|--------|---------------------|------------------------------------|
| GET | `/api/hosts` | 列出所有主机 (`?status=UP/DOWN`) |
| GET | `/api/host` | 主机详情 + 端口 (`?ip=x.x.x.x`)|
| GET | `/api/ports` | 所有端口 (`?state=open&port=80`) |
| GET | `/api/history` | 扫描历史 (`?limit=20`) |
| GET | `/api/stats` | 全局统计 |
| POST | `/api/scan` | 触发扫描 `{"network":"..."}` |
## 展示技能 (BUT R&T)
- IPv4 编址与 CIDR 表示法
- ICMP 协议 (ping)
- TCP socket 编程
- DNS 反向查找
- Python 中的多线程
- REST API 设计
- SQL (SQLite, UPSERT, JOIN, 索引)
- PHP/HTML/CSS Web 开发
- 客户端-服务器架构
## 作者
Rayan — BUT Réseaux & Télécommunications, IUT de Rouen
标签:OpenVAS, PHP, Python, REST API, SQLite, 教学项目, 数据统计, 无后门, 检测规则, 端口扫描, 网络资产发现, 逆向工具