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

 找回密码
 立即注册
查看: 5545|回复: 5

[修仙教程] 小米音箱DIY指令探索(一)

[复制链接]

5

主题

22

帖子

299

积分

论坛技术达人

积分
299
金钱
277
HASS币
0
发表于 2021-9-14 14:41:52 | 显示全部楼层 |阅读模式
本帖最后由 rainmote 于 2021-9-14 14:43 编辑

有台小米音箱万能遥控版,型号是LX05A,探索如何进行自定义指令,比如控制kodi,iptv切换频道等。

如何利用串口TTL登陆shell环境?
经过探索我一共试过2种方法:
1. 利用SN计算密码
看到一篇帖子提到最新已经失效,我目前没遇到。
可以利用已知的几个uuid+自己的SN试试。
import hashlib
sn = '换成你的SN'
def calc(uuid):
    md5 = hashlib.md5()
    md5.update(str(sn + uuid).encode())
    s = md5.hexdigest()
    print(s.lower()[:14])
    
calc('9C78089F-83C7-3CDC-BCC9-93B378868E7F')
calc('B0168A6D-119A-F21A-DA58-980732F80A19')
calc('5775B10D-15C0-7827-97B9-88EA07FCA97A')

# 7745c21148c36d
# a0ccbd2c6c2e46
# 88e3bb3369a90c


2. 利用uboot修改启动参数
这里启动需要登陆主要原因是/etc/inittab里面有
::askconsole:/bin/ash --login
把--login参数去掉就好了,当然我们没改固件当然没法直接改。
这里就需要先进入uboot,修改启动参数来实现。
小米uboot做了部分加固,默认启动按任意键进入uboot被屏蔽了。
经过探索,在uboot启动过程中可以不断发送stopgs来强制进入uboot,我是用coolterm这个串口工具提前输出好字符串一直回车发送成功进入。
进入之后,利用env print打印环境变量,发现有2个系统启动参数(小米音箱可能都是两个),可以发现setargs_first和setargs_second里面有init参数。
经过尝试,修改second启动参数来测试:
setenv setargs_second setenv bootargs console=ttyS0,115200 root=/dev/nande rootwait init=/bin/ash cma= loglevel=8 partitions=env@nanda:kernel1@nandb:rootfs1@nandc:kernel2@nandd:rootfs2@nande:misc@nandf:private@nandg:crashlog@nandh:UDISK@nandi
然后启动
run setargs_second boot_second
如果正常就会直接进入ash的shell环境中。

另外,uboot里可以把启动时delay 0修改为3,然后保存,下次就可以按任意键进入uboot了。


如何dump出rootfs文件系统?
进入系统,发现除了/data目录外,其他都是只读的,为了能ssh登陆或者取消登陆等,我们需要修改/etc/下面一些配置。
首先看下rootfs对应的设备
/ # cd /dev/by-name/
/dev/by-name # ls -ltr
lrwxrwxrwx    1 root     root            10 Jan  1  1970 rootfs2 -> /dev/nande
lrwxrwxrwx    1 root     root            10 Jan  1  1970 rootfs1 -> /dev/nandc
lrwxrwxrwx    1 root     root            10 Jan  1  1970 private -> /dev/nandg
lrwxrwxrwx    1 root     root            10 Jan  1  1970 misc -> /dev/nandf
lrwxrwxrwx    1 root     root            10 Jan  1  1970 kernel2 -> /dev/nandd
lrwxrwxrwx    1 root     root            10 Jan  1  1970 kernel1 -> /dev/nandb
lrwxrwxrwx    1 root     root            10 Jan  1  1970 env -> /dev/nanda
lrwxrwxrwx    1 root     root            10 Jan  1  1970 crashlog -> /dev/nandh
lrwxrwxrwx    1 root     root            10 Jan  1  1970 UDISK -> /dev/nandi
我们找一个可以写的(且比较大的)目录,利用dd把rootfs2 dump出来
/dev/by-name # df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                   24.0M     24.0M         0 100% /
/dev/root                24.0M     24.0M         0 100% /
tmpfs                    60.1M      6.7M     53.4M  11% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/by-name/UDISK       23.2M      2.2M     19.8M  10% /data
/dev/by-name/UDISK       23.2M      2.2M     19.8M  10% /etc/shadow
/dev/by-name # dd if=/dev/nande of=/tmp/rootfs2.img
接着我们利用scp把rootfs2.img复制到其他电脑上,安装squashfs工具,利用unsquashfs来解压出来,比如把/etc/inittab改下,然后再用squashfs压缩回去
unsquashfs -s old.img
注意压缩的-b 262144是上面unsquashfs -s old.img命令输出的block size。


修改且打包好了,再用scp传会到/tmp目录,然后利用dd刷进去。
dd if=/tmp/new.img of=/dev/nande bs=1024
然后重启,进入uboot,切换到系统2启动起来。

如何抓https包?
抓https包核心就是把自签名证书导入到设备中,不校验(忽略)HTTP证书问题的请求就比较方便了。
把burp证书导出,利用openssl转成crt格式。
然后计算hash值
openssl x509 -inform PEM -subject_hash -in burp.crt
在把证书拷贝到/etc/ssl/certs,利用ln -sf burp.crt xxxxxx.0建立软连接。

证书安装完就可以转包了,可以利用电脑分享热点。
然后使用iptables把http/https流量镜像/转发到burp的8080端口,镜像用TEE模块
iptables -t nat -A PREROUTING -p tcp -s 192.168.100.2 --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp -s 192.168.100.2 --dport 443 -j REDIRECT --to-port 8080

跨机器用DNAT或者在设备上利用route命令修改默认网关为指定机器。


参考资料
https://www.freebuf.com/articles/endpoint/281185.html


评分

参与人数 1金钱 +20 收起 理由
whxciotw + 20 纳尼,还有这种操作?

查看全部评分

回复

使用道具 举报

123

主题

4665

帖子

1万

积分

管理员

囧死

Rank: 9Rank: 9Rank: 9

积分
16452
金钱
11702
HASS币
45
发表于 2021-9-15 08:35:55 | 显示全部楼层
楼主太牛了,曲高和寡啊!
回复

使用道具 举报

22

主题

657

帖子

4644

积分

版主

Rank: 7Rank: 7Rank: 7

积分
4644
金钱
3972
HASS币
40
发表于 2021-9-15 10:53:48 | 显示全部楼层
膜拜大神
回复

使用道具 举报

9

主题

105

帖子

395

积分

中级会员

Rank: 3Rank: 3

积分
395
金钱
290
HASS币
0
发表于 2021-9-15 15:20:09 | 显示全部楼层
写的太好了。
完全看不懂
回复

使用道具 举报

11

主题

313

帖子

1324

积分

金牌会员

Rank: 6Rank: 6

积分
1324
金钱
1011
HASS币
10
发表于 2021-9-18 00:08:02 | 显示全部楼层
顶楼上                。
回复

使用道具 举报

6

主题

93

帖子

1044

积分

金牌会员

Rank: 6Rank: 6

积分
1044
金钱
951
HASS币
0
发表于 2021-10-12 11:13:05 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-29 06:46 , Processed in 0.053074 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表