Donovan-Nudrak/Scan_Ports
GitHub: Donovan-Nudrak/Scan_Ports
一个用 Python 编写的轻量级教育型 TCP 端口扫描器,支持多线程并发扫描和 banner grabbing。
Stars: 0 | Forks: 0
# 迷你端口扫描器(教育工具)
一个使用 Python 编写的轻量级 TCP 端口扫描器,支持并发和可选的 banner grabbing 功能。
## 功能
- 基于连接的 TCP 端口扫描
- 多线程执行以提升性能
- 可选的 banner grabbing 以识别服务
- 灵活的端口输入(单个端口、范围、混合)
- 将结果导出为 JSON 或 CSV
## 工作原理
扫描器尝试与给定主机上的一系列目标端口建立 TCP 连接。
- 如果连接成功 → 端口被标记为 **开放**
- 如果启用,工具将尝试从开放端口读取服务 banner
- 收集所有结果并可选择导出
## 使用方法
```
chmod +x scan.py
python3 scan.py [options]
```
## 参数
### 必需参数
- `host`
要扫描的目标 IP 或域名
### 可选参数
- `-p, --ports`
要扫描的端口
示例:`22,80,443` 或 `1-1000`
默认值:`22,80,443,3306,8080-8082`
- `-t, --timeout`
每个端口的连接超时时间(秒)
默认值:`1.0`
- `-w, --workers`
并发线程数
默认值:`100`
- `--no-banner`
禁用 banner grabbing
- `-o, --output`
将结果保存到文件
支持的格式:
- `.json`
- `.csv`
## 示例
### 基本扫描
```
python3 scan.py 127.0.0.1
```
### 自定义端口
```
python3 scan.py 192.168.1.1 -p 22,80,443
```
### 端口范围
```
python3 scan.py 192.168.1.1 -p 1-1000
```
### 快速扫描并输出
```
python3 scan.py 192.168.1.1 -w 200 -o result.json
```
### 禁用 banner grabbing
```
python3 scan.py 192.168.1.1 --no-banner
```
## 输出格式
每条结果包含:
```
{
"port": 22,
"open": true,
"banner": "SSH-2.0-OpenSSH_8.2",
"error": null
}
```
## 技术说明
- 使用 `socket` 进行 TCP 连接
- 使用 `ThreadPoolExecutor` 实现并发
- banner grabbing 使用基本的 recv/send 探测
- 结果按端口号排序
## 免责声明
标签:Banner抓取, Linux工具, Python, Qt框架, Socket编程, TCP扫描, 二进制发布, 安全脚本, 并发编程, 开源工具, 插件系统, 教育工具, 数据统计, 无后门, 服务识别, 端口扫描, 端口探测, 系统分析, 系统独立性, 网安工具, 网络分析, 网络安全, 网络编程, 轻量级工具, 逆向工具, 隐私保护