izr3l/port-scanner

GitHub: izr3l/port-scanner

一款用于授权环境下对 Web 服务器执行 TCP 端口开放检测与 HTTP 安全标头基线评估的本地命令行工具。

Stars: 0 | Forks: 0

# 漏洞扫描器原型 v1.0 一款用于对 Web 服务器进行**授权的、非侵入式表面评估**的本地 CLI 工具。 ## 功能简介 该扫描器对每个目标执行两项轻量级检查: 1. **TCP 端口检查** — 测试常见端口是否开放(仅连接,不进行 banner grabbing)。 2. **HTTP 标头检查** — 获取 HTTP 响应标头,并评估是否存在与安全相关的标头(HSTS、CSP、X-Frame-Options 等)以及信息泄露标头(Server、X-Powered-By 等)。 不进行漏洞利用、不进行凭证测试、不进行 payload 传输、不进行原始数据包 (raw packet) 构造。 ## 安装说明 ``` python -m venv .venv # Windows .venv\Scripts\activate # macOS / Linux source .venv/bin/activate pip install -e ".[dev]" ``` ## 使用说明 ### 扫描单个目标 ``` python scanner.py --target example.com ``` ### 从文件扫描多个目标 ``` python scanner.py --targets hosts.txt ``` ### 指定自定义端口 ``` python scanner.py --target example.com --ports 80,443,8080 ``` ### 组合使用 ``` python scanner.py --targets hosts.txt --ports 22,80,443 ``` ### 目标文件格式 每行一个目标。空行和以 `#` 开头的行将被忽略: ``` # 我的授权目标 example.com 192.168.1.10 https://internal-app.local:8443 ``` ## 默认端口 ``` 21, 22, 25, 53, 80, 110, 143, 443, 445, 3306, 5432, 6379, 8080, 8443 ``` ## CLI 参数 | 参数 | 描述 | |----------|-------------| | `--target HOST` | 扫描单个主机或 URL | | `--targets FILE` | 扫描文件中列出的目标(每行一个) | | `--ports LIST` | 逗号分隔的端口列表(默认:使用上方的内置列表) | `--target` 和 `--targets` 互斥 —— 必须且只能提供其中一个。 ## 退出代码 | 代码 | 含义 | |------|---------| | 0 | 扫描执行完成 | | 1 | 参数/用法无效或目标输入错误 | | 2 | 意外的运行时故障 | ## 所评估的安全标头 | 标头 | 检查项 | |--------|-------| | `Strict-Transport-Security` | 在 HTTPS 上是否存在? | | `Content-Security-Policy` | 是否存在? | | `X-Frame-Options` | 是否存在? | | `X-Content-Type-Options` | 是否存在? | | `Referrer-Policy` | 是否存在? | | `Permissions-Policy` | 是否存在? | ## 所评估的泄露标头 | 标头 | 检查项 | |--------|-------| | `Server` | 是否泄露了服务器软件信息? | | `X-Powered-By` | 是否泄露了技术栈信息? | | `X-AspNet-Version` | 是否泄露了框架版本信息? | | `X-Generator` | 是否泄露了生成器信息? | | `Via` | 是否泄露了代理/中介信息? | ## 运行测试 ``` pytest ``` ## 格式化与代码检查 ``` black src tests scanner.py ruff check src tests scanner.py ``` ## 适用范围与局限性 **适用范围内:** - 仅 TCP 连接的端口检查 - HTTP 响应标头的获取与评估 - 控制台文本报告 - 单一或批量目标扫描 **适用范围外(未实现):** - CVE 匹配或漏洞数据库 - 身份验证或凭证测试 - 原始数据包 (raw packet) 构造 / SYN 扫描 - JSON / HTML 报告输出 - 持久化存储或数据库 - 目标发现 / 子域名枚举 - 端口范围语法(例如,`80-100`) - 绕过 TLS 验证 (`--insecure`)
标签:Python, 加密, 安全基线检查, 安全规则引擎, 实时处理, 插件系统, 数据统计, 文档结构分析, 无后门, 漏洞扫描器, 端口扫描, 网络安全, 逆向工具, 隐私保护