『瀚思彼岸』» 智能家居技术论坛

标题: 【智能音箱】小爱音箱pro拆机,刷机,开启ssh,备份系统的方法 [打印本页]

作者: eintin    时间: 2022-6-30 17:26
标题: 【智能音箱】小爱音箱pro拆机,刷机,开启ssh,备份系统的方法
目录拆机
小爱音箱pro底部有个软垫子,用细的起子别进去,然然后撕下来就可以看到螺丝孔。依次拆下螺丝,打开底盖。之后会看到电源线和AUX线在壳子上用四个螺丝固定着,拆下这四个螺丝即可分离壳子和内部主体部分。(注意螺丝别乱了,有三处不一样的螺丝:底座,电源线,电路板固定螺丝)
底座拆开后:

                               
登录/注册后可看大图
内部电路板,图中标箭头的位置rx,tx,gnd即为ttl链接的触点,在电路板后面也有对应的rx, tx, gnd,在板子后面的这三个位置用电烙铁分别焊接一条杜邦线,准备链接usb转ttl模块(CH340模块),进行调试。

                               
登录/注册后可看大图
获取管理员权限
使用nmap扫描音箱端口可以发现音箱只开启了53和9999端口,无法telnet或者ssh链接,所以只能使用ttl进行链接。
1、ubuntu安装puttysudo apt install putty
2、链接usb转ttl模块(接线rx–>rx, tx–>tx, gnd–>gnd),电脑查询新增的COM端口设备 ls /dev,新增的一般在最后一个, 类似/dev/ttyUSB0 或者 /dev/COM0
3、 启动putty 并设置链接类型为serial,设置tty端口速率为115200,设置端口为你本机的端口如/dev/ttyUSB0. 点击 open

                               
登录/注册后可看大图

4、按下回车之后可看到linux 登录界面,输入用户名:root 后回车,由于旧版的系统没有密码,如果你的系统版本比较旧,会直接以root进入系统。
5、如果你的系统升级到了最新版,已经无法直接进入系统, 需要切换到另一个系统尝试(小爱音箱有两套系统,升级时会往另一套系统刷入固件,这样好处就是升级时断电的话,可以自动切换到另一个系统,下一次升级时,刷坏的系统会被重新刷机激活)。
6、切换系统的方法。链接上ttl,拔掉小爱电源并重新插上来重启小爱,此时ttl会输出大量启动日志,在重启时迅速按ctrl+c或者任意按键,会进入uboot.
  • python -c 'import hashlib;print(hashlib.md5(b"SN"+b"B0168A6D-119A-F21A-DA58-980732F80A19").hexdigest()[:14])'
  • python -c 'import hashlib;print(hashlib.md5(b"SN"+b"9C78089F-83C7-3CDC-BCC9-93B378868E7F").hexdigest()[:14])'
Shell[url=][/url][url=][/url]4行,221字

8、如果还是无法进入系统,尝试进入failsafe模式(小爱固件改自openwrt)。进入方法: 重启音箱,等一点时间(log会有提示 push f … failsafe)后连续按f + enter,此时会进入failsafe模式。
9、如果还是无法登录系统或者无法进入failsafe模式,直接使用uboot刷写固件。
刷机uboot刷机
1、前提:需要准备一个系统镜像。方法:将当系统镜像通过uboot提供的loady,loadx,loadb命令从计算机传输到音箱系统指定的内存地址中,然后使用nand earse擦除 磁盘 分区,最后使用nand write 将内存中的数据写入固定的磁盘地址中。
2、准备系统镜像。
  • # open ssh
  • [ -d /data/dropbear ] || mkdir /data/dropbear
  • [ -s /data/dropbear/rsa.key ] || dropbearkey -t rsa -s 1024 -f /data/dropbear/rsa.key &> /dev/null
  • /usr/sbin/dropbear -E -P /var/run/dropbear.pid -r /data/dropbear/rsa.key > /tmp/ssh.log
  • # your script
  • /data/user.sh
Shell[url=][/url][url=][/url]8行,273字

含义: /data/dropbear文件夹不存在则创建, /data/dropbear/rsa.key 文件不存在则自动生成,然后启动dropbear 在默认22端口开启ssh 服务,最后执行/data/user.sh, 以后可编辑这个文件来加入自己的开机自启命令,不用修改系统(运行时系统是只读模式,只有data和tmp可写)
  • Creating 6 MTD partitions on "A revision NAND 1Gib TC5XXXXXXXXX":
  • 0x000000800000-0x000001000000 : "tpl"
  • 0x000001000000-0x000001600000 : "boot0"
  • 0x000001600000-0x000001c00000 : "boot1"
  • 0x000001c00000-0x000004400000 : "system0"
  • 0x000004400000-0x000006c20000 : "system1"
  • NAND bbt detect factory Bad block at 6000000
  • 0x000006c20000-0x000008000000 : "data"
Shell[url=][/url][url=][/url]9行,353字

本次将刷入system0分区,当然你也可以刷入sytem1分区。

                               
登录/注册后可看大图
系统内刷机
如果你已经以root进入了系统,且链接上网络,可通过 dd 或者 mtd命令直接刷写系统。此处假设你已经进入system1,需要刷写system0.
1.执行 scp [email protected]:m5.img /tmp/m5.img使用scp将系统镜像从ubuntu传输到音箱系统。其中[email protected] 替换为你ubuntu系统的用户名和ip地址,如果不能链接,可能是你ubuntu系统sshd服务配置有问题。
2.执行 mtd write /tmp/m5.img system0将系统镜像写入system0分区内。
3.执行/usr/bin/fw_env -s boot_part boot0 设置环境变量boot_part, 使重启时进入system0
4.重启系统reboot -f
第2步也可用dd if=/tmp/m5.img of=/dev/mtdblock4代替,不过dd无法跳过系统坏块,如果你的系统有坏块,将报错提示 io error。
系统备份
将自己的各个分区备份,出问题后可通过uboot恢复。例如要备份系统0, mtdblock4:
如果当前分区有坏块,可拆分为多个文件,备份。
后续
后续玩法探索
1、替换唤醒词,自定义唤醒词
2、拦截im消息,实现自定义命令
声明:本文只作为技术研究,您如果使用以上内容用作其他用途,请自行承担后果,与本人无关。


作者: f41733    时间: 2022-7-1 14:54
标记一下,看着很吊
作者: fujian    时间: 2022-8-25 02:08
期待能替换两个字和英文唤醒词,以及替换tts
作者: lllcaidog    时间: 2022-10-27 21:30
学习一下
作者: xhonbi1979    时间: 2023-9-14 21:57
这个好高深,完全看不懂
作者: 573332342    时间: 2023-10-2 16:30
6666666666666666666666666666666666666666666666666666666
作者: 573332342    时间: 2023-10-2 16:49
新版本有知道怎么算出密码
作者: Philipshot    时间: 2024-3-4 15:52
楼主,音箱破解后,后续能实现替换唤醒词,自定义唤醒词吗?
作者: Philipshot    时间: 2024-3-4 15:56

楼主,音箱破解后,后续能实现替换唤醒词,自定义唤醒词吗?
作者: 573332342    时间: 2024-3-13 04:44
怎么算出结束地址大小
作者: chenwei0829    时间: 2024-3-14 08:50
好东东。学习下啊真好
作者: wolfhen    时间: 2024-3-28 11:42
非常感谢,我也来尝试一下




欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) Powered by Discuz! X3.5