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