yasssefrei/port-scanner

GitHub: yasssefrei/port-scanner

一个基于 Python 标准库开发的多线程 TCP 端口扫描器,专为网络安全教学实验设计,支持灵活配置端口范围和并发参数。

Stars: 0 | Forks: 0

# port-scanner — 并发 TCP 端口扫描器 使用 Python 3 编写的多线程 TCP 端口扫描器,**仅依赖标准库**。这是一个旨在用于教学的网络安全实验室项目:每一个技术选型都在 [`RAPPORT.md`](RAPPORT.md) 中进行了说明。 ## 功能 - TCP “connect” 扫描(通过 `socket.connect_ex` 完成完整的三次握手,无需 root 权限)。 - **并发**多线程扫描(`concurrent.futures.ThreadPoolExecutor`),可配置线程数。 - 灵活的端口指定方式:`22,80,443`、`1-1024`、`1-100,443,8080`。 - 可配置的单端口超时时间(速度与可靠性的折衷)。 - 通过端口识别常见服务(内置字典 + `socket.getservbyport` 回退)。 - 目标验证(字面量 IP 或 DNS 解析)。 - 每次启动时显示法律警告;未指定目标则不进行扫描。 - 区分端口状态:**open** / **closed** / **filtered**。 ## 安装说明 无需安装任何依赖。仅需 Python 3(已在 3.14 版本上测试)。 ``` git clone cd port-scanner python3 scan.py --help ``` ## 用法 ``` python3 scan.py 127.0.0.1 --ports 1-1024 --workers 100 --timeout 0.5 ``` | 参数 | 说明 | 默认值 | |--------------|---------------------------------------------|----------| | `cible` | **授权**扫描的 IP 或主机名 | — | | `--ports` | `22,80,443` / `1-1024` / `1-100,443,8080` | `1-1024` | | `--workers` | 并发线程数 | `100` | | `--timeout` | 单端口超时时间(秒) | `0.5` | ### 输出示例(扫描 `127.0.0.1`) ``` Démarrage du scan de 127.0.0.1 (127.0.0.1) : 100 port(s), 100 thread(s), timeout 0.3 s. Résultats du scan de 127.0.0.1 (127.0.0.1) ------------------------------------------------------------ PORT ÉTAT SERVICE 22 ouvert ssh ------------------------------------------------------------ 100 port(s) scanné(s) en 0.31 s — 1 ouvert(s), 99 fermé(s), 0 filtré(s). ``` (实际输出取决于你机器上正在监听的服务;扫描不到任何 open 端口属于正常现象。) ## 结构 ``` port-scanner/ ├── scan.py # point d'entrée -> scanner.cli:main ├── scanner/ │ ├── core.py # scan connect() d'un port unique │ ├── pool.py # scan concurrent (ThreadPoolExecutor) │ ├── services.py # mapping port -> service │ └── cli.py # argparse, validation cible, avertissement └── tests/ # tests unittest (localhost uniquement) ``` ## 测试 测试仅针对 `127.0.0.1` 进行扫描。为了测试对 open 端口的检测能力,程序会在本地一个空闲端口上启动一个临时服务器。 ``` python3 -m unittest discover -s tests -v ``` ## 文档 完整的说明文档(包括背景、法律框架、网络知识回顾、设计选择、局限性及改进方向)位于 [`RAPPORT.md`](RAPPORT.md) 中。 ## 许可证 采用 [MIT](LICENSE) 许可证分发。© 2026 Yassine Belhaj。
标签:Python, Socket编程, 插件系统, 数据统计, 无后门, 端口扫描, 网络安全, 逆向工具, 隐私保护