rheasushanth/port-scanner
GitHub: rheasushanth/port-scanner
一款轻量级多协议端口扫描器,支持TCP/UDP/SYN三种扫描模式,具备服务识别、Banner抓取和分布式扫描能力。
Stars: 0 | Forks: 0
# 🔍 自定义端口扫描器
一款快速、多协议的 Python 端口扫描器,具有简洁的 GUI — 支持针对单个 IP、CIDR 范围和 IP 破折号范围进行 TCP、UDP 和 SYN 扫描。
## ✨ 功能特性
- **三种扫描模式** — TCP connect 扫描、UDP 扫描和原始 SYN 扫描
- **异步 TCP 扫描** — 通过 `asyncio` 进行并发扫描以实现高吞吐量
- **多主机支持** — 扫描单个 IP、CIDR 块 (`192.168.1.0/24`) 或破折号范围 (`192.168.1.1-192.168.1.10`)
- **Banner 抓取** — 从开放端口提取服务 banner 和版本信息
- **服务检测** — 将端口号映射到已知的服务名称
- **Tkinter GUI** — 结果显示在可排序的表格中,包含主机、端口、服务、版本和状态列
- **分布式架构** — 父/子节点设计,用于多节点扫描协调
## 📁 项目结构
```
port-scanner/
├── gui_app.py # Tkinter GUI — main entry point
├── scanner_core.py # Core async TCP, UDP, and SYN scanning logic
├── banner_grabber.py # Connects to open ports and extracts service banners
├── service_map.py # Maps port numbers to service names
├── parent_node.py # Orchestrates distributed scanning across child nodes
└── child_node.py # Worker node that receives and executes scan jobs
```
## 🚀 快速开始
### 前置条件
- Python 3.9+
- `tkinter`(通常随 Python 一起提供;在 Linux 上:`sudo apt install python3-tk`)
- 不需要第三方包 — 仅使用标准库
### 安装
```
git clone https://github.com/rheasushanth/port-scanner.git
cd port-scanner
```
### 运行 GUI
```
python gui_app.py
```
### 从代码运行扫描
```
import asyncio
from scanner_core import scan_multiple_hosts
results = asyncio.run(
scan_multiple_hosts("192.168.1.0/24", start_port=1, end_port=1024, scan_type="tcp")
)
for host, ports in results.items():
print(f"{host}: {ports}")
```
## 🖥️ GUI 用法
1. 输入目标 — 单个 IP、CIDR 范围或破折号范围
2. 设置起始和结束端口号
3. 选择扫描类型:**TCP**、**UDP** 或 **SYN**
4. 点击 **Start Scan**
结果显示在表格中,展示每个开放端口的主机、端口号、检测到的服务、版本 banner 和状态。
## 🔬 扫描类型
| Type | Description | Notes |
|------|-------------|-------|
| **TCP** | 完全异步 connect 扫描 | 快速;无需提升权限即可运行 |
| **UDP** | 发送探测包并等待响应 | 较慢;存在 open/filtered 模糊性 |
| **SYN** | 原始套接字半开扫描 | 在 Linux 上需要 `sudo` / root 权限 |
## 🌐 IP 范围格式
| Format | Example |
|--------|---------|
| 单个 IP | `192.168.1.5` |
| CIDR | `192.168.1.0/24` |
| 破折号范围 | `192.168.1.1-192.168.1.50` |
## ⚠️ 法律免责声明
此工具旨在用于您拥有或拥有明确测试权限的网络和系统。未经授权的端口扫描在您所在的司法管辖区可能是非法的。请负责任地使用。
## 📄 许可证
本项目是开源的。有关详细信息,请参阅 [LICENSE](LICENSE)。
标签:Asyncio, Banner抓取, DNS枚举, GitHub, GUI应用, IOC 共享, IP范围扫描, Python, Qt框架, SYN扫描, TCP扫描, Tkinter, 分布式扫描, 域名解析, 密码管理, 开源安全工具, 异步扫描, 插件系统, 数据统计, 无后门, 服务器安全, 服务识别, 漏洞扫描辅助, 端口扫描, 网络安全工具, 计算机取证, 轻量级扫描器, 逆向工具, 逆向工程平台, 防御绕过