ha0y / xiaomi_miot_raw

All-in-one & Easy-to-use. Integrate all your Xiaomi Smart Home - with a single integration and NO YAML files - into Home Assistant.
Apache License 2.0
2.19k stars 232 forks source link

大侠,能否解释一下解密从云端获取到的数据的具体方法? #140

Closed xcray closed 3 years ago

xcray commented 3 years ago

翻了翻代码,水平不够没看懂 :-( 我猜测这个插件是伪装成米家客户端与云端通信,那么来回的数据应该都是加密的。原来有个印象:局域网内的miio协议和云端的加密方式或者密钥之类的并不相同,不知道理解是否靠谱?

ha0y commented 3 years ago

你的猜测从一开始就错了:本插件并无意“伪装”成米家客户端,而是通过标准的miot api进行通信,这些api可能小米官方没有写过文档,但是github上已有很多相关的实现代码可以参考。例如yeelight的api https://github.com/Yeelight/miot-api (现已不可访问)、以及 https://github.com/squachen/micloud 。 局域网miio协议和云端通信,确实存在差别。其他设备与局域网内设备通信使用token,其他设备与云端通信使用账号信息。而云端与设备通信,实现更为复杂,需要key之类的更复杂的信息,大多数设备除非拆机读芯片无法获取到这个信息,至少目前我没有能力去模拟出一个小米云来让设备直接通信。

xcray commented 3 years ago

谢谢! 有点儿明白了。看来还是没希望解密设备发往云端的数据包啊。。。