AMALRAJ24/PORT-SCANNER
GitHub: AMALRAJ24/PORT-SCANNER
一个基于Python的多线程TCP端口扫描器,用于快速识别目标主机的开放端口与服务。
Stars: 0 | Forks: 0
# 🔍 端口扫描器
一个使用 Python 构建的多线程 TCP 端口扫描器,用于识别目标主机上的开放服务。模拟了渗透测试中使用的核心侦察方法论。
## 📸 示例输出
```
==================================================
Target : 127.0.0.1 (127.0.0.1)
Ports : Common (50)
Threads : 100
Started : 2026-04-21 10:30:00
==================================================
[OPEN] 21 FTP
[OPEN] 53 DNS
[OPEN] 443 HTTPS
==================================================
Scan complete: 10:30:08
Ports scanned : 50
Open ports : 3
PORT SERVICE
────────────────────
21 FTP
53 DNS
443 HTTPS
==================================================
```
## 🚀 功能特性
- 多线程扫描(最多 500 个线程),结果快速
- 支持单个端口、端口范围、逗号分隔端口和常见端口模式
- 自动服务指纹识别(SSH、FTP、HTTP、RDP、MySQL、MongoDB 等)
- 主机名解析 — 兼容 IP 地址和域名
- 干净的 Ctrl+C 退出处理
- 扫描完成后自动退出
## 🛠️ 要求
- Python 3.6+
- 无需外部依赖 — 仅使用 Python 标准库(`socket`、`threading`、`queue`)
## ⚙️ 安装
```
git clone https://github.com/AMALRAJ24/port-scanner.git
cd port-scanner
```
无需 pip 安装。
## 📖 使用方法
```
# 扫描常用 50 个端口
python port_scanner.py -t 127.0.0.1 --common
# 扫描端口范围
python port_scanner.py -t 192.168.1.1 -p 1-1000
# 扫描特定端口
python port_scanner.py -t 192.168.1.1 -p 80,443,22,3306
# 使用更多线程扫描(更快)
python port_scanner.py -t 192.168.1.1 -p 1-5000 --threads 300
```
### 参数说明
| 参数 | 描述 | 示例 |
|------|------|------|
| `-t` | 目标 IP 或主机名 **(必需)** | `-t 192.168.1.1` |
| `-p` | 要扫描的端口 | `-p 80` 或 `-p 1-1000` 或 `-p 80,443` |
| `--common` | 扫描 50 个最常用的渗透测试端口 | `--common` |
| `--threads` | 线程数量(默认:100,最大:500) | `--threads 200` |
## 🧠 工作原理
1. 将目标主机名解析为 IP 地址
2. 使用 Python 的 `threading` 和 `queue` 模块创建线程池
3. 每个线程尝试对端口执行 TCP 连接(`connect_ex`)
4. 如果连接成功(返回 0),则标记该端口为 **OPEN**
5. 将开放端口与指纹字典进行匹配以识别服务
6. 扫描完成后打印汇总信息
这与 **Nmap** 和 **Masscan** 等工具使用的核心机制相同。
## 📡 扫描的常见端口(--common 模式)
| 端口 | 服务 | 端口 | 服务 |
|------|------|------|------|
| 21 | FTP | 3306 | MySQL |
| 22 | SSH | 3389 | RDP |
| 23 | Telnet | 5432 | PostgreSQL |
| 25 | SMTP | 5900 | VNC |
| 53 | DNS | 6379 | Redis |
| 80 | HTTP | 8080 | HTTP-Alt |
| 443 | HTTPS | 27017 | MongoDB |
| 445 | SMB | 9200 | Elasticsearch |
## 🔐 合法与道德使用
仅限用于以下场景:
- 自己的机器(`127.0.0.1`)
- 自己的家庭/实验室网络(`192.168.x.x`)
- 实践目标如 `scanme.nmap.org`(Nmap 官方允许)
- 你已获得**书面授权**的系统
未经授权的端口扫描可能违反你所在国家的计算机欺诈法律。
## 📚 演示概念
- TCP/IP 网络与套接字编程
- 多线程与生产者-消费者模式
- 网络侦察方法论(PTES / CEH 框架)
- 服务枚举 — 渗透测试第一步
## 👤 作者
**Amal Raj R**
- GitHub:[@AMALRAJ24](https://github.com/AMALRAJ24)
- LinkedIn:[ajx4](https://linkedin.com/in/ajx4)
- TryHackMe:全球前 25%
## 📄 许可证
本项目采用 MIT 许可证 — 可自由使用、修改和分发,但需保留署名。
标签:DNS, DNS查询工具, HTTPS, MongoDB, Python, RDP, Scrypt密钥派生, SSH, TCP扫描, 二进制发布, 开源工具, 情报分析, 数据泄露防护, 数据统计, 无后门, 服务指纹识别, 端口扫描, 端口扫描器, 网络安全, 网络探测, 网络诊断, 逆向工具, 隐私保护