9

红米音箱Play 开发调试实验 updating

 2 years ago
source link: https://sskaje.me/2021/03/%e7%ba%a2%e7%b1%b3%e9%9f%b3%e7%ae%b1play-%e5%bc%80%e5%8f%91%e8%b0%83%e8%af%95%e5%ae%9e%e9%aa%8c-updating/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

红米音箱Play 开发调试实验 updating

前盖有内扣,拆好之后直接引三根针出来就可以ttl了。

密码 : substr(md5($SN . “5775B10D-15C0-7827-97B9-88EA07FCA97A”), 0, 14),hash salt在 /bin/mi_console 里写死了,根据设备型号判断。

串口波特率115200.

手动启动 ssh。

cd /tmp
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbear -r dropbear_rsa_host_key

劫持流量,发现客户端不认第三方的https证书,错误提示是 SSL handshake with client failed: CA certificate could not be matched with a known, trusted CA (unknown_ca)。查了下libxiaomi_http.so,设置了CURLOPT_CAPATH /etc/ssl/certs,然而系统本身是squashfs直接挂载的ro,所以需要曲线救国。

ldd 查看 libxiaomi_http.so,发现引用了 libmbedtls.so libssl.so libcrypto.so,libcurl 的 vtls 里看了下实现,用了 这个函数,同时对比了各个实现,决定还是手工加一下证书。

鉴于系统是readonly挂载的,所以上 overlay 。

cd /tmp
mkdir certs workdir
mount -t overlay -o lowerdir=/etc/ssl/certs,upperdir=/tmp/certs,workdir=/tmp/workdir none /etc/ssl/certs/

这样就可以在 /tmp/certs 里加证书,实现自定义ca。

具体操作我是在一台ubuntu上,把证书pem 文件命名为 .crt后缀放在 /usr/local/share/ca-certificates 下然后执行 update-ca-certificates 再去看 /etc/ssl/certs 里的symlink的hash。

我开发机的charles ca 证书 hash 是 6a3a5fb6.0,所以在我的小爱音箱里,我把证书 pem 文件copy到 /tmp/certs 然后 创建symlink。

cp xxxxxx /tmp/certs/dev-charles.pem
cd /tmp/certs
ln -s dev-charles.pem 6a3a5fb6.0

再执行 ota check 的实话,观察charles,已经能看到ssl的请求了。

红米音箱Play 开发调试实验 updating by @sskaje: https://sskaje.me/2021/03/%e7%ba%a2%e7%b1%b3%e9%9f%b3%e7%ae%b1play-%e5%bc%80%e5%8f%91%e8%b0%83%e8%af%95%e5%ae%9e%e9%aa%8c-updating/
Link to this post!

Author sskajePosted on March 23, 2021April 13, 2021Categories Linux, 安全, 操作系统相关, 智能家居, 路由、设备, 逆向Tags overlay, overlayfs, ssh, ttl, xiaomi, 小爱, 小爱音箱, 小米


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK