Arnav-Y/Port_Scanner

GitHub: Arnav-Y/Port_Scanner

基于 Python socket 库的 TCP 端口扫描工具,提供单线程与多线程两种版本,用于检测目标 IP 的开放端口及对应服务。

Stars: 0 | Forks: 0

# Python 端口扫描器 一个使用 `socket` 库构建的 TCP 端口扫描器。 提供两个版本 —— 单线程和多线程。 这两个版本都会按顺序逐行打印开放的端口。 ## 版本 | 文件 | 速度 | 工作原理 | |---|---|---| | `port_scanner.py` | 较慢 | 一次扫描一个端口,为关闭的端口打印点号 | | `port_scanner_fast.py` | 快速 | 使用线程同时扫描所有端口 | ## 如何运行 ``` python3 port_scanner.py ``` ``` python3 port_scanner_fast.py ``` 程序在运行时会提示你输入目标 IP: ``` Enter the IP: 192.168.1.1 ``` 要更改端口范围或超时时间,请编辑任一文件顶部的配置: ``` start_port = 1 end_port = 1024 timeout = 0.5 ``` ## 示例输出 ``` ================================================== Port Scanner ================================================== Target IP : 192.168.1.1 Port Range : 1 - 1024 Started at : 2024-06-18 10:30:00 -------------------------------------------------- ....................................... [OPEN] port 22 ( ssh ) [OPEN] port 80 ( http ) [OPEN] port 443 ( https ) ================================================== Scan Complete. 3 open port(s) found. ================================================== ``` ## 涵盖概念 | 概念 | 出现位置 | |---|---| | TCP 连接 | `socket.connect_ex()` —— 尝试建立连接 | | 端口状态 | 返回值为 `0` 表示开放,其他值表示关闭 | | 超时 | `settimeout()` 防止在无响应的端口上挂起 | | 服务映射 | `getservbyport()` 查找 IANA 服务名称 | | 排序输出 | `open_ports.sort()` 按顺序逐行打印结果 | | 多线程 | `threading.Thread` 同时启动所有 1024 个扫描 | | 线程安全 | `threading.Lock()` 防止对共享列表产生竞态条件 | | 线程同步 | `t.join()` 在打印前等待所有线程完成 | ## 法律与道德声明 ## 构建工具 - Python 3 - `socket`(内置) - `datetime`(内置) - `threading`(内置 —— 仅限快速版本)
标签:Python, 插件系统, 数据统计, 无后门, 端口扫描, 网络工具, 网络编程, 逆向工具