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, 域名枚举, 插件系统, 数据统计, 端口扫描, 网络安全, 蓝队工具, 隐私保护