我一直在尝试获取我最近获得的 Fitbit Charge 的固件。由于设备是密封的,我一直在尝试查看是否可以让它更新其固件,然后对其进行分析。
使用 mitmproxy,我能够从 Mac 桌面应用程序捕获两个“检查更新的固件”请求。请求是通过将 base64 编码的 blob 发送到 URL 来发出的:
https://desktop-client.fitbit.com/1/devices/client/tracker/data/firmware.json
(注意:只有通过身份验证后才能访问)
到目前为止我看到的两个请求:
请求 #1:
MQIAAAEAOwoAANHJhDAaCIh2xT9OB1J2GpqN5SrNsKeydnOCgDG00HTd0RSBLBsRtcvJvjrwkelgU0McyKrswGUo3JJytwPTsG3zB73bA9lFomPwrMKZhXA+XqvsYYIULi82bZJFE/W3H5Wu5lNikw2LyIqUOI1D1ywXnRQDdAxvdofFix8Y034AAA==
十六进制转储:
0000000: 3102 0000 0100 3b0a 0000 d1c9 8430 1a08 1.....;......0..
0000010: 8876 c53f 4e07 5276 1a9a 8de5 2acd b0a7 .v.?N.Rv....*...
0000020: b276 7382 8031 b4d0 74dd d114 812c 1b11 .vs..1..t....,..
0000030: b5cb c9be 3af0 91e9 6053 431c c8aa ecc0 ....:...`SC.....
0000040: 6528 dc92 72b7 03d3 b06d f307 bddb 03d9 e(..r....m......
0000050: 45a2 63f0 acc2 9985 703e 5eab ec61 8214 E.c.....p>^..a..
0000060: 2e2f 366d 9245 13f5 b71f 95ae e653 6293 ./6m.E.......Sb.
0000070: 0d8b c88a 9438 8d43 d72c 179d 1403 740c .....8.C.,....t.
0000080: 6f76 87c5 8b1f 18d3 7e00 00 ov......~..
请求#2:
MQIAAAEASQoAANHJhDAaCGm7Oe56jNmLQ6+5vNdvC17TaFGe/xQzYYN9+nZjwxvKFLKpfyI44tY9Pxt4jpqkzbaN5B88lxLhMbesFxkuKWgW7dF4QAH+ie8sM2szJ4rIjuCffp3yLpMAeiIychkQ0hviyjYniPGw2X8nAVUMKXDp1EeQMuP2MX4AAA==
十六进制转储:
0000000: 3102 0000 0100 490a 0000 d1c9 8430 1a08 1.....I......0..
0000010: 69bb 39ee 7a8c d98b 43af b9bc d76f 0b5e i.9.z...C....o.^
0000020: d368 519e ff14 3361 837d fa76 63c3 1bca .hQ...3a.}.vc...
0000030: 14b2 a97f 2238 e2d6 3d3f 1b78 8e9a a4cd ...."8..=?.x....
0000040: b68d e41f 3c97 12e1 31b7 ac17 192e 2968 ....<...1.....)h
0000050: 16ed d178 4001 fe89 ef2c 336b 3327 8ac8 ...x@....,3k3'..
0000060: 8ee0 9f7e 9df2 2e93 007a 2232 7219 10d2 ...~.....z"2r...
0000070: 1be2 ca36 2788 f1b0 d97f 2701 550c 2970 ...6'.....'.U.)p
0000080: e9d4 4790 32e3 f631 7e00 00 ..G.2..1~..
不幸的是,这些请求的主体似乎以某种方式加密了(除了前 16 个字节和最后 3 个字节之外,相对统一的字节分布)。
我还尝试使用 mitmproxy 发送 base64 数据的稍微修改版本(在正文中翻转一点,更改一些标头数据等),但是任何更改都会导致服务器响应数据无效。
那么,有什么想法可以欺骗服务器向我发送固件更新吗?