What I know about the Xiaomi Mi Band:
- It's BTLE - uses the BT4.0 LE GATT stack.
- The BT Characteristics are... poorly documented.
There has been some work documenting the protocol but it hasn't been complete. There's a packet sniffer from Adafruit that I've looked into. Unfortunately for me though, it's all windows.
I'm going to start by attacking the application that Xiaomi put out (cutely enough, called Mi Fit). I've run it through tools (Luyten, Procyon, smali, etc) and found some... interesting snippets hidden away:
private static void g() {
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MM.: .:' `::: .:`MMMMMMMMMMM|`MMM'|MMMMMMMMMMM': .:' `::: .:'.MM");
d("MMMM. : `MMMMMMMMMM :*' MMMMMMMMMM' : .MMMM");
d("MMMMM. :: . `MMMMMMMM' :: `MMMMMMMM' . :: . .MMMMM");
d("MMMMMM. : :: ::' : :: ::' : :: ::' :: ::' : :: ::.MMMMMM");
d("MMMMMMM ;:: ;:: ;:: ;:: ;:: MMMMMMM");
d("MMMMMMM .:' `::: .:' `::: .:' `::: .:' `::: .:' `::MMMMMMM");
d("MMMMMM' : : : : : `MMMMMM");
d("MMMMM'______::____ :: . :: . :: ___._::____`MMMMM");
d("MMMMMMMMMMMMMMMMMMM`---._ :: ::' : :: ::' _.--::MMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMM::. :: .--MMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM-. ;::-MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM. .:' .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM. .MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM\\ /MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMVMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM .:ZylvanaS:. MM");
d("MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM");
}
(for those who can't read wrapped java, that's the Batman logo.)
First, I need to attack the anti-debugging features. This includes their "vaguely" custom "logging" framework. There's a couple of settings that look useful in the long run. The next step is going to be using that logging framework (that they've so *handily* provided me!) to dump every BTLE GATT statement.
(in reality, the first step is getting the app to install under the modified package name and not get conflicts)
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
Cool! Any news about it?
Are you sure? yes | no