ayush1237518/Network-Port-Scanner
GitHub: ayush1237518/Network-Port-Scanner
基于 JavaFX 构建的多线程 TCP 端口扫描器,支持服务识别、banner 抓取和多格式报告导出,面向网络安全学习场景。
Stars: 0 | Forks: 0
# 🛡️ 网络端口扫描器
一款专业、多线程的 **TCP 端口扫描器**,拥有现代化的 JavaFX 桌面 GUI,使用 Java 21 构建。作为一个网络安全项目而设计,展示了清晰的架构、并发处理和安全编码实践。
## 📖 项目概述
网络端口扫描器允许您扫描单个 IPv4 地址或主机名,支持自定义端口范围,并使用并发工作线程池实现高速扫描。它将每个端口分类为 **Open**(开放)、**Closed**(关闭)或 **Filtered**(被过滤),根据端口号识别可能的服务,并且——对于开放端口——尝试执行安全的 banner grabbing 以获取服务版本信息。扫描结果可以导出为 **CSV**、**JSON** 或 **TXT** 格式以便生成报告。
该项目基于 SOLID 原则进行组织,在扫描逻辑、服务检测、导出策略、输入验证和 UI 层之间实现了清晰的分离,使其易于扩展或进行独立测试。
## ✨ 功能
- 支持扫描任意 IPv4 地址或主机名,包含 DNS 解析
- 可自定义起始端口、结束端口、超时时间和线程数
- 完善的输入验证及友好的错误提示
- 通过 `ExecutorService` 实现多线程扫描以获得高性能
- 端口状态分类:**Open / Closed / Filtered / Error**
- 支持 25+ 常见端口的服务名称识别(HTTP、HTTPS、SSH、FTP、SMTP、DNS、MySQL、PostgreSQL、Telnet、POP3、IMAP、RDP、SMB、MongoDB、Redis 等)
- 对开放端口执行安全的、不会导致崩溃的 banner grabbing
- 实时进度追踪:完成百分比、已扫描/剩余端口、已用时间以及预计剩余时间
- 扫描完成时提供完整的摘要统计信息
- 支持将报告导出为 **CSV**、**JSON** 和 **TXT** —— 无需数据库
- 采用蓝色霓虹点缀的现代化深色网络安全主题 JavaFX GUI
- 支持实时过滤和排序的结果表
- 实时活动日志面板
- 支持快捷键、工具提示和动画进度条
- 支持在运行中安全取消扫描
## 🖥️ 使用说明
1. 输入**目标** —— 一个 IPv4 地址(例如 `192.168.1.1`)或主机名(例如 `example.com`)。
2. 设置扫描范围的**起始端口**和**结束端口**。
3. 配置**超时时间**(毫秒)和**线程数**以进行性能调优。
4. 可选择启用 **banner grabbing** 来尝试读取服务 banner。
5. 点击 **Start Scan**(或按下 `Ctrl+Enter`)。
6. 在侧边栏查看实时进度 —— 百分比、已扫描端口、已用/剩余时间。
7. 使用**搜索框**过滤结果,或点击列标题进行排序。
8. 点击 **Export** 将报告保存为 CSV、JSON 或 TXT 格式。
9. 使用 **Stop Scan**(`Esc`)随时安全取消扫描。
### ⌨️ 快捷键
| 快捷键 | 操作 |
|----------------|------------------|
| `Ctrl + Enter` | 开始扫描 |
| `Esc` | 停止扫描 |
| `Ctrl + L` | 清除结果 |
| `Ctrl + F` | 聚焦过滤框 |
## 🔒 安全与道德声明
- 该扫描器仅执行**标准 TCP 连接扫描** —— 不使用 raw sockets,不进行数据包伪造,也不包含任何漏洞利用 payload。
- 本代码库中任何位置均不包含凭据、exploit 或攻击 payload。
- 在扫描您不拥有的任何网络之前,请务必获得授权。
## 📄 许可证
该项目基于 [MIT 许可证](LICENSE) 授权。
在线演示 - https://ayush1237518.github.io/Network-Port-Scanner/
标签:JavaFX, 域名枚举, 插件系统, 数据统计, 端口扫描, 网络安全, 蓝队工具, 隐私保护