9

获取米家MIIO设备Token

 3 years ago
source link: https://fisher.lazybone.xyz/%E8%8E%B7%E5%8F%96%E7%B1%B3%E5%AE%B6miio%E8%AE%BE%E5%A4%87token.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

获取米家MIIO设备Token

发表于

2021-02-28 更新于 2021-03-27

阅读次数:

因毕设选题是和物联网相关的主题,要做一个能够控制智能家居设备的微信小程序。所以就有了自由控制米家智能家居设备的需求,想要控制米家MIIO设备,就需要获取智能设备的token。但小米对获取token的方法不断进行封堵,截止这篇博客发布时,通过Android手机Root,读取旧版米家中存有token的sqlite文件已经不可行了(旧版米家APP直接闪退);通过抓包的方式读取device_list包中的token也不行了(数据包的body已经被加密);python-miio中discover方法也早已不行了(返回的是无效的token)。我所知道的方法中,使用tokens-extractor和读取IOS设备备份文件数据的方法还可以使用,但何时失效就不好说了

最简单的方法

最简单的方法当然是使用Xiaomi Cloud Tokens Extractor了,该脚本模拟Android米家APP的登录,以直接获取到自己账号下的智能设备信息,就能直接拿到token了。操作的流程也很简单,下载脚本运行即可,脚本需要依赖python的requests库,以下是简单的shell代码:

pip3 install requests
wget https://github.com/PiotrMachowski/Xiaomi-cloud-tokens-extractor/raw/master/token_extractor.py
python3 token_extractor.py

按照脚本中的提示输入账号密码,选择地区(一般是cn),然后看输出即可,如下图所示:

成功获取token

但是,这个脚本不是一直都成功的,以上图片是我在2021年2月初时获取成功后截图的。如果出现脚本不能用的情况,就要等待作者更新脚本了,在这里先对作者说声辛苦了,非常感谢!

读取IOS设备备份文件数据

这个方法相对来说比较麻烦,尤其是对于我这种手机文件多的,备份一次要好久…但是没办法,活还是得干嘛,至于小米何时再给数据文件来个加密,那就真的是麻烦了

将设备备份

首先要修改一下备份的选项,在手机摘要页面的备份中,将给iPhone备份加密选项关掉,如下图所示,然后再点击立即备份,等待备份完成即可

备份选项

iBackup Viewer导出数据

点击这里可以下载iBackup Viewer,下载完后安装即可,如果这个网站打不开,也可以下载我的服务器提供的4.1760版本,安装完之后打开软件,点击自己刚刚备份的那个设备(那个壁纸可以点的),载入备份后点最后一个像分支一样的图标(Raw Files)。

AppDomain中找到com.xiaomi.mihome并点击,此时右侧就显示米家APP备份的数据,在右侧点击Name以按照文件名排序,看到一个名为xxx_mihome.sqlite的文件后(xxx是你的小米账号ID),选择这个文件并点击右上角Export,点击Selected...,选择一个位置将这个文件导出即可,以下是操作流程图:

导出sqlite文件

读取数据需要用到python-miio包,安装一下即可:

pip3 install python-miio

接着使用miio-extract-tokens读取数据就可以获得token了:

miio-extract-tokens --dump-all xxx_mihome.sqlite

读取数据

拿到token后,就能够做自己想做的事情了^_^


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK