ChartLovebirdAbyss/net-scan-utility
GitHub: ChartLovebirdAbyss/net-scan-utility
一款 Windows 平台的网络枚举工具,整合了主机发现、端口与服务探测、SMB/SNMP 枚举及账户信息提取,帮助 IT 团队在一个界面内完成完整的内网资产盘点。
Stars: 1 | Forks: 0

# net-scan-utility 🛰️🔍
  
*将其指向一个子网,即可获取真相 —— 主机、共享、服务,以及隐藏在其后的用户名。*
## 🧭 概述
让我们先澄清一下术语,因为互联网上一半的人都会弄错这一点:**网络枚举(network enumeration)**与网络映射(network mapping)并不是一回事。映射告诉你*哪些机器是存活的,以及它们运行的是什么操作系统*。而枚举则更进一步——它会敲开这些机器敞开的大门,询问是谁住在里面。用户名、组成员身份、共享文件夹、暴露的服务——当你试图了解一个网络到底在*做什么*,而不仅仅是远远地看它*长什么样*时,这些才是真正重要的东西。
开发 `net-scan-utility` 是因为大多数工具都只局限于某个单一功能。你在这里用一个 ping 扫描器,在那里用一个 SNMP walker,在另一个地方用 SMB 共享列举器,最终你不得不在三个终端标签页和一个电子表格之间来回拼凑,只为了能看清一个 /24 网段的全貌。这款工具拒绝这种妥协。它依赖于像 ICMP 和 SNMP 这样的显式发现协议来寻找存活的设备,随后进行有针对性的端口和服务探测,这样你就无需猜测一个开放的 socket 背后到底在运行什么。
它的目标用户包括:进行资产盘点审计的系统管理员、正在接管新办公网络的 IT 团队、学习枚举与简单 ping 扫描到底有何区别的学生,以及任何曾盯着路由器的 DHCP 表格心里犯嘀咕“好吧,但这堆东西到底在*运行*些什么”的人。没有服务器,没有偷偷把遥测数据传回家的行为,也不依赖云——它是一个独立的 Windows 可执行程序,只与你的网络通信,仅此而已。
## 🧰 里面到底有什么
没人想看一大堆形容词堆砌的介绍,所以这里不使用常见的营销套话,而是直接告诉你这款工具能做什么:
- **不作假的 Host discovery** —— 结合 ICMP 扫描与 ARP 回退机制,这样即使设备阻止了 ping,只要它们在本地网段上,依然会显示出来。
- **针对仍然开放该协议的设备进行 SNMP walking** —— 打印机、交换机以及那些向任何礼貌询问者广播系统信息的老旧设备。
- **Share 与 service 枚举** —— 探测 SMB shares、开放端口,并抓取常见服务的 banner,让你确切知道*什么*正在运行,而不是仅仅知道*有*东西在运行。
- **挖掘 Username 与 group** —— 在权限允许的情况下,提取本地账户和 group 信息,让你能在审计员之前发现孤立账户和过时的 group 成员关系。
- **实时结果表格** —— 无需等待最终报告;主机在响应时就会填充到表格中,并且支持实时排序和过滤。
- **无需二次处理的导出功能** —— 支持 CSV 和 JSON 输出,可以直接放入电子表格或脚本中而无需重新格式化。
- **零足迹安装** —— 单个可执行文件,没有后台服务,删除后也不会在注册表中留下垃圾。
- **预设的扫描配置** —— 保存一次“子网 + 设置”的组合,即可每周重复运行,无需从头重新配置。
## 🚀 如何开始
这里的设置过程出奇地乏味,但这正是关键所在:
1. 点击上面的下载按钮前往主页。
2. 获取最新的 Windows 版本——它是一个单独的可执行文件,没有会向你索要灵魂的安装向导。
3. 运行它。Windows SmartScreen 可能会在首次启动时抱怨无法识别的发布者——这对于独立开发工具来说是正常的,直接点击继续运行即可。
4. 输入目标范围(单个 IP、CIDR 块或 IP 范围)并点击扫描。结果将在几秒钟内开始填充。
## 💻 系统要求
| 要求 | 详情 |
|---|---|
| 操作系统 | Windows 10 或 Windows 11 (64-bit) |
| 依赖项 | 无 —— 完全独立的二进制文件 |
| 磁盘空间 | 50 MB 以下 |
| 网络访问 | 显然是必需的 |
| 管理员权限 | 建议使用,以获得完整的枚举深度 |
| .NET runtime | 已内置,无需单独安装 |
为什么没有 Linux 或 macOS 版本?
许多更深度的枚举功能——本地 group 成员资格、share 权限解析、一些 SMB 底层机制——都依赖于 Windows 原生 API。如果不大幅削减功能,这些 API 在跨平台上并没有完美的替代方案。因此,与其发布一个被阉割的通用版本,这款工具坚持 Windows 优先,并力求把这个平台上的工作做到完美。一款专注于 Linux 的姊妹工具属于“也许哪天会有”,而不是现在的承诺。
## ⚙️ 工作原理
工作流程是有意设计为线性的——没有任何你无法掌控的隐藏异步魔法:
1. **目标定义** —— 你指定一个范围;工具会将其标准化并放入扫描队列。
2. **发现阶段** —— 在运行任何更重型的任务之前,先发送 ICMP 和 ARP 请求以寻找存活的主机。
3. **Service 探测** —— 针对存活的主机,根据精选的知名服务列表进行端口扫描。
4. **深度枚举** —— 对响应了 service 探测的主机运行 SNMP、SMB 和账户查询。
5. **聚合** —— 所有结果都会出现在结果表格中,可随时按需导出。
```
flowchart LR
Target --> Discovery
Discovery --> Probing
Probing --> Enumeration
Enumeration --> Results
```
## 🩺 故障排除
**问:扫描发现了主机,但只显示 IP,没有显示主机名。**
答:DNS 解析依赖于你的本地解析器是否真的知道这些主机。如果它们不在 DNS 或你的 hosts 文件中,你就只能得到 IP——这是预期行为,不是 bug。
**问:我知道某些设备支持 SNMP,但获取到的数据却是空的。**
答:大多数现代设备默认禁用了 SNMP,或者将其限制在非 `public` 的 community string 下。请先检查设备的管理面板。
**问:Windows Defender 将该可执行文件标记为了威胁。**
答:网络枚举工具会因为其接触 socket 和系统 API 的方式而触发启发式检测——这是一种常见的误报类型,并非这款工具独有。
**问:在 /16 网段上扫描速度极其缓慢。**
答:这大约涉及 65,000 个地址——请缩小范围或将其拆分为多个扫描配置。这款工具将准确性置于盲目追求速度之上。
**问:有些主机在发现阶段出现了,但在深度枚举阶段却消失了。**
答:它们很可能阻止或限速了后续的探测请求。基本上是防火墙在履行它们的职责。
**问:我可以同时运行多个扫描配置吗?**
答:可以,但每个并发扫描都会消耗带宽和 CPU——如果你的硬件性能一般,最好错开运行。
## 🎨 UI / UX 说明
- **主题** —— 包含 Dark(默认)、Light,以及为了无障碍访问而设计的 High Contrast 模式。
- **键盘快捷键**:
| 快捷键 | 操作 |
|---|---|
| `Ctrl + N` | 新建扫描配置 |
| `Ctrl + R` | 重新运行上次扫描 |
| `Ctrl + E` | 导出结果 |
| `Ctrl + F` | 过滤结果表格 |
| `Esc` | 取消正在进行的扫描 |
- **设置面板** —— timeout 阈值、线程数、SNMP community string 预设以及导出格式的默认值,全部集中在一个齿轮图标下,而不是分散在五个标签页里。
- **表格实时排序** —— 在扫描过程中点击任意列标题即可排序;它不会为了让你排序而暂停扫描。
## 📄 许可证
基于 [MIT License](LICENSE) 发布,2026 年。你可以使用它、fork 它、在它的基础上进行开发——只是别把许可证去掉,然后假装它是你从头写出来的。
## ⚠️ 免责声明
标签:Windows工具, 后端开发, 多人体追踪, 局域网探测, 插件系统, 数据统计, 端口扫描, 端点可见性, 网络枚举