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