首页
归档
友情链接
推荐
网盘
图库
GIT
Search
1
关于Seafile破解
3,113 阅读
2
小米ai音箱系统简单分析
1,070 阅读
3
Seafile--linux专业版破解-6.2.9
1,021 阅读
4
GitHub Enterprise 逆向分析
326 阅读
5
声明
279 阅读
默认分类
经验分享
软件破解
杂七杂八
登录
Search
标签搜索
gitlab
gitlab汉化
seafile
seafile破解
frp
小米ai音箱
小爱同学
小米音箱
deny
累计撰写
10
篇文章
累计收到
264
条评论
首页
栏目
默认分类
经验分享
软件破解
杂七杂八
页面
归档
友情链接
推荐
网盘
图库
GIT
搜索到
1
篇与
的结果
2019-04-23
小米ai音箱系统简单分析
前言 这是一篇关于小米ai音箱(以下简称小爱音箱)的系统分析,为什么会涉及这一话题?这期间详细说的话难以说明白,总结来说就是为了将小爱同学接入homeassistant(有关详情请百度,以下简称hass)。如果你了解hass后并且也打算倒腾倒腾,或者说想看看大神们是怎么玩hass的话,这里也推荐一个网站 hassbian。 小爱音箱内部电路板是有两个版本的,黑色的电路板和绿色的电路板;而黑色是能够修改系统文件的,绿色则不能;(不幸的是我手里头的小爱音箱就是绿色的,也一直靠着一套“生命维持系统”才能实现开机自启和守护进程等功能;)所以为了达到修改系统文件的目的,对小爱音箱的系统进行了大致的分析。 正文 通过ssh连接上小爱音箱,用户名为root,无密码。(前提是开启了ssh,参考文章) 使用df命令查看分区挂载情况: root@mico:~# df -h Filesystem Size Used Available Use% Mounted on /dev/mtdblock4 31.9M 31.9M 0 100% / tmpfs 121.2M 1.1M 120.2M 1% /tmp tmpfs 512.0K 0 512.0K 0% /dev /dev/ubi0_0 136.5M 31.8M 100.0M 24% /data 根目录可用空间居然为0,遂查看/etc/fstab文件,可里面也啥都没有; 多番查找后发现了/proc/mounts文件: root@mico:~# cat /proc/mounts /dev/mtdblock4 / squashfs ro,noatime 0 0 proc /proc proc rw,nosuid,nodev,noexec,noatime 0 0 sysfs /sys sysfs rw,nosuid,nodev,noexec,noatime 0 0 tmpfs /tmp tmpfs rw,nosuid,nodev,noatime 0 0 tmpfs /dev tmpfs rw,nosuid,relatime,size=512k,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,mode=600,ptmxmode=000 0 0 debugfs /sys/kernel/debug debugfs rw,noatime 0 0 pstore /sys/fs/pstore pstore rw,relatime 0 0 /dev/ubi0_0 /data ubifs rw,relatime 0 0 可以看出根目录是squashfs文件系统,挂载属性为只读。 因为文件系统是squashfs的缘故,所以就算挂载属性是读写也是无法对系统文件进行修改的。 直接修改是无法实现了,也只能想办法“曲线救国”了;于是乎想到了刷机。 下面就不再详述过程,只记录大概; 1.44.4刷机包官方版下载地址:https://bigota.miwifi.com/xiaoqiang/rom/s12a/mico_all_f86a5_1.44.4.bin 查看刷机包内文件:/bin/miso -c <刷机包文件> [-f 指定文件] root@mico:/data# /bin/miso -c mico_all_f86a5_1.44.4.bin model:3 file type:0 Segment 0: Offset 0x30 Filename mico_version Flash addr = 0xffffffff, length = 0x201, partition = 65535 Segment 1: Offset 0x280 Filename root.squashfs Flash addr = 0xffffffff, length = 0x1f53899, partition = 65535 Segment 2: Offset 0x1f53b60 Filename boot.img Flash addr = 0xffffffff, length = 0x4a6abe, partition = 65535 Segment 3: Offset 0x23fa660 Filename u-boot.bin.usb.bl2 Flash addr = 0xffffffff, length = 0xc000, partition = 65535 Segment 4: Offset 0x24066a0 Filename u-boot.bin.usb.tpl Flash addr = 0xffffffff, length = 0x81c00, partition = 65535 Segment 5: Offset 0x24882e0 Filename dtb.img Flash addr = 0xffffffff, length = 0x9c40, partition = 65535 刷机包解包命令:/bin/miso -r -x <刷机包文件> [-f 指定文件] root@mico:/data/rootfs# miso -r -x mico_all_f86a5_1.44.4.bin root@mico:/data/rootfs# ls boot.img dtb.img mico_all_f86a5_1.44.4.bin root.squashfs u-boot.bin.usb.tpl mico_version u-boot.bin.usb.bl2 nand闪存分区情况: root@mico:~# cat /proc/mtd dev: size erasesize name mtd0: 00200000 00020000 "bootloader" #uboot mtd1: 00800000 00020000 "tpl" mtd2: 00800000 00020000 "boot0" #系统0的kernel boot.img文件刷入分区 mtd3: 00800000 00020000 "boot1" #系统1的kernel boot.img文件刷入分区 mtd4: 02000000 00020000 "system0" #系统0的rootfs root.squashfs文件刷入分区 mtd5: 02000000 00020000 "system1" #系统1的rootfs root.squashfs文件刷入分区 mtd6: 0a000000 00020000 "data" 查看当前的启动系统: fw_env -g boot_part 切换系统: fw_env -s boot_part <boot0或boot1> root.squashfs里面就是根目录文件系统,可以通过unsquashfs命令将其解包,再用mksquashfs命令打包后便可以刷入到小爱音箱的system分区。(这俩命令小爱音箱里都没有,要另外的Linux系统安装后操作) 具体命令: unsquashfs root.squashfs #解包后会出现一个名为squashfs-root的文件夹,可以对里面的文件进行修改 mksquashfs squashfs-root <输出文件名> -comp xz -all-root #输出文件名自定义,如果是文件已经存在,请先删除! mtd write <打包后的文件> </dev/mtd4或者/dev/mtd5> #将打包后的文件通过该命令刷入系统,注意刷入的文件的版本号与被刷入的系统的版本号一致性; 其他发现&补充说明 /etc/ssl/certs 文件夹下存放这各个证书签发机构的证书,想要劫持https流量的可以从这里下手。 /usr/bin 目录下有很多有意思的命令,可以去分析分析 系统更新命令 : /bin/ota #这是一个shell脚本文件 对这个文件一路分析下去就能知道系统的刷机机制了。 结束 至此已经能够实现通过刷机的方式修改系统文件了,但是还有一些点我可能没有描述的那么详细,所以在你没有经过具体分析和详细了解其中刷机机制前,请谨慎刷机。 不过也是为了方便进行刷机,也打算开一个repo,将这些操作写成脚本方便大家。 github地址:https://github.com/denymz/mi_aispeaker
2019年04月23日
1,070 阅读
4 评论
0 点赞