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, 加密, 安全基线检查, 安全规则引擎, 实时处理, 插件系统, 数据统计, 文档结构分析, 无后门, 漏洞扫描器, 端口扫描, 网络安全, 逆向工具, 隐私保护