12 lines
1.6 KiB
Markdown
12 lines
1.6 KiB
Markdown
# 决策日志 (DECISIONS)
|
||
|
||
| 日期 | 决策 | 背景 | 理由 |
|
||
|------|------|------|------|
|
||
| 2026-07-24 | 以 Web 上位机 JS 为协议第一证据源 | 三条证据线:Web JS / APK / 固件 | Web Bluetooth JS 通常未重度混淆,可读性最高,可 fastest path 拿到 UUID 与命令格式,再与 APK/固件互证 |
|
||
| 2026-07-24 | CLI 用 Python+bleak | 本地化+agent 化需求 | bleak 跨平台、无需 root 以外依赖;JSON I/O 便于 agent 编排;Pillow 覆盖全部抖动算法 |
|
||
| 2026-07-24 | 项目纳入 git 管理 | 治理规则要求 | 原始目录非 git 仓库;逆向产物多、需频繁提交与回溯 |
|
||
| 2026-07-24 | 倒计时前缀位图帧**不**复刻 JS 的 off-by-one | timedjs2.js:206-224 循环 `i < len-1` 丢末字节 | 判定为 JS 端笔误(设备缓冲兼容完整帧);CLI 发完整 n*32 字节,避免在末字符右下角丢 8 像素 |
|
||
| 2026-07-24 | 倒计时日期/休眠小时采用 BCD 编码 | timedjs2.js:242-243 / ble.js:4013-4015 均为十进制字符串直拼后经 hexToBytes | 实测 JS 证据:month=12 → 字节 0x12,hour=23 → 0x23;与 setTime 的真 hex(intToHex)不同,需注意区分 |
|
||
| 2026-07-24 | 固件头格式确认(magic 'pQ'/flags 0x01AA/长度/CRC32(body)/64B 头/0x20 填充 0x00) | 以 zlib.crc32 反推验证 CRC 字段 = body 的 CRC32,重打包字节级往返一致 | fw_pack 可生成与原镜像格式一致的文件,是固件可控(G4)的基础 |
|
||
| 2026-07-24 | 中英混排 0.5 单位的倒计时前缀在 CLI 拒绝 | JS `'0'+charCount` 遇 3.5 生成非法 hex "03.5" | 属于上游 bug 路径,CLI 显式报错优于发送畸形帧 |
|