arsaeed456/VulnPortScanner
GitHub: arsaeed456/VulnPortScanner
一款非侵入式 TCP 端口扫描器,通过 NVD API 将检测到的服务映射到已知 CVE 并生成包含评分与修复建议的 JSON 报告。
Stars: 0 | Forks: 0
# VulnPortScanner
非侵入式 TCP 端口扫描器,通过 NVD API 进行漏洞映射。生成包含 CVE、CVSS 评分和修复建议的 JSON 报告。仅限授权使用。
# VulnPortScanner
**授权的安全评估工具 – 端口扫描器与漏洞映射器**
[](https://www.python.org/)
[](https://opensource.org/licenses/MIT)
## ⚠️ 重要法律声明
**本工具专为授权的安全评估而设计。**
在运行任何扫描之前,您必须获得目标系统所有者的**明确书面许可**。在许多司法管辖区,未经授权的扫描是非法的,并可能被视为网络攻击。作者对任何滥用行为不承担责任。
## 🔍 概述
VulnPortScanner 是一款轻量级、非侵入式的 TCP 端口扫描器,它能够:
- 将主机名解析为 IP 地址。
- 扫描可配置的端口列表(支持速率限制)。
- 通过 banner grabbing 和端口到服务的映射来识别服务。
- 查询 **NIST NVD API** 以获取每个检测到的服务的已知 CVE 和 CVSS 评分。
- 生成结构化的 JSON 报告,其中包含漏洞详细信息、严重性评级和修复建议。
本工具不包含任何漏洞利用、payload 生成或攻击功能 – 它仅用于信息收集。
## ✨ 功能
- **安全且非侵入式** – 仅使用 TCP connect 扫描。
- **速率限制** – 防止向目标发送泛洪请求(可配置)。
- **并发执行** – 利用线程池实现快速扫描。
- **服务检测** – 通过端口和 banner 识别常见服务(SSH、HTTP、FTP 等)。
- **漏洞映射** – 从 NVD API 获取实时的 CVE 数据(包含重试和超时处理)。
- **备用数据** – 如果 API 请求失败,将使用静态示例数据来演示报告格式。
- **JSON 输出** – 生成机器可读的报告,便于与其他工具集成。
- **详细的日志记录** – 提供可配置的详细级别以便调试。
## 📦 安装说明
### 环境要求
- Python 3.6 或更高版本
- `requests` 库
### 步骤
1. 克隆代码仓库:
git clone https://github.com/arsaeed456/VulnPortScanner.git
cd VulnPortScanner
2. 安装所需的 Python 包:
pip install requests
*(如果您的系统限制了全局 pip 安装,请使用虚拟环境,或通过您的系统包管理器进行安装 —— 例如,在 Debian/Kali 上使用 `sudo apt install python3-requests`。)*
3. (可选)使用以下命令安装所有依赖项:
pip install -r requirements.txt
## 🚀 用法
```
python vulnportscanner.py [options]
```
### 基础示例
```
python vulnportscanner.py example.com
```
这将扫描 `example.com` 上的默认端口列表(常见服务)。
### 扫描指定端口
```
python vulnportscanner.py example.com --ports 22,80,443
```
### 调整超时与速率限制
```
python vulnportscanner.py example.com --timeout 3.0 --rate-limit 5
```
### 将报告保存到自定义文件
```
python vulnportscanner.py example.com --output my_scan.json
```
### 开启 Debug 日志
```
python vulnportscanner.py example.com --debug
```
## ⚙️ 命令行选项
| 选项 | 描述 |
|--------|-------------|
| `target` | 要扫描的主机名或 IP 地址(必填)。 |
| `--ports` | 以逗号分隔的端口列表(默认:常见端口)。 |
| `--timeout` | 每个端口的连接超时时间(秒)(默认:2.0)。 |
| `--rate-limit` | 每秒最大连接尝试次数(默认:10)。 |
| `--output` | 输出的 JSON 文件名(默认:`scan_report.json`)。 |
| `--debug` | 开启 debug 日志。 |
## 📄 输出报告
该工具会生成一个具有以下结构的 JSON 文件:
```
{
"target": "example.com",
"scan_time": "2026-06-18T10:30:00Z",
"open_ports": [
{
"port": 22,
"service": "ssh",
"banner": "SSH-2.0-OpenSSH_8.9p1",
"vulnerabilities": [
{
"id": "CVE-2024-1234",
"cvss_score": 7.5,
"severity": "High",
"description": "Potential remote code execution in SSH.",
"references": ["https://example.com/advisory/ssh"],
"remediation": "Upgrade to the latest OpenSSH version."
}
]
}
],
"summary": {
"total_open": 1,
"critical": 0,
"high": 1,
"medium": 0,
"low": 0,
"unknown": 0
}
}
```
- **`vulnerabilities`** – 包含 CVSS 评分、严重程度、描述、参考链接和建议修复措施的 CVE 列表。
- **`summary`** – 汇总所有开放端口的严重程度计数。
## 🔧 配置(面向高级用户)
您可以在脚本顶部调整以下常量:
- `DEFAULT_PORTS` – 默认端口列表。
- `DEFAULT_TIMEOUT` – 连接超时时间。
- `DEFAULT_RATE_LIMIT` – 每秒扫描的端口数。
- `NVD_TIMEOUT` – API 请求超时时间(默认 30 秒)。
- `NVD_RETRIES` – API 请求失败时的重试次数。
如果您拥有 **NVD API key**,可以将其添加到请求参数中以提高您的速率限制。(默认不包含此项,以保持工具的简单性。)
## 🐛 限制
- NVD API 具有速率限制(公共用户为每 30 秒 5 次请求)。脚本会遵守此限制,但仍可能受到节流。
- 服务识别是基础性的 – 它依赖于端口号和简单的 banner 字符串。它不执行深度的协议指纹识别。
- 静态备用数据**仅作示例** – 它们不是真实的 CVE。在可用时,会从 NVD API 获取真实数据。
- 该脚本不扫描 UDP 端口。
## 📜 许可证
本项目基于 **MIT License** 授权 – 有关详细信息,请参阅 [LICENSE](LICENSE) 文件。
## 📬 免责声明
**作者不对本工具的任何滥用行为负责。** 使用本软件即表示您保证已获得扫描目标系统的适当授权,并且不会将其用于非法或不道德的目的。请始终遵守您组织的安全策略和适用法律。
**祝您(授权)扫描愉快!** 🛡️
标签:CVE, Python, 实时处理, 密码管理, 插件系统, 数字签名, 数据统计, 无后门, 端口扫描, 逆向工具