eli-wynn/vulnerabilityScanner
GitHub: eli-wynn/vulnerabilityScanner
一款基于 Python 和 nmap 的轻量级漏洞扫描器,集成 NVD API 实现 CVE 自动关联查询,提供 GUI 与 CLI 双模式,适合网络资产快速评估与安全巡检。
Stars: 0 | Forks: 0
# 漏洞扫描器
一个基于 Python 的网络漏洞扫描器,可自动对 IP 范围进行安全评估。它会发现网络上的活跃主机,识别其操作系统和开放端口,并将结果与 NVD(国家漏洞数据库)进行关联,以查找已识别服务中已知的关键 CVE。
该项目与 Will Guo 合作开发,具有深色主题的桌面 GUI,可 straightforward 地进行点击扫描操作。
## 功能
1. **主机发现** — 使用 ping 扫描扫描给定的网络范围(例如 `192.168.1.0/24`)以查找所有活跃主机
2. **深度扫描** — 对于每个存活主机,运行 OS 检测和 SYN 扫描,以识别操作系统、开放端口和正在运行的服务
3. **CVE 查询** — 查询 NVD API 以查找与已识别软件或服务匹配的已知关键漏洞
4. **报告输出** — 在 GUI 中显示结果,并将发现的 CVE 写入 `output.txt` 以供审查
## 项目结构
```
vulnerabilityScanner/
├── main.py # Entry point for headless/CLI usage
├── device_identifier.py # Core scanning engine (nmap wrapper + NVD API integration)
├── gui.py # Tkinter desktop GUI
├── SecurityCheck.py # Security check module
├── test.py # Tests
└── output.txt # CVE scan output
```
## GUI
桌面界面是与 Will Guo 合作构建的。它提供了一个深色主题界面,您可以在其中输入目标网络范围,点击 Start Scan(开始扫描),并实时查看结果填充。
- 网络范围输入,在扫描开始前进行 CIDR 验证
- 扫描在后台线程上运行,因此 UI 保持响应
- 结果以格式化的 JSON 形式显示在可滚动的终端风格输出区域中
- 带有扫描时间戳的进度条和状态栏
- 错误处理,针对无效输入或扫描失败提供对话框提示

## 工作原理
**主机发现** 使用 nmap 的 `-sn` 标志(ping 扫描)来查找存活主机,而无需进行端口扫描。只有做出响应的主机才会被添加到设备映射中。
**深度扫描** 对每个发现的主机运行 `-O -sS`(OS 检测 + TCP SYN 扫描),收集:
- 主机名和 MAC 地址
- 操作系统(nmap 最佳匹配)
- 所有开放 TCP 端口及其相关服务
**CVE 查询** 访问 NVD REST API v2,筛选出与给定产品关键字匹配的 `CRITICAL`(关键)严重性 CVE。结果将写入 `output.txt`。
```
# 无头模式示例用法
identifier = identifier("10.0.0.0/24")
identifier.scan()
cves = identifier.searchCVE("httpd")
```
## 环境要求
```
pip install python-nmap requests
```
您的系统上还必须安装 nmap:
- **macOS:** `brew install nmap`
- **Linux:** `sudo apt install nmap`
- **Windows:** 从 https://nmap.org/download.html 下载
**注意:** OS 检测和 SYN 扫描(`-O -sS`)需要 root/管理员权限。
```
sudo python main.py # Linux/macOS
# 以管理员身份运行 # Windows
```
## 运行 GUI
```
python gui.py
```
以 CIDR 表示法输入网络范围(例如 `192.168.1.0/24`),然后点击 Start Scan(开始扫描)。
## 无头模式运行
```
python main.py
```
在运行之前,直接在 `main.py` 中配置目标范围和产品关键字。
## 示例输出
```
Device: 192.168.1.42
Hostname: desktop-abc123
MAC: AA:BB:CC:DD:EE:FF
State: up
OS: Linux 4.15 - 5.6
Open Ports:
- Port 22 (ssh): open
- Port 80 (http): open
- Port 443 (https): open
```
## 注意事项
- 仅扫描您拥有或明确获得扫描权限的网络
- `device_identifier.py` 中的 NVD API 密钥应替换为您自己的 — 免费密钥可在 https://nvd.nist.gov/developers/request-an-api-key 获取
- `SecurityCheck.py` 是计划中的额外安全检查的占位符
## 构建技术
- Python 3
- python-nmap
- NVD REST API v2
- Tkinter
- Threading
标签:CIDR, Facebook API, GPT, IP地址扫描, Nmap, NVD数据库, Python, SYN扫描, Tkinter, 代码生成, 加密, 域名解析, 安全测试, 密码管理, 插件系统, 操作系统指纹识别, 攻击性安全, 无后门, 桌面GUI应用, 渗透测试工具, 漏洞扫描器, 漏洞管理, 端口枚举, 网络安全, 自动化安全评估, 虚拟驱动器, 隐私保护