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, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 网络编程, 逆向工具, 隐私保护