GEETANSH-9/PORT-SCANNER

GitHub: GEETANSH-9/PORT-SCANNER

这是一个集成NVD CVE查询和Streamlit仪表盘的网络漏洞扫描工具,用于自动化识别端口服务并评估安全风险。

Stars: 0 | Forks: 0

# 🔐 网络漏洞扫描器 一个实时网络端口扫描工具,具备**实时CVE查询**、**基于CVSS的风险评分**、**扫描历史记录**和交互式**Streamlit仪表盘**——完全使用Python构建。 ![Python](https://img.shields.io/badge/Python-3.8+-blue?style=flat-square&logo=python) ![Streamlit](https://img.shields.io/badge/Streamlit-Dashboard-red?style=flat-square&logo=streamlit) ![Nmap](https://img.shields.io/badge/Nmap-Port%20Scanning-green?style=flat-square) ![NVD](https://img.shields.io/badge/NVD-CVE%20Lookup-orange?style=flat-square) ![SQLite](https://img.shields.io/badge/SQLite-Scan%20History-lightgrey?style=flat-square) ## 功能简介 ## 仪表盘预览 ### 截图 Screenshot 2026-05-19 at 12 42 10 PM Screenshot 2026-05-19 at 12 42 16 PM Screenshot 2026-05-19 at 12 42 27 PM Screenshot 2026-05-19 at 12 42 33 PM | 扫描结果 | 扫描历史 | |---|---| Screenshot 2026-05-19 at 12 43 43 PM - 显示开放端口表格,包含服务、版本、CVE ID、CVSS评分和风险等级 - 风险分布饼图(严重 / 高危 / 中危 / 低危) - 差异视图,比较当前扫描与上次扫描(新增端口、关闭的端口、风险变化) - 完整的扫描历史记录,支持单次扫描详情查看 - 任意两次历史扫描的并排对比 - 可下载的JSON报告 ## 核心功能 ### 安全感知扫描 - **输入验证**与shell注入防护——在任何扫描运行前,拒绝包含`;`、`&`、`|`、`` ` ``、`$`和其他危险字符的目标 - 支持IPv4、IPv6、CIDR范围和主机名(RFC 1123) ### CVE与CVSS风险评分 - 查询**NVD REST API v2.0**以获取每个服务的最高风险CVE - 提取CVSS v3.1评分(若不可用则回退到v3.0,然后是v2) - 内存中的CVE缓存可防止跨端口重复API调用 - 遇到速率限制错误时进行指数退避重试(6秒 → 12秒 → 24秒) - 当NVD无结果时,针对常见高风险端口使用备用端口提示表: | 端口 | 默认风险等级 | 原因 | |------|-------------|--------| | 23 | 严重 | Telnet — 明文远程访问 | | 445 | 严重 | SMB — EternalBlue/勒索软件目标 | | 3389 | 高危 | RDP — 暴露的远程桌面 | | 21 | 高危 | FTP — 未加密的文件传输 | | 22 | 中危 | SSH — 暴力破解风险 | | 443 | 低危 | HTTPS — 加密的Web流量 | ### 扫描历史与差异比较 - 每次扫描都保存到SQLite数据库(`scans` + `scan_results`表) - `diff_scans()`函数计算任意两次扫描之间的差异: - 新开放的端口 - 当前已关闭的端口 - 风险等级发生变化的端口 - 每次扫描后,仪表盘自动高亮显示差异 ### 三种扫描模式 | 模式 | 速度 | CVE查询 | 适用场景 | |------|-------|------------|----------| | 顺序扫描 | 慢 | ✅ 是 | 单个目标,深度扫描 | | 线程扫描 | 快 | ✅ 是 | 多个目标,并行处理 | | 超快扫描 | 非常快 | ❌ 否 | 快速侦察,无需CVE信息 | ## 安装 ``` git clone https://github.com/GEETANSH-9/PORT-SCANNER.git cd PORT-SCANNER pip install -r requirements.txt ``` **您的系统还需要安装Nmap:** - macOS: `brew install nmap` - Ubuntu/Debian: `sudo apt install nmap` - Windows: 从[nmap.org](https://nmap.org/download.html)下载 ## NVD API密钥(推荐) 没有API密钥时,NVD会将请求限制为约每30秒5个。要进行完整扫描,请获取免费密钥: 1. 访问 [https://nvd.nist.gov/developers/request-an-api-key](https://nvd.nist.gov/developers/request-an-api-key) 2. 使用您的邮箱注册——密钥会立即发送 3. 打开 `portscanner.py` 并设置: ``` NVD_API_KEY = "your-key-here" ``` ## 使用方法 ### 选项1 — Streamlit仪表盘(推荐) ``` streamlit run app.py ``` 在浏览器中打开 `http://localhost:8501`。输入目标地址,选择扫描模式,点击 **开始扫描**。 ### 选项2 — 命令行 ``` python portscanner.py ``` 系统会提示您选择三种扫描模式之一。结果会打印到终端并保存到 `scan_history.db`。 ### 选项3 — 作为模块导入 ``` from portscanner import scan_target, threaded_scan, get_scan_history # 单一目标 results = scan_target("scanme.nmap.org") # 并行多个目标 results = threaded_scan(["192.168.1.1", "192.168.1.2"]) # 检索历史 history = get_scan_history(limit=10) ``` ## 项目结构 ``` PORT-SCANNER/ ├── portscanner.py # Core engine — scanning, CVE lookup, risk scoring, SQLite history ├── app.py # Streamlit dashboard — UI, charts, history, diff view ├── requirements.txt # Dependencies └── README.md ``` ## 依赖要求 ``` python-nmap requests streamlit pandas matplotlib ``` 使用以下命令安装所有依赖:`pip install -r requirements.txt` ## 道德与法律声明 本工具仅用于**授权的安全测试**。只扫描您拥有或获得明确书面许可的系统。未经授权的端口扫描在您所在的司法管辖区可能属非法行为。 使用 `scanme.nmap.org` 进行安全测试——这是Nmap项目专门为此目的提供的公开可用主机。 ## 作者 **Geetansh Pasrija** 信息技术学士 — Manipal University Jaipur [![LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue?style=flat-square&logo=linkedin)](https://linkedin.com/in/geetansh-pasrija-bb1731259) [![GitHub](https://img.shields.io/badge/GitHub-GEETANSH--9-black?style=flat-square&logo=github)](https://github.com/GEETANSH-9) [![LeetCode](https://img.shields.io/badge/LeetCode-geetansh__18-orange?style=flat-square&logo=leetcode)](https://leetcode.com/u/geetansh_18/)
标签:CTI, CVE查找, CVSS评分, GPT, JSON报告, Kubernetes, SQLite数据库, Streamlit仪表板, 交互式仪表板, 内核监控, 反取证, 安全扫描, 安全评估, 实时扫描, 差异跟踪, 扫描历史, 数据统计, 时序注入, 漏洞管理, 端口扫描, 系统分析, 网络分析, 网络安全, 逆向工具, 隐私保护, 风险分布, 风险评分