nsergej/PortScanner

GitHub: nsergej/PortScanner

一款轻量级的 Windows 多线程 TCP 端口扫描器,支持全端口范围扫描并自动导出多种格式报告。

Stars: 0 | Forks: 0

[![发布](https://img.shields.io/github/v/release/nsergej/PortScanner)](https://github.com/nsergej/PortScanner/releases) [![许可证](https://img.shields.io/github/license/nsergej/PortScanner)](LICENSE) # PortScanner ## 项目描述 PortScanner 是一款适用于 Windows 的带有图形界面的多线程 TCP 端口扫描器。它可以检查一个数字 IPv4 地址上可配置的 TCP 端口范围,列出开放的端口,测量连接响应时间,并生成 HTML、CSV 和 JSON 报告。 ## 当前项目状态 当前记录的版本为 **1.0.0**(仓库标签 `V1.0`)。该仓库包含 Delphi VCL 源代码、应用程序资产和示例报告。生成的 Delphi 项目和资源文件未被跟踪,因此在从源代码构建之前,必须配置本地项目资源。 该仓库目前不包含自动构建或自动测试。 ## 截图 PortScanner 1.0 application window ## 主要功能 - 一次扫描一个数字 IPv4 地址 - 支持从 1 到 65535 的 TCP 端口 - 最多使用 256 个工作线程 - 使用带有固定连接超时的非阻塞 WinSock 连接 - 按端口号升序列出开放端口 - 显示每个开放端口的响应时间 - 显示扫描进度、开放端口数和扫描速度 - 通过同一个“开始/停止”按钮停止正在进行的扫描 - 自动将完成的扫描结果导出为 HTML、CSV 和 JSON - 根据请求通过 `icanhazip.com` 获取外部 IPv4 地址 ## 当前限制 - 仅支持 IPv4;不支持 IPv6 - 仅支持数字 IPv4 地址;不接受 DNS 主机名 - 每次扫描只能有一个目标地址和一个连续的端口范围 - 工作线程数和连接超时时间在源代码中固定 - 仅显示和导出开放的端口 - 报告会自动导出;没有手动导出命令或输出文件夹选择器 - 用户手动停止的扫描不会自动导出 ## 系统要求 ### 运行 PortScanner - Windows 10 或更高版本 - 与授权目标的网络连接 - 具有扫描所选系统或网络的权限 - 对包含 `PortScanner.exe` 的目录具有写入权限以便导出报告 - 仅在使用**我的外部 IP** 时需要互联网连接 ### 构建 PortScanner - Embarcadero Delphi 10.4 Sydney - Windows VCL 开发组件 - 已配置的 32 位 Windows 目标平台 有关完整的设置和构建过程,请参阅 [BUILDING.md](BUILDING.md)。 ## 下载 已发布的构建版本可在 [GitHub Releases 页面](https://github.com/nsergej/PortScanner/releases) 获取。 ## 安装 PortScanner 不需要安装程序: 1. 从 GitHub Releases 下载可用的发布包。 2. 将文件解压到您的 Windows 帐户具有写入权限的目录中。 3. 启动 `PortScanner.exe`。 如果您希望应用程序将报告导出到其所在目录,请不要将其放置在受保护的目录中。 ## 用法 应用程序打开时,地址字段中会显示本地 IPv4 地址,并选中完整的端口范围。界面包含目标地址、起始和结束端口、一个“开始/停止”按钮、开放端口计数器、结果列表、进度条和状态栏。 有关详细的操作说明,请参阅 [docs/USAGE.md](docs/USAGE.md);有关常见错误,请参阅 [docs/TROUBLESHOOTING.md](docs/TROUBLESHOOTING.md)。 ## 开始扫描 1. 输入一个数字 IPv4 地址,例如 `192.168.1.10`。 2. 设置第一个和最后一个 TCP 端口。这两个值必须在 `1` 和 `65535` 之间,并且起始值不能超过结束值。 3. 选择**开始**。 4. 监控进度条、状态栏、开放端口计数器和结果列表。 开始新的扫描会清除之前的屏幕显示结果。 ## 停止扫描 扫描进行时,**开始**按钮会变为**停止**。选择该按钮将清空待处理的端口队列,并请求所有工作线程停止。在活动的工作线程完成其当前工作之前,该按钮会暂时禁用。 部分结果仍然可见,但不会为已停止的扫描自动生成报告。 ## 导出格式 扫描正常完成后,PortScanner 会自动在运行的可执行文件旁边写入三个 UTF-8 编码的报告文件: ``` portscan_YYYYMMDD_HHMMSS_IP.html portscan_YYYYMMDD_HHMMSS_IP.csv portscan_YYYYMMDD_HHMMSS_IP.json ``` 文件名中 IPv4 地址的点会被替换为下划线。有关确切的字段和结构,请参阅 [docs/EXPORT_FORMATS.md](docs/EXPORT_FORMATS.md)。 ## 示例结果 以下行与 [`docs`](docs) 目录中的所有三个示例文件相匹配: | 索引 | IPv4 地址 | 端口 | 响应时间 (毫秒) | |------:|--------------|-----:|-------------------:| | 1 | 8.8.8.8 | 53 | 157 | | 2 | 8.8.8.8 | 443 | 125 | | 3 | 8.8.8.8 | 853 | 31 | 示例报告: - [CSV 报告](docs/sample_report.csv) - [HTML 报告](docs/sample_report.html) - [JSON 报告](docs/sample_report.json) 这些示例描述了对 `8.8.8.8` 进行的一次扫描,端口范围为 `1` 到 `1000`,有三个开放端口。HTML 和 JSON 示例使用的时间戳为 `2026-03-27 01:39:44`,响应时间如上所示。 ## 从源代码构建 在 Delphi 10.4 Sydney 中打开 `src/PortScanner.dpr`,并在构建 32 位 Windows 目标之前配置生成的项目资源。该仓库不跟踪 `.dproj` 或 `.res` 文件。 有关所需文件、VCL 样式设置、Debug 和 Release 配置以及输出位置,请遵循 [BUILDING.md](BUILDING.md)。 ## 项目结构 ``` PortScanner/ |-- .github/ Issue and pull request templates |-- docs/ | |-- ARCHITECTURE.md Current implementation overview | |-- EXPORT_FORMATS.md HTML, CSV, and JSON report definitions | |-- TROUBLESHOOTING.md Common problems and corrective actions | |-- USAGE.md Detailed operating instructions | `-- sample_report.* Synchronized sample reports |-- src/ | |-- PortScanner.dpr Delphi program entry point | |-- Unit1.pas Form logic, workers, scanning, and export | |-- Unit1.dfm VCL form definition | |-- forbidden.ico Application icon asset | `-- forbidden.png Image asset |-- BUILDING.md Delphi 10.4 build guide |-- CHANGELOG.md Version history |-- CODE_OF_CONDUCT.md Community standards |-- CONTRIBUTING.md Contribution workflow |-- LICENSE MIT License |-- README.md Project overview `-- SECURITY.md Private security reporting policy ``` 有关简明的实现说明,请参阅 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 负责任的使用 仅对您拥有或获得明确授权进行测试的系统和网络使用 PortScanner。未经授权的扫描可能会违反法律、合同、可接受使用政策或组织规定。 ## 安全 请按照 [SECURITY.md](SECURITY.md) 私下报告潜在的安全问题。请勿在公开的 GitHub Issue 中发布敏感细节。 ## 许可证 PortScanner 基于 [MIT 许可证](LICENSE) 提供。
标签:Delphi, 插件系统, 数据统计, 桌面应用, 端口扫描, 网络工具