Sam-Paul1/python-port-scanner
GitHub: Sam-Paul1/python-port-scanner
一个基于 Python 标准库的多线程 TCP 端口扫描器,用于检测目标主机指定端口范围内的开放端口及常见服务。
Stars: 0 | Forks: 0
# Python 端口扫描器
一个使用 Python 编写的多线程 TCP 端口扫描器,可以扫描用户指定范围的端口、识别开放端口并检测常见服务。这个项目是作为我网络安全学习之旅的一部分而构建的,旨在获得有关网络、socket、多线程和命令行工具的实际操作经验。
## 功能
- 扫描用户定义的 TCP 端口范围
- 多线程扫描以提升性能
- 将主机名解析为 IP 地址
- 使用 `socket.getservbyport()` 检测常见服务
- 使用 `sys.argv` 实现命令行界面
- 对以下情况进行输入验证:
- 缺少或多余参数
- 非整数端口号
- 无效的端口范围
- 超出 1–65535 范围的端口号
- 显示:
- 开放端口
- 检测到的服务
- 扫描的总端口数
- 开放端口的数量
- 总扫描时间
## 使用的技术
- Python 3
- socket
- threading
- sys
- time
## 安装说明
克隆仓库:
```
git clone https://github.com/Sam-Paul1/python-port-scanner.git
cd python-port-scanner
```
不需要外部库。该项目仅使用 Python 的标准库。
## 用法
```
python port_scanner.py
```
示例:
```
python port_scanner.py google.com 20 100
```
## 输出示例
```
--------------------------------------------------
Scanning Target: google.com (142.250.xxx.xxx)
Port Range: 20 to 100
--------------------------------------------------
80 is open: http
Total Ports Scanned: 81
Total Open Ports: 1
Time taken: 0.24 seconds
Scan complete!
--------------------------------------------------
```
## 项目结构
```
python-port-scanner/
│
├── port_scanner.py
└── README.md
```
## 我学到了什么
构建这个项目帮助我理解了:
- TCP socket 编程
- DNS 主机名解析
- Python 中的多线程
- 命令行参数解析
- 异常处理
- 编写模块化的 Python 代码
- 网络端口扫描基础知识
## 未来改进
- Banner grabbing
- 使用 `ThreadPoolExecutor` 实现 thread pool
- 将扫描结果保存为 CSV 或 TXT
- UDP 端口扫描
- 服务版本检测
- OS 检测
- 扫描期间的进度指示器
## 免责声明
此工具仅供教育目的,以及用于扫描您拥有或获得明确许可进行测试的系统。未经授权扫描网络或系统可能会违反法律或组织规定。
## 作者
**Sam Abraham Paul**
计算机科学专业的学生,对 Cybersecurity、网络和道德黑客有浓厚的兴趣。
GitHub: https://github.com/Sam-Paul1
标签:Python, Socket编程, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 逆向工具