harshit-12910/python-port-scanner
GitHub: harshit-12910/python-port-scanner
一个基于 Python 多线程的 TCP 端口扫描器,用于检测目标主机开放端口、识别服务并进行 Banner 抓取,最终生成 JSON 报告。
Stars: 0 | Forks: 0
# Python TCP 端口扫描器
一个使用 Python 编写的多线程 TCP 端口扫描器,能够扫描目标主机、识别开放端口、检测常见服务、执行基本的 banner grabbing,并将扫描结果导出为 JSON。
## 功能
* 扫描 IP 地址或主机名
* 可配置的端口范围 (1–65535)
* 主机名到 IP 的解析
* 使用 `ThreadPoolExecutor` 进行多线程扫描
* 检测常见的 TCP 服务
* 对支持的服务进行基本的 banner grabbing
* 生成 JSON 报告
* 输入验证和错误处理
* 扫描性能测量
* 简洁的命令行界面
## 使用的技术
* Python 3
* Socket 编程
* TCP/IP 网络
* ThreadPoolExecutor
* JSON
* Time 模块
## 项目结构
```
python-port-scanner/
│
├── scanner.py
├── README.md
├── scan_results.json
└── screenshots/
```
## 工作原理
1. 接收 IP 地址或主机名。
2. 将主机名解析为 IPv4 地址。
3. 验证用户指定的端口范围。
4. 创建工作线程池。
5. 尝试与每个端口建立 TCP 连接。
6. 使用 Python 的 socket 库检测常见服务。
7. 在可能的情况下执行基本的 banner grabbing。
8. 显示发现的开放端口。
9. 将结果导出为 JSON 报告。
## 示例
```
==============================
Python TCP Port Scanner
==============================
Target : scanme.nmap.org
IP : 45.xxx.xxx.xxx
Ports : 1-1000
Scanning...
[OPEN] Port 22 SSH
└── Banner: SSH-2.0-OpenSSH_9.6
[OPEN] Port 80 HTTP
└── Banner: HTTP/1.1 200 OK | Server: Apache
==============================
Scan Summary
==============================
Open Ports Found : 2
Scan Time : 1.84 seconds
Results Saved : scan_results.json
```
## JSON 输出示例
```
{
"target": "scanme.nmap.org",
"ip": "45.xxx.xxx.xxx",
"ports_scanned": "1-1000",
"open_port_count": 2,
"scan_time_seconds": 1.84,
"results": [
{
"port": 22,
"service": "SSH",
"banner": "SSH-2.0-OpenSSH_9.6"
},
{
"port": 80,
"service": "HTTP",
"banner": "HTTP/1.1 200 OK | Server: Apache"
}
]
}
```
## 展示的技能
* Python 编程
* Socket 编程
* TCP/IP 网络
* 多线程
* 网络服务检测
* Banner Grabbing
* JSON 数据处理
* 错误处理
* 命令行界面开发
## 未来改进
* 支持 CSV 导出
* UDP 端口扫描
* 使用 `argparse` 处理命令行参数
* 自定义超时配置
* 彩色终端输出
* 支持 IPv6
## 学习成果
这个项目巩固了我对 TCP 通信、Socket 编程、使用线程池的并发执行、服务识别以及基本网络侦察技术的理解,同时构建了一个实用的命令行网络工具。
标签:Homebrew安装, Python, TCP/IP, 插件系统, 数据统计, 无后门, 服务器安全, 端口扫描, 网络工具, 逆向工具