koua29/bruce-lan-scanner
GitHub: koua29/bruce-lan-scanner
为 Bruce 固件设备打造的便携式局域网扫描脚本,支持主机发现、端口扫描和 Web 服务指纹识别。
Stars: 1 | Forks: 0
# 📡 LAN Scanner — Bruce / LilyGO T-Embed CC1101
[](https://github.com/BruceDevices/firmware) [](https://github.com/BruceDevices/firmware) [-F7DF1E)](https://github.com/BruceDevices/firmware) [](LICENSE)

## ✨ 功能与特性
- 🔍 **端口扫描** — 扫描单个主机的约 25 个常见端口,并带有实时的*扫描中*界面(放大镜 + 扫描雷达 + 进度条)。
- 🕸️ **主机发现** — 扫描您的 `/24` 网段以列出存活主机(TCP-ping)。可以直接**从列表中选择**主机进行端口扫描,返回后再选另一台。
- 🔎 **检查服务** — 点击一个开放的 **web** 端口:它会抓取网页并显示 **`Server:`** 标头(服务器类型/版本)、**`X-Powered-By`**、**``** 以及页面**文本**(已去除 HTML) — 一个简易的内置文本查看器。
- ⚡ **存活预检** — 在进行端口扫描之前,快速检查会在主机宕机时立即中止(这样错误的 IP 就不会卡住几分钟)。
- 🎨 **全面采用图形化 UI** — 带图标的自定义菜单、蓝色高亮、无闪烁的可滚动结果、雷达/勾选动画。
| 扫描中 | 端口结果 | 主机发现 |
|---|---|---|
|  |  |  |
## 🚀 安装说明
1. 将 **`Lan Scanner.js`** 复制到 SD 卡上,例如放在 `/scripts` 或 `/BruceJS` 目录下。
2. 在设备上:**JS Interpreter → 选择 `Lan Scanner.js`**(或者通过 [bruce-launcher](https://github.com/koua29/bruce-launcher) 将其添加到您的收藏夹)。
3. 操作方式:**旋转** = 移动,**点击** = 选择/扫描,**长按 (ESC)** 或 **点击** = 返回。
## 🛠️ 工作原理
Bruce JS 解释器**未提供原生 TCP socket** — 只有 `wifi.httpFetch()`(一个 HTTP 客户端)。因此,每个端口都通过 HTTP 请求进行探测,并根据**连接的行为方式进行分类**:
| 结果 | 含义 |
|---|---|
| 返回 HTTP 对象 | **OPEN**(HTTP 服务,显示状态码) |
| `no HTTP server` / `read timeout` / `connection lost` | **OPEN**(TCP 连接被接受 — 非 HTTP 或 TLS 服务) |
| `connection refused`(快速) | **CLOSED**(主机以 RST 回应 → 主机存活) |
| `connection refused`(慢速) | 无响应(主机宕机 / 被过滤) |
计时 (`Date.now()`) 将快速的 RST(存活主机上的端口关闭)与缓慢的连接超时(死掉的主机)区分开来。
## ⚠️ 局限性(实事求是)
- **无效 IP 超时** — `httpFetch` 使用 `WiFiClient`,其约 30 秒的连接超时**无法从 JS 中更改**,且**无法在探测过程中中断**。存活主机会在 <1 秒内响应;而无效 IP 则会消耗一次超时。因此,主机发现阶段对每个主机仅使用单次探测并会向您发出警告 — 请保持扫描范围较小。
- **HTTPS/TLS** — 作为普通 HTTP 进行探测:可以检测到开放端口,但通常无法呈现页面内容(自签名证书 / TLS)。在这种情况下会显示 URL,以便您在手机/PC 上打开。
- **无 banner 抓取** — 读取 SSH/FTP/SMTP 的原始 banner 需要原生 socket(在 BJS 中不可用)。非 HTTP 服务只能通过其知名端口进行识别。Web 服务器*确实会*通过 `Server` 标头进行指纹识别。
- **仅限 2.4 GHz**,且必须已连接 Wi-Fi (STA)。
## 🙏 致谢与许可
- 脚本:**koua29** (Arnaud)。运行于优秀的 **[Bruce 固件](https://github.com/BruceDevices/firmware)**。
- 基于 **MIT License** 发布 — 详见 [LICENSE](LICENSE)。
## ☕ 赞赏?
标签:Bruce固件, CMS安全, JavaScript, 图形界面, 局域网扫描, 插件系统, 数据统计, 物联网设备, 端口扫描, 自定义脚本