ffop7/op7-portscanner
GitHub: haux256/op7-portscanner
一款基于 .NET 8 的 Windows 平台 TCP 并行端口扫描器,提供图形界面和自动报告导出功能。
Stars: 0 | Forks: 0
# op7 端口扫描器 v3




## v3 的变化(对比 v2)
| 方面 | 变化 |
|---|---|
| **注释** | 每个方法都有 XML 文档注释,解释其功能及原因 |
| **常量** | 没有魔术数字 — `BannerBufferSize`、`BannerReadDelayMs`、`MaxHistoryEntries` 等 |
| **内存** | `ArrayPool.Shared` 重用横幅缓冲区,而不是分配新数组 |
| **结构** | 每个文件都使用 `#region` 块,以便轻松浏览大文件 |
| **方法** | 长方法被分解为更小、命名清晰的方法(`BuildHeaderPanel`、`AutoSaveTxtAsync` 等) |
| **命名** | 全程使用更清晰的变量名(`totalDone`、`resolvedIp`、`wasCancelled`) |
| **工厂** | 组件工厂方法(`MakeLabel`、`MakeButton`、`MakeSpinner`)消除了 UI 的重复代码 |
| **DNS** | 现在当主机名解析到多个地址时,优先使用 IPv4 |
| **OS 猜测** | 提取到了单独的 `GuessOsFromTtl()` 方法中,并附有清晰的说明 |
## 快速开始
### 要求
- Windows 10 / 11 (64 位)
- [.NET SDK 8.0](https://dotnet.microsoft.com/download/dotnet/8.0)
### 构建与运行
双击 **`BUILD_AND_RUN.bat`**
## 文件结构
```
op7-portscanner/
├── Models/
│ ├── ScanResult.cs — What we know about one open port
│ ├── ScanProfile.cs — A saved scan configuration
│ └── ScanHistoryEntry.cs — One past scan stored in history
├── Services/
│ ├── ScanEngine.cs — Parallel async TCP scanner + banner grabber
│ ├── NetworkUtils.cs — Ping, DNS, OS fingerprint, host range parser
│ ├── ExportService.cs — Save results as TXT / CSV / JSON
│ └── PersistenceService.cs — Load/save history & profiles to AppData
├── MainForm.cs — GUI — all UI code with full comments
├── FlowerArt.cs — B&W Aster/Flowey illustration (GDI+)
├── Program.cs — Entry point ([STAThread] + Application.Run)
├── Op7PortScanner.csproj — Project file (no NuGet packages needed)
└── BUILD_AND_RUN.bat — One-click build + launch
```
## 手动构建
```
dotnet publish Op7PortScanner.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o dist
```
标签:.NET 8, TCP协议, 异步编程, 插件系统, 数据统计, 端口扫描, 网络工具, 网络扫描器