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

 找回密码
 立即注册
查看: 761|回复: 2

[技术探讨] 未接入小米网关3的155版本多模网关刷机简化步骤

[复制链接]

11

主题

89

帖子

2310

积分

论坛技术达人

积分
2310
金钱
2216
HASS币
30
QQ
发表于 2023-11-4 23:37:10 | 显示全部楼层 |阅读模式
本帖最后由 baby7blog 于 2023-11-4 23:38 编辑

首先申明:
本发现仅对于现版本>=1.5.5且之前没有接入XiaomiGateway3的多模网关有用处

这个情况下只能拆机刷回旧版本,固件需要使用uart格式的,这个格式的固件只有1.4.7之前的,只能刷到这个版本然后再通过telnet刷到低于1.5.4的,关于拆机刷机教程可以参考小米多模网关降级接入homeassistant

我这个发现也还是得拆机,暂时只是能少点步骤而已

我是拆机后通过串口连接usb,前面还算顺利,但是当选择rtkboot_xxxxxx.bin后就会出问题,都进行不到下一步去刷固件,当然这个关于这个奇怪的问题可能只是我的个人情况

不过我发现了

mmexport1699111335170.png

在这一步中,输出的信息中出现了密码,通过一个函数可以将它转换成telnet的登陆密码,省去了刷到1.4.7这个步骤

capture_20231104232524737_edit_484666726388022.jpg

通过这里的did、key、mac然后通过公式 base64(hmac_sha256(key, sha256(did+mac+key))) 就可以转换出登陆密码:

函数是我在XiaomiGateway3中找到的,抽取出来:


import base64
import hashlib
import hmac

def miio_password(did: str, mac: str, key: str) -> str:
    secret = hashlib.sha256(f"{did}{mac}{key}".encode()).hexdigest()
    dig = hmac.new(secret.encode(), msg=key.encode(), digestmod=hashlib.sha256).digest()
    return base64.b64encode(dig)[-16:].decode()

did="463977xxx"
mac="54:xx:44:3B:BD:2C"
key="UnOc0i6xxxxK8fraG"
print(miio_password(did, mac, key))


然后就可以5222222打开多模网关的telnet,然后用户名为admin,密码是上面计算出来的,成功登陆

至于后面的刷机可以参考小米多模网关固件1.5.5降级接入HA小白级


个人博客:
https://www.baby7blog.com/index
回复

使用道具 举报

1

主题

117

帖子

348

积分

中级会员

Rank: 3Rank: 3

积分
348
金钱
231
HASS币
0
发表于 2024-4-27 19:48:47 | 显示全部楼层
最新版的gateway3 也不需要降级了,直接ttl 获取上图中的key,跟token就能直接接入了。。。强的一批   1.5.6 也可以直接接入
回复

使用道具 举报

5

主题

34

帖子

380

积分

中级会员

Rank: 3Rank: 3

积分
380
金钱
346
HASS币
0
发表于 2024-4-27 23:22:46 | 显示全部楼层
1uv_can 发表于 2024-4-27 19:48
最新版的gateway3 也不需要降级了,直接ttl 获取上图中的key,跟token就能直接接入了。。。强的一批   1.5. ...

这么厉害了
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-5-21 10:34 , Processed in 0.052982 second(s), 28 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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