d0tahmed/network-scanner

GitHub: d0tahmed/network-scanner

一个基于 Python 的本地网络扫描器,整合 ARP 发现、nmap 端口探测与 NVD CVE 查询,并通过 Web 仪表板提供可视化操作。

Stars: 1 | Forks: 0

# Network-scanner v2🔍 **一个专业的本地网络安全扫描器。** 发现设备、枚举开放端口并检查已知 CVE —— 无论是通过炫酷的深色 Web 仪表板还是功能强大的 CLI。 ![Python](https://img.shields.io/badge/Python-3.10%2B-blue?logo=python) ![Flask](https://img.shields.io/badge/Flask-3.x-black?logo=flask) ![Scapy](https://img.shields.io/badge/Scapy-2.5%2B-green) ![License](https://img.shields.io/badge/License-MIT-yellow) ![Platform](https://img.shields.io/badge/Platform-Linux%20%7C%20Kali-red?logo=linux) ## 功能 | 功能 | 详情 | |---|---| | 🖥 **设备发现** | 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, 虚拟驱动器, 设备发现, 逆向工具