七仔的博客

七仔的博客GithubPages分博

0%

未接入小米网关3的155版本多模网关刷机简化步骤

未接入小米网关3的155版本多模网关刷机简化步骤

未接入小米网关3的155版本多模网关刷机简化步骤

  • 首先申明:

本发现仅对于现版本>=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中找到的,抽取出来:

1
2
3
4
5
6
7
8
9
10
11
12
13
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/myBlog/123.html

欢迎关注我的其它发布渠道