hamza-sidi-said/portscanner

GitHub: hamza-sidi-said/portscanner

一个使用 Python 标准库编写的初学者友好型 TCP 端口扫描器,通过多线程并发检测目标端口状态并抓取服务 Banner。

Stars: 0 | Forks: 1

# 简易端口扫描器 一个使用 Python 编写的适合初学者的 TCP 端口扫描器。它会扫描目标 IP 或域名上的一系列端口,并报告每个端口是 **OPEN**、**CLOSED** 还是 **FILTERED**。如果端口是开放的,它还会尝试抓取“banner”——即服务返回的一小段文本——这可以提示该端口上正在运行什么软件。 ## 工作原理 对于指定范围内的每个端口,脚本会尝试向目标发起 TCP 连接: - 如果连接成功 → 端口为 **OPEN**。 - 如果连接被拒绝 → 端口为 **CLOSED**。 - 如果连接超时且无响应 → 端口为 **FILTERED**(通常意味着防火墙正在静默丢弃数据包)。 为了加快扫描速度,检查端口时会使用线程池进行并发处理,而不是逐个检查。 ## 环境要求 - Python 3.7 或更高版本 - 无需外部库(仅使用标准库) ## 使用说明 ``` python port_scanner.py [--threads N] ``` **参数** | 参数 | 描述 | |---------------|-----------------------------------------------| | `target` | 要扫描的 IP 地址或域名 | | `start_port` | 要扫描的端口范围内的第一个端口 | | `end_port` | 要扫描的端口范围内的最后一个端口 | | `--threads` | (可选)同时检查的端口数量。默认值:50 | **示例** ``` # Scan 一个 domain 的 20-100 端口 python port_scanner.py scanme.nmap.org 20 100 # Scan 本地机器的前 1024 个端口,使用更多 threads 以提高速度 python port_scanner.py 192.168.1.10 1 1024 --threads 100 ``` ## 输出示例 ``` Target : scanme.nmap.org IP : 45.33.32.156 Ports : 20-25 Threads: 50 Results: [-] Port 20 is CLOSED [-] Port 21 is CLOSED [+] Port 22 (SSH) is OPEN Banner: SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2.13 [-] Port 23 is CLOSED [-] Port 24 is CLOSED [-] Port 25 is CLOSED ``` ## ⚠️ 法律与道德声明 仅扫描你**拥有**或获得**明确授权**进行测试的系统。未经授权扫描网络在许多国家是非法的,并且违反了大多数托管服务提供商的服务条款。本项目仅供教育目的使用(例如学习 socket、网络基础知识以及端口扫描器的工作原理)。 适合练习的安全目标是 `scanme.nmap.org`,该目标由 Nmap 项目专门提供用于测试扫描器。 ## 可能的改进(扩展项目的思路) - 添加 UDP 扫描支持 - 将结果导出为 CSV 或 JSON 文件 - 添加 `--verbose` 标志以同时显示关闭的端口 - 为更多端口添加服务/版本检测 - 添加一个简单的进度条。
标签:Python, 插件系统, 数据泄露防护, 数据统计, 无后门, 服务器安全, 端口扫描, 网络工具, 网络探测, 逆向工具