Skip to content

Instantly share code, notes, and snippets.

@willwhui
Last active December 14, 2019 12:07
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save willwhui/7829f4a76d8bf8a3410fe50a9000352c to your computer and use it in GitHub Desktop.
Save willwhui/7829f4a76d8bf8a3410fe50a9000352c to your computer and use it in GitHub Desktop.
获取小米智能设备token
@willwhui
Copy link
Author

willwhui commented Nov 30, 2017

直接从host系统中获取小米的miio2.db文件

根据官方文档中的命令行

echo "select name,localIP,token from devicerecord;" | sqlite3 /data/data/com.xiaomi.smarthome/databases/miio2.db 

可知,token都在miio2.db文件里,从里面select出来就好了。

这个文件应该存在于bluestacks在host os的某个目录的data.vid中。
可以找到这个文件并且找个可以打开.vid文件的工具
但我这里有一个简单办法:
前面尝试root的过程中,也就是根据这里操作的时候 https://forum.xda-developers.com/general/general/bluestacks-tweaker-2-tool-modifing-t3622681
使用到了一个工具叫做Bluestacks Tweaker.exe
将它和bluestacks同时运行起来。
在这个tweaker.exe的程序界面中有一个tab页面叫做FM(估计是File Manager的意思)
等bluestacks完全启动后,就可以从这个页面中直接访问虚拟机的/data/data/com.xiaomi.smarthome/databases/目录,得到miio2.db文件
将这个文件拷贝出来,想办法把想要的数据select出来。

因为我有linux机器,所以我把这个文件copy到linux里面,在命令行运行上述带有select的命令。
然后在命令行中,进入到包含这个文件的目录。
运行:

echo "select name,localIP,token from devicerecord;" | sqlite3 miio2.db

就得到想要的结果了!

@XuCcc
Copy link

XuCcc commented Feb 12, 2018

/data/data/com.xiaomi.smarthome/databases/miio2.db 里token为空咋回事0.0

@chrisvella
Copy link

chrisvella commented Mar 6, 2018

@XuCcc take a look at python-miio issue 185 if you are still having trouble.

@willwhui
Copy link
Author

willwhui commented Apr 2, 2018

@XuCcc 可能是米家没有完成设备同步?
或者如@chrisvella所说,你使用了高版本的米家app
我从朋友那里听说了,米家app升级之后,改变了文件格式,你可以找一个旧版的米家app试试。
目前我的旧版本app还是可以成功登录的。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment