koua29/bruce-lan-scanner

GitHub: koua29/bruce-lan-scanner

为 Bruce 固件设备打造的便携式局域网扫描脚本,支持主机发现、端口扫描和 Web 服务指纹识别。

Stars: 1 | Forks: 0

# 📡 LAN Scanner — Bruce / LilyGO T-Embed CC1101 [![Bruce 固件](https://img.shields.io/badge/firmware-Bruce-8A2BE2?logo=github)](https://github.com/BruceDevices/firmware) [![设备](https://img.shields.io/badge/device-LilyGO%20T--Embed%20CC1101-1E90FF)](https://github.com/BruceDevices/firmware) [![语言](https://img.shields.io/badge/script-JavaScript%20(BJS)-F7DF1E)](https://github.com/BruceDevices/firmware) [![许可证: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE) ![LAN Scanner 主菜单](https://static.pigsec.cn/wp-content/uploads/repos/cas/84/84248a152c1c757dd9c6610a2e58642daa6b2dce9e1208a177a269e6c1b8ba30.jpg) ## ✨ 功能与特性 - 🔍 **端口扫描** — 扫描单个主机的约 25 个常见端口,并带有实时的*扫描中*界面(放大镜 + 扫描雷达 + 进度条)。 - 🕸️ **主机发现** — 扫描您的 `/24` 网段以列出存活主机(TCP-ping)。可以直接**从列表中选择**主机进行端口扫描,返回后再选另一台。 - 🔎 **检查服务** — 点击一个开放的 **web** 端口:它会抓取网页并显示 **`Server:`** 标头(服务器类型/版本)、**`X-Powered-By`**、**``** 以及页面**文本**(已去除 HTML) — 一个简易的内置文本查看器。 - ⚡ **存活预检** — 在进行端口扫描之前,快速检查会在主机宕机时立即中止(这样错误的 IP 就不会卡住几分钟)。 - 🎨 **全面采用图形化 UI** — 带图标的自定义菜单、蓝色高亮、无闪烁的可滚动结果、雷达/勾选动画。 | 扫描中 | 端口结果 | 主机发现 | |---|---|---| | ![扫描中](https://static.pigsec.cn/wp-content/uploads/repos/cas/4c/4c5b1b70c5e7202d51f096f0f8dace36eb3273144ce8316abd0c7919277a74ce.jpg) | ![端口](https://static.pigsec.cn/wp-content/uploads/repos/cas/89/896b10b50808162364499a7ce81b3b153ede07a8788edf65994040bf927fd148.jpg) | ![主机](https://static.pigsec.cn/wp-content/uploads/repos/cas/1a/1a5b45f214466591877640aebe136d67398754fae1ed7a4fd7612df58eb0b93b.jpg) | ## 🚀 安装说明 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)。 ## ☕ 赞赏? <img src="https://static.pigsec.cn/wp-content/uploads/repos/cas/61/61b11d8419a7eb7ffd65e7def420fc877eee54738a33ba2c7fbbb52efd492e43.png" width="170" alt="PayPal" /> </div><div><strong>标签:</strong>Bruce固件, CMS安全, JavaScript, 图形界面, 局域网扫描, 插件系统, 数据统计, 物联网设备, 端口扫描, 自定义脚本</div></article></div> <!-- 人机验证 --> <script> (function () { var base = (document.querySelector('base') && document.querySelector('base').getAttribute('href')) || ''; var path = base.replace(/\/?$/, '') + '/cap-wasm/cap_wasm.min.js'; window.CAP_CUSTOM_WASM_URL = new URL(path, window.location.href).href; })(); </script> </body> </html>