Awatson2797/python-port-scanner
GitHub: Awatson2797/python-port-scanner
一个使用 Python 编写的多线程 TCP 端口扫描器,通过 socket 连接探测目标主机的开放端口并识别常见网络服务。
Stars: 0 | Forks: 1
# Python TCP 端口扫描器
这是一个使用 Python 的 `socket` 库编写的命令行 TCP 端口扫描器。该项目可以扫描目标主机或 IP 地址上用户指定范围的 TCP 端口,并识别开放端口上运行的常见网络服务。
## 功能
- 扫描主机名或 IP 地址
- 使用 DNS 将主机名解析为 IP 地址
- 扫描自定义的 TCP 端口范围
- 验证命令行端口范围
- 检测开放的 TCP 端口
- 显示已知端口的常见服务名称
- 测量总扫描时间
- 将扫描结果导出到 `scan_results.txt`
- 优雅地处理无效的主机名和端口号
- 多线程 TCP 端口扫描以提高性能
- 使用 `argparse` 实现命令行界面
## 技术
- Python 3
- Socket 编程 (`socket`)
- TCP/IP 网络
- 多线程 (`concurrent.futures`)
- 命令行参数解析 (`argparse`)
## 工作原理
1. 输入主机名或 IP 地址。
2. 程序使用 DNS 将主机名解析为 IP 地址。
3. 输入起始和结束端口号。
4. 扫描器尝试与每个端口建立 TCP 连接。
5. 显示开放的端口及其关联的服务名称。
6. 将结果导出到 `scan_results.txt`。
## 示例
```
python3 port_scanner.py scanme.nmap.org -p 20-100
Target : scanme.nmap.org
IP : 45.33.32.156
Ports : 20-100
Scanning...
===================
Scan Complete
===================
Open Ports Found: 2
22 SSH
80 HTTP
Scan completed in 0.14 seconds.
Results saved to 'scan_results.txt'
```
## 项目结构
```text
python-port-scanner/
├── port_scanner.py
├── README.md
├── requirements.txt
└── .gitignore
## 展现的技能
- Socket 编程
- TCP/IP 网络
- DNS 解析
- Python 函数
- 异常处理
- 输入验证
- 字典
- 列表和元组
- 文件 I/O
- 命令行界面开发
- 多线程
- Git & GitHub
## 未来改进
- [ ] Banner grabbing
- [ ] 服务/版本检测
- [ ] 将结果导出为 CSV
- [ ] 扫描进度指示器
- [ ] UDP 端口扫描
- [ ] 可选的终端彩色输出
## 免责声明
本项目仅出于教育目的,请仅用于扫描您拥有或已获得测试权限的系统。
## 用法
克隆仓库:
```
git clone https://github.com/Awatson2797/python-port-scanner.git
```
导航到项目目录:
```
cd python-port-scanner
```
运行应用程序:
```
python3 port_scanner.py
```
标签:Python, Socket编程, TCP/IP, 插件系统, 数据统计, 无后门, 端口扫描, 系统独立性, 网络工具