本帖最后由 baby7blog 于 2023-11-4 23:38 编辑
首先申明:
本发现仅对于现版本>=1.5.5且之前没有接入XiaomiGateway3的多模网关有用处
这个情况下只能拆机刷回旧版本,固件需要使用uart格式的,这个格式的固件只有1.4.7之前的,只能刷到这个版本然后再通过telnet刷到低于1.5.4的,关于拆机刷机教程可以参考小米多模网关降级接入homeassistant
我这个发现也还是得拆机,暂时只是能少点步骤而已
我是拆机后通过串口连接usb,前面还算顺利,但是当选择rtkboot_xxxxxx.bin后就会出问题,都进行不到下一步去刷固件,当然这个关于这个奇怪的问题可能只是我的个人情况
不过我发现了
在这一步中,输出的信息中出现了密码,通过一个函数可以将它转换成telnet的登陆密码,省去了刷到1.4.7这个步骤
通过这里的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小白级
|