sabraman/plonq-meta-smart-reverse

GitHub: sabraman/plonq-meta-smart-reverse

Plonq META智能设备逆向工程工具,支持BLE通信和固件分析。

Stars: 0 | Forks: 0

# Plonq META 智能逆向 Plonq META 智能设备 BLE、Android APK 和捆绑的 SF32LB55x 固件栈的工具和调查笔记。 仓库专注于可重复的逆向工程笔记和小的本地实用工具。有意忽略了大型提取的 APK、固件工作区、Ghidra 项目和生成的分析输出。 ## 当前状态 - 已确认实时 BLE 访问。 - 设备当前公开了 Sifli/俄罗斯 BLE 应用服务 `00000000-0000-0070-7061-5f696c666973` 和应用特征 `00000000-0000-0170-7061-5f696c666973`。 - Sifli 序列/DFU 特征 `0200` 存在,但对其的实时写入被视为高风险。 - IDO/VeryFit 服务 `00000af0-0000-1000-8000-00805f9b34fb` 在当前实时设备状态下未公开。 - 同一连接的 RU 读取在请求计数器从设备响应中提升时工作。 - `setCigarettesStartSearchDevice` 和 `setCigarettesStopSearchDevice` 在 RU `0170` 路径上已成功测试。 ## 快速开始 在您首选的环境中安装 Python 依赖项: ``` python3 -m pip install bleak ``` 扫描附近的 BLE 设备: ``` python3 tools/ble_meta_probe.py scan --seconds 10 ``` 检查实时设备是否公开了 IDO/VeryFit 传输服务: ``` python3 tools/ble_meta_probe.py ido-state-check --seconds 10 ``` 从所有名为 `META` 的附近设备读取解码后的状态: ``` python3 tools/ble_meta_probe.py ru-status ``` 针对一个已知地址: ``` python3 tools/ble_meta_probe.py ru-status ``` 在 RU/Sifli `0170` 上运行同一连接的读取扫描: ``` python3 tools/ble_meta_probe.py ru-read-sweep 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 --value 17=010100 ``` 在所有名为 `META` 的附近设备上启动或停止搜索模式: ``` python3 tools/ble_meta_probe.py ru-search start python3 tools/ble_meta_probe.py ru-search stop ``` 替代扫描,针对特定设备: ``` python3 tools/ble_meta_probe.py ru-search start python3 tools/ble_meta_probe.py ru-search stop ``` 来自实时设备的 `ru-status` 输出示例: ``` [37779F9E-2AF4-7813-7747-3804C1448EA0] device info: firmware_version=2.0.2, software_version=1.0.5, battery_percent=39, mac=1c:30:44:23:69:74 [37779F9E-2AF4-7813-7747-3804C1448EA0] battery: state=1, percent=39, field2=0 [37779F9E-2AF4-7813-7747-3804C1448EA0] screen: brightness=100, auto_lock_time=600 [37779F9E-2AF4-7813-7747-3804C1448EA0] nicotine level: raw=5, nicotine_level=0.5 [37779F9E-2AF4-7813-7747-3804C1448EA0] color theme: value=5 [37779F9E-2AF4-7813-7747-3804C1448EA0] child lock: seconds=300, minutes=5, mode=0, field3=0 [37779F9E-2AF4-7813-7747-3804C1448EA0] puffs control: enabled_a=False, enabled_b=False, limit_a=10, limit_b=3 [37779F9E-2AF4-7813-7747-3804C1448EA0] session mode: session_mode=False, puff_time_min=6, puff_number=15, block_time_after_session=10 ``` ## 仓库布局 ``` docs/investigation/ Reproducible investigation notes and current status. tools/ Python and Ghidra helper scripts. tools/ghidra/ Ghidra scripts used for firmware triage. ``` 重要入口点: - `docs/investigation/README.md` 提供了完整的文档映射。 - `docs/investigation/reverse-status.md` 总结了已确认、候选和受阻的发现。 - `docs/investigation/ble-gatt.md` 记录了实时 BLE 观察。 - `docs/investigation/ru-ble-protocol.md` 记录了 RU/Sifli `0170` 协议。 - `docs/investigation/ru-command-call-map.md` 将产品 APK 调用映射到 RU 有效负载类和 TLVs。 - `tools/ble_meta_probe.py` 是主要的实时/离线 BLE 辅助工具。 ## 安全注意事项 此仓库区分只读探测器、低风险应用命令和高风险固件或文件传输路径。 通常安全: - BLE 扫描。 - GATT 服务分类。 - 被动通知观察。 - RU 在 `0170` 上的读取命令。 - RU `startSearch` / `stopSearch` 在 `0170`。 不要随意运行: - `0200` 的 DFU 或离线传输写入。 - IDO `d1` 表盘/文件传输帧。 - 修补的 OTA 包或修改的资源图像。 - 重置/重启/写入命令,除非完全理解其行为和回滚计划。 仅在您拥有或有权测试的设备上工作。 ## 生成的工件 以下内容有意忽略,并应保持不在 git 中: - 源 APK/XAPK 文件; - 提取/反编译的 APK 树; - 固件提取和 Ghidra 工作区; - 生成的扫描输出; - 本地媒体/日志/缓存文件。 文档通过路径引用这些本地工件,以便分析在提交大型二进制文件的情况下仍然可重复。 ## 验证 基本脚本健全性检查: ``` python3 -m py_compile tools/ble_meta_probe.py ``` 对于实时 BLE 检查,优先使用保持一个连接打开并尊重设备响应计数器的命令。具有固定计数器的一次性写入通常会产生误导性的协议错误。
标签:Android, APK, BLE, Bleak, DFU, DSL, Ghidra, IDO, Python, RU, Sifli, VeryFit, 云资产清单, 固件, 工具开发, 技术文档, 数据提取, 无后门, 智能设备, 漏洞分析, 蓝牙, 设备调试, 路径探测, 逆向工具, 逆向工程, 逆向笔记