chandelankit662-eng/A-Port-Scanner-Tool
GitHub: chandelankit662-eng/A-Port-Scanner-Tool
一个纯 Python 标准库实现的快速多线程 TCP 端口扫描器,支持端口范围扫描、服务识别、Banner 抓取和 JSON 结果导出。
Stars: 0 | Forks: 0
# 端口扫描工具
一个使用 Python 编写的快速、多线程 TCP 端口扫描器。它可以扫描目标主机的指定端口范围(或列表),报告哪些端口处于开放状态,识别常见服务,并可选择抓取服务 banner。
## 功能特性
- 多线程扫描(可配置线程数)以提升速度
- 支持单个端口、范围或逗号分隔的列表(`22,80,443` 或 `1-1024`)
- 自动将主机名解析为 IP
- 通过端口号识别知名服务
- 可选在开放端口上抓取 banner
- 将结果导出为 JSON
- 扫描期间的进度指示器
## 环境要求
- Python 3.7+
- 无外部依赖(仅使用标准库)
## 用法
```
# 扫描主机的默认范围 (1-1024)
python port_scanner.py -t example.com
# 扫描特定范围
python port_scanner.py -t 192.168.1.1 -p 1-65535
# 扫描特定 ports
python port_scanner.py -t example.com -p 22,80,443,8080
# 增加 thread 数量以加快扫描速度
python port_scanner.py -t example.com -p 1-65535 --threads 300
# 抓取开放 ports 上的 service banners
python port_scanner.py -t example.com -p 1-1024 --banner
# 将结果保存到 JSON 文件
python port_scanner.py -t example.com -p 1-1024 -o results.json
```
## 参数说明
| 参数 | 描述 | 默认值 |
|------------------|---------------------------------------------------|-----------|
| `-t, --target` | 目标主机名或 IP 地址(必填) | — |
| `-p, --ports` | 扫描的端口:单个、范围或逗号分隔的列表 | `1-1024` |
| `--threads` | 并发线程数 | `100` |
| `--timeout` | Socket 超时时间(秒) | `1.0` |
| `--banner` | 尝试在开放端口上抓取 banner | 关闭 |
| `-o, --output` | 将结果保存为 JSON 的路径 | 无 |
## 输出示例
```
[*] Target : example.com (93.184.216.34)
[*] Ports : 1024 port(s) [1-1024]
[*] Threads : 100
[*] Banner grab : off
[*] Started at : 2026-07-14 10:23:36
--------------------------------------------------
[+] Found 2 open port(s):
PORT SERVICE BANNER
80 HTTP -
443 HTTPS -
[*] Scan completed in 3.42 seconds
```
## 可能的扩展(适合作为第一个贡献!)
- UDP 端口扫描
- OS 指纹识别
- 将结果导出为 CSV/HTML 报告
- 添加使用 SYN 扫描的 `--stealth` 模式(需要原生 socket / root)
- GUI 或 Web 仪表盘前端
- 基于检测到的服务/版本集成 CVE 查询
标签:Homebrew安装, 服务器安全, 逆向工具