Vijayambade/Network-Port-Scanner-with-GUI
GitHub: Vijayambade/Network-Port-Scanner-with-GUI
一款零依赖的Python端口扫描工具,提供图形界面与命令行双模式,支持TCP/UDP扫描、服务识别与结果导出。
Stars: 0 | Forks: 0
# 🔍 带图形界面的网络端口扫描器
一款基于 Python 的网络安全工具,可扫描任意目标 IP、主机名或 CIDR 范围的 TCP 和 UDP 端口——具有使用 Tkinter 构建的深色终端风格图形用户界面。
## ✨ 功能特性
- **TCP 与 UDP 扫描** — 单独或同时扫描两种协议
- **多线程** — 使用 `ThreadPoolExecutor` 进行并发扫描(支持 100+ 线程)
- **Banner 抓取** — 识别开放 TCP 端口上的服务 Banner
- **CIDR 范围支持** — 扫描整个子网(例如 `192.168.1.0/24`)
- **常见服务检测** — 识别 60 多种知名服务(SSH, HTTP, MySQL, Redis 等)
- **实时进度** — 扫描时显示实时进度条和控制台输出
- **颜色编码结果** — 开放(绿色)、已过滤(黄色)、关闭(暗淡)端口状态
- **导出** — 将结果保存为 JSON 或 CSV 以便报告
- **深色 GUI** — 专业的终端风格 Tkinter 界面
## ⚙️ 系统要求
- Python 3.10 或更高版本
- 无需外部依赖包——仅使用 Python 标准库:
- `socket`, `threading`, `concurrent.futures`
- `tkinter`, `json`, `csv`, `ipaddress`
## 🖥️ 用法
### 运行 GUI
```
python Scanner_GUI.py
```
### 通过 CLI 运行
```
python Scanner.py [options]
```
## 🖱️ GUI 概览
| 区域 | 描述 |
|----------------|--------------------------------------------------------|
| **Target** | 输入 IP 地址、主机名或 CIDR 范围 |
| **Ports** | `common` 扫描常用端口,或自定义如 `1-1024` |
| **Protocol** | 选择 TCP、UDP 或两者 |
| **Options** | 切换 Banner 抓取、显示关闭端口、设置超时 |
| **Export** | 选择 JSON 和 CSV 文件的输出路径 |
| **Console** | 带颜色编码状态的实时流输出 |
| **Results** | 包含端口、协议、状态、服务、延迟、Banner 的表格 |
## 🔧 CLI 选项
| 标志 | 描述 | 默认值 |
|---------------------|--------------------------------------------------|-----------|
| `target` | 目标 IP、主机名或 CIDR 范围 | 必填 |
| `-p, --ports` | 端口规格:`common`, `1-1024`, `22,80,443` | `common` |
| `--tcp` | 启用 TCP 扫描 | 启用 |
| `--udp` | 启用 UDP 扫描 | 禁用 |
| `--banners` | 尝试抓取 Banner(仅限 TCP) | 关闭 |
| `--closed` | 在输出中显示关闭的端口 | 关闭 |
| `--timeout` | Socket 超时(秒) | `1.0` |
| `--threads` | 线程池大小 | `100` |
| `--export-json` | 将结果导出为 JSON 文件 | — |
| `--export-csv` | 将结果导出为 CSV 文件 | — |
| `-v, --verbose` | 详细输出 | 关闭 |
## 📤 导出格式
### JSON
```
{
"target": "45.33.32.156",
"hostname": "scanme.nmap.org",
"scan_start": "2026-04-02T10:00:00",
"scan_end": "2026-04-02T10:00:01",
"duration_sec": 1.02,
"total_ports_scanned": 3,
"open_ports": [22, 80],
"results": [
{ "port": 22, "protocol": "TCP", "state": "open", "service": "SSH", "banner": "", "latency_ms": 424.6 }
]
}
```
### CSV
```
target,hostname,port,protocol,state,service,banner,latency_ms
45.33.32.156,scanme.nmap.org,22,TCP,open,SSH,,424.6
45.33.32.156,scanme.nmap.org,80,TCP,open,HTTP,,410.4
```
## 🧰 使用技术
| 技术 | 用途 |
|----------------------|--------------------------------------------------|
| Python 3 | 核心语言 |
| Tkinter | GUI 框架(内置) |
| socket | TCP/UDP 端口探测与 Banner 抓取 |
| ThreadPoolExecutor | 多线程并发扫描 |
| ipaddress | CIDR 范围解析与主机枚举 |
| json / csv | 结果导出 |
## 💡 示例
**扫描公网主机的常用端口:**
```
python Scanner.py scanme.nmap.org
```
**扫描特定端口:**
```
python Scanner.py 192.168.1.1 -p 22,80,443,8080
```
**包含 UDP 和 Banner 抓取的完整扫描:**
```
python Scanner.py 10.0.0.1 -p 1-1024 --tcp --udp --banners
```
**导出结果:**
```
python Scanner.py example.com --export-json results.json --export-csv results.csv
```
**扫描子网:**
```
python Scanner.py 192.168.1.0/24
```
## 📄 许可证
本项目是 AICTE 实习计划(2026 年 3 月)的一部分开发完成的。
仅供教育用途。请勿扫描您不拥有或未获授权测试的网络。
标签:Banner抓取, CIDR支持, Dark-Mode, DNS查询工具, GitHub, Groq, GUI图形界面, Python, Qt框架, Socket编程, TCP扫描, Tkinter, 代码生成, 密码管理, 开源安全工具, 插件系统, 无后门, 服务器安全, 服务识别, 渗透测试工具, 漏洞扫描辅助, 端口扫描器, 网络安全, 逆向工具, 逆向工程平台, 隐私保护