akunopaka/smart-e-tape-measure-web-bluetooth

GitHub: akunopaka/smart-e-tape-measure-web-bluetooth

一个零依赖的 Web Bluetooth 工具,用于连接智能蓝牙卷尺、解码 BLE GATT 数据包并记录测量数据,以支持设备协议的逆向工程。

Stars: 0 | Forks: 0

# 📏 智能 Web Bluetooth 卷尺 将**智能 Bluetooth 卷尺**变成一个开放的数据源。这个 零依赖的 Web Bluetooth 和 Bluetooth Low Energy (BLE) 探索器可以 连接到数字测量卷尺,读取 GATT 通知,解码测量数据, 分离实时和已确认的数据包,并导出原始证据用于协议 逆向工程。 首个硬件目标是广播名称为 `ES-Tape` 的 **RENPHO RF-BMF01**。 目前已测试过一个物理设备;其他智能人体测量卷尺在 映射其服务 UUID 和数据包格式后可能也可以使用。硬件很少 会乖乖地表明身份,因此这个代码库负责处理这种尴尬的初次问候。👋📡 RENPHO RF-BMF01 Bluetooth smart tape measure used for protocol testing Pages** 中,选择 **Deploy from a branch**,选择 `main`,选择 `/(root)`,然后保存。在 将连接到卷尺的设备上打开生成的 HTTPS URL。 ### 连接卷尺 1. 打开 Bluetooth。 2. 唤醒卷尺或稍微拉出一点。 3. 选择 **Select and connect tape**。 4. 在浏览器对话框中选择 `ES-Tape`。 5. 移动卷尺,并将 Web 上的值与其物理显示屏进行比较。 6. 按下卷尺的确认按钮并检查 **Confirmed transfers**。 不需要系统 Bluetooth 配对。浏览器选择器必须通过 点击打开,因为 Web Bluetooth 发现阶段需要用户手势。 ## 🔬 首先使用 nRF Connect 进行验证 [nRF Connect for Mobile](https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-mobile) 是在责怪浏览器之前进行独立检查的有用工具。浏览器理应得到 一次公正的审判。🧑‍⚖️ 1. 启动 BLE 扫描,唤醒卷尺,并连接到 `ES-Tape`。 2. 打开 service `0783b03e-8535-b5a0-7140-a304d2495cb7`。 3. 在 characteristic 上启用通知 `0783b03e-8535-b5a0-7140-a304d2495cb8`。 4. 拉出卷尺并确认是否出现 20 字节的通知。 5. 按下卷尺按钮并寻找以 `SM` 结尾的数据串。 6. 不要向 `...5cba` 写入数据;其命令协议在此未作记录。 如果 nRF Connect 可以工作,但浏览器找不到卷尺,请检查浏览器 支持、站点权限、HTTPS/localhost 以及卷尺是否已唤醒。 ## 🧭 逆向工程:A -> B -> C ### A. 👀 观察 在不预设设备功能的情况下进行扫描。记录其广播名称、 服务、characteristics、属性、描述符和未触碰的通知 字节。从只读开始;神秘的写入 characteristic 不需要你去问候它。 ### B. 🧩 关联 每次只更改一个物理输入:拉出卷尺、保持已知长度、 切换单位或按下一个按钮。添加一个操作标记,记录物理 显示屏,并将其与确切的数据包和时间戳配对。 ### C. ✅ 确认 重复相同的测试,尝试边界值,断开并重新连接,并将 事实分类为**已观察**、**已推断**和**未知**。只有在这之后才能将规则 编码到解析器中。第二个物理设备是验证某项发现是 协议规则还是仅仅是一个单独设备特性的最佳测试。 有关当前的证据和开放问题,请参阅 [docs/protocol.md](docs/protocol.md)。 ## 📦 观察到的协议 | 角色 | UUID | | --- | --- | | Custom service | `0783b03e-8535-b5a0-7140-a304d2495cb7` | | Notify characteristic | `0783b03e-8535-b5a0-7140-a304d2495cb8` | | Write Without Response characteristic | `0783b03e-8535-b5a0-7140-a304d2495cba` | 观察到的测量帧: ``` *AAAAA;BBBBB;CCCCSU\n ``` 示例: ``` *00530;00000;0000PM\n ``` 当前的解码器将 `00530` 解释为 `53 mm` (`5.3 cm`)。第二和 第三个数字字段仍然未知,这比给它们 起一个自信但错误的名字要好得多。 ## 🔐 捕获数据和隐私 捕获的数据会保留在当前源的 IndexedDB 中。JSON 和 CSV 导出可能 包含页面 URL、浏览器 user agent、浏览器提供的设备标识符、 时间戳和原始数据包。在发布前请检查导出内容。 **Delete captures** 会删除此站点存储的会话,并立即启动 一个新的空会话。清除浏览器站点数据也会将它们删除。 ## 🛠️ 开发 该应用使用纯 HTML、CSS、JavaScript 和 IndexedDB。没有框架、 构建步骤、后端、账户、分析、云存储或需要 安装的运行时包。自动解码器检查是可选的开发者工具。 ``` npm test ``` ``` . |-- index.html User interface |-- app.js Web Bluetooth and capture flow |-- protocol.js Packet decoder and BLE UUIDs |-- storage.js IndexedDB storage and exports |-- styles.css Responsive interface |-- test/ Decoder checks |-- docs/protocol.md Evidence and unknowns `-- docs/github-publishing.md Repository description and topics ``` 发现另一款支持 BLE 的卷尺了?太棒了。在 分享捕获内容之前,请阅读 [CONTRIBUTING.md](CONTRIBUTING.md)。🧪 ## ⚖️ 独立研究声明 协议说明来自对 BLE 流量的黑盒观察和用于 互操作性研究的受控物理测量。此代码库不 包含提取的固件、专有应用程序源代码或复制的商品 图稿。 RENPHO 和其他名称或标志属于其各自的所有者。本项目 不附属于制造商,也不受其赞助或认可。关于 逆向工程的法律因司法管辖区而异;贡献者应自行 确保合规。 ## 📄 许可证 [MIT](LICENSE) 代码库:[akunopaka/smart-e-tape-measure-web-bluetooth](https://github.com/akunopaka/smart-e-tape-measure-web-bluetooth)
标签:Web Bluetooth, 云资产清单, 命令控制, 多模态安全, 数据可视化, 数据采集, 智能硬件, 物联网, 自定义脚本, 蓝牙低功耗, 逆向工程