MElsadany2165/PVS
GitHub: MElsadany2165/PVS
PVS是一个异步网络扫描器,用于自动化检测开放端口、识别服务并关联CVE漏洞,支持安全评估和报告生成。
Stars: 2 | Forks: 0
# PVS (个人漏洞扫描器)
```
██████╗ ██╗ ██╗███████╗
██╔══██╗██║ ██║██╔════╝ Personal Vulnerability Scanner
██████╔╝██║ ██║███████╗ v1.0.1
██╔═══╝ ╚██╗ ██╔╝╚════██║
██║ ╚████╔╝ ███████║ Ethical Security Testing
╚═╝ ╚═══╝ ╚══════╝
```
**PVS** 是一个高性能网络扫描器,用于发现活动设备、识别其开放端口(服务),并将它们与已知的安全漏洞进行匹配。
*由 **Mohamed Essam Elsadany** 开发。*
### 1. 交互式命令行界面
控制台负责处理网络发现、异步套接字进度,并以结构化表格显示开放端口和 CVE:



### 2. HTML 扫描仪表盘
PVS 会自动生成美观、响应式的石板青色 HTML 仪表盘,汇总总体漏洞发现结果:


## 🚀 初学者快速入门(非技术向)
### 📥 两步安装
确保已安装 [Python](https://www.python.org/downloads/),然后打开 PowerShell 或命令提示符并运行:
1. **克隆代码仓库:**
git clone https://github.com/MElsadany2165/PVS.git
cd PVS
2. **安装扫描器依赖:**
pip install -r requirements.txt
### 🏃 运行你的第一次扫描
扫描本地系统以查找常见端口:
```
py PVS scan 127.0.0.1
```
运行一次同时检查已知安全漏洞(CVE)的扫描:
```
py PVS scan 127.0.0.1 --cve
```
## ⚙️ 高级与技术指南(面向专家和开发者)
### 📦 可选:将 PVS 安装为命令行工具
如果你想从终端的任何目录直接运行 `pvs`,请以可编辑模式安装它:
```
pip install -e .
```
现在你可以运行:
```
pvs scan 127.0.0.1 --cve
```
### 🏗️ 技术架构
PVS 利用 Python 的 `asyncio` 框架高效地处理多个并发网络查询。
```
┌────────────────────────────────┐
│ PVS Core CLI │
└───────────────┬────────────────┘
│
┌───────────────▼────────────────┐
│ Host Ping Discovery │
└───────────────┬────────────────┘
│ (Only Live Hosts)
┌───────────────▼────────────────┐
│ Asynchronous Port Scanner │
│ - Connection Semaphore Lock │
│ - Service Banner Grabbing │
└───────────────┬────────────────┘
│
┌───────────────▼────────────────┐
│ Parallel NVD API Client │
│ - Local Cache Lookup │
│ - NVD Rate-Limit Semaphores │
└───────────────┬────────────────┘
│
┌───────────────▼────────────────┐
│ Report Generation Engine │
│ (HTML, JSON, CSV) │
└────────────────────────────────┘
```
- **异步信号量:** 使用 `asyncio.Semaphore` 限制套接字描述符,以防止操作系统资源耗尽或被防火墙阻止。
- **NVD API 集成:** 通过本地缓存包装器异步连接 NIST NVD API v2.0,以存储结果并避免 API 限流。
### ⚡ 技术扫描示例
- **扫描特定的自定义端口列表:**
py PVS scan 192.168.1.1 -p 22,80,443 --cve
- **高速执行全子网扫描:**
使用 500 个并发连接、1.5 秒超时,扫描一个 C 类子网上的全部 65,535 个 TCP 端口,并导出所有输出格式(JSON, CSV, HTML):
py PVS scan 192.168.1.0/24 -p all --cve -c 500 -t 1.5 -f all
### 🎛️ 端口预设
除了自定义端口号,你可以为 `-p` 或 `--ports` 参数使用以下预设快捷方式:
- `top20` (扫描前 20 个标准端口)
- `top100` (扫描前 100 个常用服务端口)
- `common` (扫描 1,000 个标准端口)
- `enterprise` (扫描 5,000 个企业网络端口)
- `all` (扫描完整的 1 到 65,535 TCP 端口范围)
### 📋 CLI 命令选项
| 选项 | 简写标记 | 描述 | 默认值 |
| :--- | :--- | :--- | :--- |
| `--ports` | `-p` | 要扫描的端口(预设、数字或范围,例如 `1-1024`) | `top100` |
| `--cve` | | 启用来自 NIST NVD 的 CVE 漏洞关联 | 禁用 |
| `--nvd-api-key`| | 用于提高 NIST NVD API 速度限制的 API 密钥 | 无 |
| `--max-cves` | | 每个服务返回的最大 CVE 数量 | `5` |
| `--concurrency`| `-c` | 最大并发异步套接字连接数 | `100` |
| `--timeout` | `-t` | 最大套接字响应等待时间(秒) | `2.0` |
| `--format` | `-f` | 导出报告格式(`html`, `json`, `csv`, `all`) | `html` |
| `--output` | `-o` | 写入扫描报告的自定义文件路径前缀 | 自动生成 |
| `--quiet` | `-q` | 静默执行(无打印输出地运行扫描) | 禁用 |
| `--no-ping` | | 跳过主机发现 ping 扫描(强制扫描所有主机) | 禁用 |
| `--no-banner-grab`| | 禁用服务版本/横幅信息提取 | 禁用 |
### 🔑 NIST NVD API 密钥集成
NIST NVD API 会限流未认证的请求。对于大规模扫描,你应该注册一个免费的 API 密钥以加速 CVE 检查:
1. 从 [NVD 开发者门户](https://nvd.nist.gov/developers/request-an-api-key) 请求一个免费的 API 密钥。
2. 在运行扫描前在你的环境中设置它:
- **Windows PowerShell:**
$env:NVD_API_KEY="your_api_key"
- **Linux/macOS Bash:**
export NVD_API_KEY="your_api_key"
或者,通过 `--nvd-api-key` 参数直接传递。
### 🛠️ 开发者与测试指南
如果你想运行测试或修改扫描器代码:
1. **安装开发依赖:**
pip install -e .[dev]
2. **执行 pytest 测试套件:**
python -m pytest
## ⚖️ 授权使用政策
**警告:** 本工具严格用于**授权的网络审计、道德安全测试和教育目的**。
- 不要扫描你不拥有或缺乏明确审计授权的网络或主机。
- 滥用此软件可能违反计算机犯罪法(如美国 CFAA 或当地等效法律)。开发者对任何损害或政策违规行为不承担任何责任。
## 📄 许可证
MIT 许可证 - 版权所有 (c) 2026 Mohamed Essam Elsadany
标签:AES-256, CSV报告, CVE关联, HTML报告, JSON报告, NIST NVD, 个人漏洞扫描器, 云存储安全, 反取证, 安全测试, 安全评估, 异步扫描, 异步编程, 插件系统, 攻击性安全, 数据统计, 服务检测, 漏洞评估, 端口扫描, 网络安全, 网络工具, 网络扫描, 计算机取证, 设备发现, 逆向工具, 道德安全测试, 隐私保护, 高性能扫描