veerlohith7-lang/port-scanner
GitHub: veerlohith7-lang/port-scanner
一个用 Python 从零实现的 TCP 端口扫描器,支持多线程并发扫描、Banner 抓取和结果导出,帮助开发者学习网络安全基础与 socket 编程。
Stars: 0 | Forks: 0
# Python TCP 端口扫描器 — PRJ-02



## 工作原理
通过 Python sockets 使用 TCP 连接扫描:
- `connect_ex()` 返回 `0` → 端口为 **开启 (OPEN)** 状态
- 非 `0` 返回值 → 端口为 **关闭 (CLOSED)** 状态
- 100 个线程并发运行 → 比顺序执行快 10 倍
## 使用方法
```
python3 scanner.py 192.168.56.2
python3 scanner.py 192.168.56.2 -b
python3 scanner.py 192.168.56.2 -p 1-1024 -b -o results.txt
```
## 选项
| 标志 | 功能 | 默认值 |
|---|---|---|
| target | 目标 IP | 必填 |
| -p | 端口范围 | 1-1024 |
| -t | 线程数 | 100 |
| -b | 获取 Banners | 关闭 |
| -o | 保存至文件 | 关闭 |
## 针对 Metasploitable 2 的扫描结果
```
21/tcp FTP 220 (vsFTPd 2.3.4)
22/tcp SSH SSH-2.0-OpenSSH_4.7p1
23/tcp Telnet metasploitable login:
1524/tcp Ingreslock root@metasploitable:/#
3306/tcp MySQL 5.0.51a-3ubuntu5
[+] 23 open ports in 11s
```
## 版本历史
| 版本 | 添加的功能 | 掌握的概念 |
|---|---|---|
| v1 | 单端口扫描 | TCP sockets, connect_ex() |
| v2 | 端口范围循环 | 顺序执行 = 缓慢 |
| v3 | 多线程 | ThreadPoolExecutor, 锁 |
| v4 | 服务名称 | 字典查找 |
| v5 | Banners + CLI | argparse, recv() |
## 我学到了什么
- TCP 连接扫描以及 SYN/SYN-ACK/RST 握手过程
- Python `socket` 模块 — connect_ex, settimeout, recv
- 使用 ThreadPoolExecutor 进行多线程处理 — 100 个并发扫描
- 使用 `threading.Lock()` 保证线程安全
- Banner 抓取 — 读取服务版本公告
- 为什么 Nmap 更强大 — 以及它究竟有何不同
## 实验环境
基于 [PRJ-01 家庭实验室](../cybersec-home-lab) 构建
- 攻击者:Kali Linux 2026.1 — 192.168.56.3
- 目标:Metasploitable 2 — 192.168.56.2
- 网络:隔离的 Host-Only 192.168.56.0/24
标签:Banner抓取, Python, 插件系统, 数据统计, 无后门, 端口扫描, 系统独立性, 网络扫描器, 逆向工具