Bindu-115586/vulnerability-scanner
GitHub: Bindu-115586/vulnerability-scanner
一款零依赖的轻量级 Python 命令行漏洞扫描工具,通过端口扫描、Banner 抓取和本地漏洞签名比对来识别目标主机上的已知风险服务版本,并生成 HTML 与 JSON 格式的安全报告。
Stars: 0 | Forks: 0
# 🔍 漏洞扫描器(小型项目)
一款轻量级、无依赖的 Python CLI 工具,可用于扫描目标主机的
开放端口、抓取服务 Banner、标记已知的过期软件版本,
并生成清晰的 HTML + JSON 漏洞报告。
本项目旨在作为核心渗透测试概念的实践入门:
端口扫描、服务/Banner 枚举以及漏洞分类。
## 功能
- **端口扫描** — 检查默认的常用端口列表、自定义
范围 (`1-1024`) 或逗号分隔的列表 (`22,80,443`)
- **Banner 抓取** — 从发现的每个开放端口读取服务 Banner(SSH、HTTP、FTP 等)
- **版本风险检查** — 将 Banner 与本地维护的已知过期/存在历史漏洞的
软件版本小型列表进行比对并标记
(例如 vsFTPd 2.3.4 后门、旧版 OpenSSH/Apache 发行版)
- **报告生成** — 输出机器可读的 `.json` 文件以及
可在任意浏览器中打开的带有深色主题样式的 `.html` 报告
## 项目结构
```
vuln-scanner/
├── scanner.py # CLI entry point — orchestrates the scan
├── port_scanner.py # TCP port scanning logic
├── version_checker.py # Banner grabbing + known-risk signature matching
├── report_generator.py # JSON + HTML report builder
├── requirements.txt # No external deps (stdlib only)
├── reports/ # Generated reports land here
└── README.md
```
## 用法
```
# 扫描 target 上的 common ports (默认)
python3 scanner.py scanme.nmap.org
# 扫描特定 port 范围
python3 scanner.py 192.168.1.10 -p 1-1024
# 仅扫描特定 ports
python3 scanner.py 192.168.1.10 -p 22,80,443
# 调整 per-port timeout (秒) 和输出路径
python3 scanner.py scanme.nmap.org -t 1.0 -o reports/my_scan
```
扫描完成后,在浏览器中打开 `reports/.html` 查看
格式化后的报告,或查看 `reports/.json` 获取原始数据。
## 示例输出
HTML 报告包含:
- 开放端口、标记的发现结果以及无风险服务的摘要
- 针对每个端口的表格,包含服务猜测、原始 Banner 和风险徽章
(严重 / 高危 / 中危 / 无风险)
## 工作原理
1. `port_scanner.py` 使用
`connect_ex()` 向每个目标端口发起原始 TCP socket 连接 — 返回代码为 0 表示该端口开放。
2. `version_checker.py` 再次连接到每个开放端口,并尝试
读取服务发送的前几个字节(即其“Banner”),这通常会
透露软件名称和版本。
3. 该 Banner 会与 `KNOWN_RISKY_SIGNATURES` 进行比对,这是一个
包含具有详细记录 CVE 的软件版本的本地小型字典。
4. `report_generator.py` 将所有内容组装成 JSON 和带有样式的 HTML
报告。
## 局限性与后续步骤
这是一个教育性质的小型项目,并非生产级扫描器。进一步扩展的思路:
- 添加多线程以加快对大范围端口的扫描速度
- 从 [NVD API](https://nvd.nist.gov/developers) 获取实时 CVE 数据,
而不是使用静态本地表
- 添加 UDP 端口扫描
- 在现有模块之上添加一个简单的 Web UI(Flask/Streamlit)
## 免责声明
本工具仅供教育目的和授权的安全测试使用。对于任何滥用行为,作者概不负责。
标签:Python, 插件系统, 数据统计, 文档结构分析, 无后门, 端口扫描, 逆向工具