bali-36/port-scanner
GitHub: bali-36/port-scanner
一个使用 Python 构建的初学者友好的命令行端口扫描工具,通过 socket 连接检测目标主机上开放端口并实时展示扫描结果。
Stars: 1 | Forks: 1
# 端口扫描器
一个简单而有效的基于命令行的端口扫描器,使用 Python 构建。此工具允许用户扫描目标主机,以识别 0–65535 范围内的开放端口。该脚本对初学者很友好,并演示了 Python 中网络编程和 socket 通信的基础概念。
## 功能
- **用户友好的界面:** 使用 `pyfiglet` 库显示横幅。
- **目标扫描:** 接受目标 IP 地址并扫描从 0 到 65535 的端口。
- **实时更新:** 实时显示扫描进度并列出开放端口。
- **错误处理:** 优雅地处理无效 IP、主机名解析问题或用户中断等异常情况。
- **时间戳跟踪:** 记录扫描过程的开始和结束时间,以便进行时间跟踪。
## 环境要求
- Python 3.8+
- 库:
- `pyfiglet`
- `socket`
使用以下命令安装所需的依赖项:
```
pip install pyfiglet
```
## 用法
1. 克隆或下载此代码库。
```
git clone https://github.com/bali-36/port-scanner.git
```
2. 打开终端并导航到包含 `Port_Scanner.py` 的文件夹。
```
cd port-scanner
```
3. 使用以下命令运行脚本:
```
python Port_Scanner.py
```
将 `` 替换为你要扫描的目标 IP 地址。
## 示例
```
python Port_Scanner.py 192.168.1.1
```
## 输出:
```
PORT SCANNER
--------------------------------------------------
Scanning Target: 192.168.1.1
Scanning started at: 2025-01-17 14:00:00
--------------------------------------------------
Port 80 is open
Port 443 is open
...
--------------------------------------------------
Scanning ended at: 2025-01-17 14:00:15
Total Scanning time: 15 seconds
```
## 文件详情
`Port_Scanner.py`:用于扫描目标主机端口的主脚本。
## 工作原理
1. 该脚本接受目标 IP 地址作为命令行参数。
2. 解析主机名以确保其有效。
3. 遍历端口 0–65535,尝试使用 `socket` 库建立连接。
4. 如果连接成功,则将该端口标记为开放。
5. 最后显示开放端口和总扫描时间。
## 错误处理
1. **无效参数**:如果缺少 IP 地址,则提示用户。
2. **主机名解析错误**:如果无法解析主机名,则发出通知。
3. **Socket 错误**:如果服务器无响应,则发出通知。
4. **键盘中断**:如果被用户中断,则安全退出程序。
## 注意事项
* 此扫描器仅供教育和授权使用。未经授权扫描系统是非法且不道德的。
## 未来改进
* 添加对自定义端口范围的支持。
* 启用多线程扫描以获得更快的结果。
* 增强输出格式以提高可读性。
* 包含高级功能,如服务检测和协议分析。
## 免责声明:
此工具仅用于教育目的。在扫描任何目标之前,请确保你已获得适当的授权。
标签:Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 网络编程, 逆向工具, 隐私保护