Bikeshsutihar/Port-TCP-scanner-python
GitHub: Bikeshsutihar/Port-TCP-scanner-python
一个用 Python 编写的多线程 TCP 端口扫描器,支持自定义端口范围扫描、服务识别与 banner 获取,适用于网络侦察与安全学习。
Stars: 1 | Forks: 0
# 🔍 高级 TCP 端口扫描器
一个使用 Python 编写的多线程 TCP 端口扫描器。解析目标
域名或 IP,并发扫描可配置的端口范围,识别
已知服务,并可选地获取服务 banner 以进行指纹识别。
## ✨ 功能
- 使用 `ThreadPoolExecutor` 进行多线程扫描,以实现快速获取结果
- 自定义端口范围扫描 (`-s` / `-e`)
- 可配置的 socket 超时 (`--timeout`)
- 已知端口的服务名称查询 (HTTP, SSH, FTP 等)
- 可选的 banner 获取 (`-b`) 以识别正在运行的服务
- 带时间戳的扫描开始/结束时间,以及经过排序、易于阅读的输出结果
## 🛠️ 构建技术
- Python 3
- `socket` (标准库)
- `concurrent.futures.ThreadPoolExecutor` 用于多线程处理
- `argparse` 用于 CLI 解析
## 🚀 用法
```
python3 scanner.py -s -e -t --timeout -b
```
| 标志 | 描述 | 默认值 |
|------|-------------|---------|
| `target` | 目标域名或 IP 地址 | 必填 |
| `-s`, `--start` | 起始端口 | 1 |
| `-e`, `--end` | 结束端口 | 1024 |
| `-t`, `--threads` | 线程数 | 100 |
| `--timeout` | socket 超时时间 (秒) | 1.0 |
| `-b`, `--banner` | 启用 banner 获取 | 禁用 |
### 示例
```
python3 scanner.py example.com -s 1 -e 1024 -t 100 --timeout 1.5 -b
```
### 输出示例
目标: example.com
解析 IP: 93.184.216.34
端口: 1-1024
线程数: 100
开始时间: 2026-07-30 14:02:11
发现的开放端口:
[+] 端口 80 开放 服务: http
[+] 端口 443 开放 服务: https
Banner: 无 banner
扫描完成。
结束时间: 2026-07-30 14:02:14
## ⚠️ 免责声明
此工具仅供**教育目的和授权的网络
测试使用**。请仅扫描您拥有或获得明确测试
权限的系统。未经授权的端口扫描可能会
违反您所在司法管辖区的计算机滥用法律。
## 📌 原因
旨在探索并发 socket 编程和网络侦察
基础知识 —— 这是一个从零开始的实用项目,用于学习端口
扫描器的底层工作原理。
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描