d0tahmed/network-scanner
GitHub: d0tahmed/network-scanner
一个基于 Python 的本地网络扫描器,整合 ARP 发现、nmap 端口探测与 NVD CVE 查询,并通过 Web 仪表板提供可视化操作。
Stars: 1 | Forks: 0
# Network-scanner v2🔍
**一个专业的本地网络安全扫描器。**
发现设备、枚举开放端口并检查已知 CVE —— 无论是通过炫酷的深色 Web 仪表板还是功能强大的 CLI。





## 功能
| 功能 | 详情 |
|---|---|
| 🖥 **设备发现** | ARP 扫描(Scapy)、arp-scan CLI 与 ARP 缓存三重方法去重 |
| 🔌 **端口扫描** | 支持并发多主机的 Nmap 服务/版本检测 |
| 🛡 **CVE 查询** | 集成 NIST NVD API v2 并提供 CVSS v3.1 严重性评分 |
| 🌐 **Web 仪表板** | 深色主题的 Flask UI,支持实时扫描进度与 JSON 导出 |
| ⌨️ **CLI 接口** | 完整的 argparse CLI,便于自动化与无头环境使用 |
| 📋 **日志** | 标准错误输出结构化日志,并支持可选文件输出 |
| ⚙️ **配置** | 支持环境变量或项目根目录的 `.env` 配置 |
## 截图
## 快速开始
### 1. 系统依赖
```
# Debian / Ubuntu / Kali
sudo apt update
sudo apt install nmap arp-scan python3-pip
```
### 2. Python 依赖
```
git clone https://github.com/d0tahmed/network-scanner.git
cd netscanx
pip install -r requirements.txt
```
### 3. 可选 — NVD API 密钥(推荐)
在 [nvd.nist.gov/developers/request-an-api-key](https://nvd.nist.gov/developers/request-an-api-key) 注册以获取免费 API 密钥。
没有密钥时,扫描器会限流至每 30 秒最多 5 次请求。
```
cp .env.example .env
# 编辑 .env 并添加您的密钥:
# NVD_API_KEY=your-key-here
```
## 用法
### Web 仪表板(推荐)
```
sudo python web_interface.py
# 打开: http://localhost:5000
```
然后按顺序使用按钮:
1. **快速扫描** — 发现网络中的所有设备
2. **端口扫描** — 枚举已发现设备的开放端口
3. **CVE 扫描** — 查找检测到的服务的已知漏洞
4. **完整扫描** — 自动按顺序运行以上三步
### CLI
```
# 仅设备发现
sudo python cli.py scan
# 发现并扫描特定端口上的端口
sudo python cli.py scan --ports 22,80,443,8080
# 完整扫描(设备 + 端口 + CVE)保存到文件
sudo python cli.py scan --full --output report.json
# 指定网络接口
sudo python cli.py scan --interface wlan0 --full
# 在自定义端口上启动 Web UI
sudo python cli.py serve --port 8080
```
## 项目结构
```
NETWORK-SCANNER/
├── scanner.py # Device discovery (ARP + ping sweep)
├── port_scanner.py # Port/service enumeration (nmap)
├── vulnerability_checker.py # CVE lookup (NIST NVD API)
├── web_interface.py # Flask REST API + dashboard server
├── cli.py # Argparse CLI
├── config.py # Centralized configuration
├── utils/
│ ├── __init__.py
│ └── logger.py # Logging setup
├── templates/
│ └── report.html # Web dashboard UI
├── requirements.txt
├── .gitignore
└── README.md
```
## 配置
所有设置均可通过环境变量或项目根目录下的 `.env` 文件覆盖。
| 变量 | 默认值 | 描述 |
|---|---|---|
| `NVD_API_KEY` | *(无)* | NIST NVD API 密钥(强烈推荐) |
| `DEFAULT_PORTS` | 常用 20 端口 | 要扫描的逗号分隔端口 |
| `NMAP_ARGUMENTS` | `-sV -sC -T4` | 原始 nmap 参数 |
| `ARP_TIMEOUT` | `3` | Scapy ARP 超时(秒) |
| `MAX_SCAN_WORKERS` | `5` | 并发端口扫描线程数 |
| `FLASK_HOST` | `0.0.0.0` | Web 服务器绑定地址 |
| `FLASK_PORT` | `5000` | Web 服务器端口 |
| `FLASK_DEBUG` | `false` | 启用 Flask 调试模式 |
| `LOG_LEVEL` | `INFO` | 日志详细程度(`DEBUG`、`INFO`、`WARNING`) |
| `LOG_FILE` | *(无)* | 可选日志文件路径 |
## API 参考
所有扫描端点均接受无请求体的 `POST` 请求。
| 方法 | 端点 | 描述 |
|---|---|---|
| `GET` | `/` | Web 仪表板 |
| `GET` | `/ping` | 健康检查 |
| `POST` | `/api/quick-scan` | 设备发现 |
| `POST` | `/api/port-scan` | 端口扫描(需先执行快速扫描) |
| `POST` | `/api/cve-scan` | CVE 查询(需先执行端口扫描) |
| `POST` | `/api/full-scan` | 按顺序执行以上三步 |
| `GET` | `/api/results` | 当前扫描状态(JSON) |
| `GET` | `/api/export` | 下载 `.json` 格式结果 |
| `POST` | `/api/clear` | 重置扫描状态 |
## 扫描方法
NETWORK-SCANNER 使用三种 ARP 发现方法,并为每个 IP 选择最佳结果:
| 优先级 | 方法 | 要求 |
|---|---|---|
| 1(最高) | Scapy ARP 广播 | `root` / `sudo` |
| 2 | `arp-scan` CLI | `arp-scan` 包 |
| 3 | 系统 ARP 缓存 | 始终可用 |
首先运行 ping 扫描(`nmap -sn`)以唤醒可能仅对 ARP 无响应的设备。
## 要求
- Python 3.10+
- Linux(Kali、Ubuntu、Debian)
- 已安装 `nmap`(`sudo apt install nmap`)
- 以 `root` / `sudo` 运行(原始数据包操作必需)
## 免责声明
NETWORK-SCANNER 是一个教育用途和授权使用的安全工具。作者不对滥用负责。在扫描任何网络之前,请务必获得明确授权。
## 许可证
MIT —— 详情请参阅 [LICENSE](LICENSE)。
标签:ARP扫描, CVE, CVSS, .env, Flask, Nmap, NVD, Python, Scapy, SEO: 开源安全工具, SEO: 本地扫描器, SEO: 网络安全工具, Web仪表板, 云存储安全, 多方法去重, 安全扫描, 局域网安全, 并发扫描, 数字签名, 数据统计, 无后门, 时序注入, 暗色主题, 本地网络, 环境变量配置, 端口扫描, 结构化日志, 网络扫描, 自动化CLI, 虚拟驱动器, 设备发现, 逆向工具