Ashwini-t04/python-port-scanner
GitHub: Ashwini-t04/python-port-scanner
一个基于 Python 的 TCP 端口扫描器,用于探测目标主机上指定端口范围内的开放端口,帮助学习者理解网络编程与网络安全基础。
Stars: 0 | Forks: 0
# Python 网络端口扫描器
## 描述
这是一个基于 Python 的 TCP 端口扫描器,可以扫描目标 IP 地址或域名上用户指定范围的端口。该应用程序能够识别开放和关闭的端口,妥善处理常见的网络错误,并在扫描完成后显示开放端口的总数。构建此项目是为了学习 Python socket 编程、TCP/IP 网络和基本的网络安全概念。
## 功能
- 使用 IP 地址或域名扫描目标。
- 扫描用户自定义范围的 TCP 端口。
- 显示开放的端口。
- 统计并显示开放端口的总数。
- 妥善处理无效的主机名和网络错误。
- 允许用户使用 `Ctrl + C` 安全地停止扫描。
- 将扫描结果导出为 CSV
- 将结果导出为 JSON
## 使用技术
- Python 3
- Socket Module
- TCP/IP 网络通信
- Datetime Module
- Sys Module
## 工作原理
1. 用户输入目标 IP 地址或域名。
2. 用户指定要扫描的起始和结束端口号。
3. 程序将域名解析为相应的 IP 地址。
4. 它会创建一个 TCP socket 并尝试连接到指定范围内的每个端口。
5. 如果连接成功,该端口将显示为 **OPEN**。
6. 在检查完每个端口后,会在移至下一个端口之前关闭该 socket。
7. 扫描完所有端口后,程序将显示发现的开放端口总数。
8. 该程序还能妥善处理无效的主机名、网络错误和用户中断。
## 安装说明
1. 克隆仓库。
2. 导航到项目目录。
3. 确保您的系统上已安装 Python 3。
4. 使用 Python 运行应用程序。
## 运行说明
```
python scanner.py
```
出现提示时,请输入:
- 目标 IP 地址或域名
- 起始端口号
- 结束端口号
## 示例输出
```
--------------------------------------------------
Scanning Target: scanme.nmap.org
Time Started: 2026-07-14 14:30:15
--------------------------------------------------
[OPEN] Port 22
...
[OPEN] Port 80
--------------------------------------------------
Scan Completed
Total Open Ports: 2
--------------------------------------------------
```
## 项目结构
```
Python-Port-Scanner/
│
├── scanner.py
├── README.md
├── requirements.txt
├── .gitignore
├── LICENSE
└── screenshots/
└── scan_result.png
```
## 未来改进
- 为开放端口添加服务检测。
- 将扫描结果导出为 CSV 和 JSON 格式。
- 实现多线程以加快扫描速度。
- 支持使用 `argparse` 处理命令行参数。
- 通过带有颜色的终端输出改善用户界面。
- 显示总扫描时长。
## 免责声明
本项目仅供教育目的使用。请仅在您拥有或获得明确许可进行测试的系统和网络上使用此工具。未经授权的网络扫描可能会违反法律或组织政策。
标签:DNS查询工具, Python, Socket编程, TCP/IP, 云存储安全, 插件系统, 无后门, 端口扫描器, 网络安全, 网络扫描, 隐私保护