NEWS
[Frage] Xiaomi Vacuum cleaner
-
Kann ihn ja noch steuern nur nicht mehr über Iobroker aber es ist ja auch erst ein Tag vergangen..
Werksreset kommt erstmal nicht in Frage. Hat ja auch seine Vorteile…
Gesendet von meinem SM-G930F mit Tapatalk
-
Meine Vorstellung konnte 1:1 umgesetzt werden, und müsste mit jedem Android Telefon ab 4.0 mit installierter und eingerichteter MiHome App funktionieren.
~~![](</s><URL url=)https://abload.de/img/tokenqnsel.png" />
Kurz zum Ablauf:
Die MiHome App wird auf den PC als Android Backup gesichert, dann extrahiert. Im Ordner apps/com.xiaomi.smarthome/db befindet sich die Datenbank aller verbundenen Geräte (miio2.db)
Keine Verschlüsselung oder anderes kommt hier zum Einsatz.
Die Geräte werden ausgelesen und mit dem Token zusammen ausgegeben.
Vorraussetzung zur Nutzung des Tools ist wie gesagt nur Android 4+, ein Windows PC, aktuelles Java, aktiviertes Debugging auf dem Smartphone und 2 Minuten Zeit.
Code gibts hier https://github.com/ultrara1n/MiToolkit
Download hier https://github.com/ultrara1n/MiToolkit/releases~~
-
Klingt super, mit welchem Tool hast du das Backup gemacht?
Gruß
ThePhantom
-
Klingt super, mit welchem Tool hast du das Backup gemacht?
Gruß
ThePhantom `
Ganz einfach mit adb.exe und folgenden Paremetern: backup -f save/backup.ab -apk com.xiaomi.smarthomeIst eine Android eigene Funktion, nur eigentlich nicht für solche Aktionen gedacht :roll:
-
Muss ich den Backup machen oder holt sich das Programm den automatisch?
Gesendet von meinem SM-G930F mit Tapatalk
-
Muss ich den Backup machen oder holt sich das Programm den automatisch?
Gesendet von meinem SM-G930F mit Tapatalk `
Alles automatisch,MiToolkit.exe starten, Verbindung prüfen, Token auslesen drücken, Meldung bestätigen.
Das Handy sollte schon entsperrt und Verbunden sein, auf dem Handy dann die Sicherungsmeldung bestätigen und ohne Passwort sichern, danach nur noch abwarten bis das Token Fenster kommt.
-
Ob das dann auch schon mit der neuen FW so geht, wenn man den Token vorher nie hatte?
Gruß
ThePhantom
-
Ob das dann auch schon mit der neuen FW so geht, wenn man den Token vorher nie hatte?
Gruß
ThePhantom `
Jop, dafür ist es ja gedacht.MiHome brauch den Token ja zwingend zur Kommunikation, speichert ihn also.
Ich habe (leider) auch auf die neuste Firmware geupdatet, und es klappt, wie man sieht, einwandfrei.
-
iOS mit Jailbreak:
/var/mobile/Containers/Data/Application/514106F3-C854-45E9-A45C-119CB4FFC235/Documents/USERID_mihome.sqlite
Ohne Jailbreak klappt es über ein unverschlüsseltes iTunes Backup und z.B. mit der Free Version von http://www.imactools.com/iphonebackupviewer/ auch. DB unter RAW, com.xiaomi.home, USERID_mihome.sqlite
-
Männer, ihr seid Genies!
-
gerade getestet mit iphonebackupviewer! Klappt! ich habe die USERID_mihome.sqlite erst mit iphonebackupviewer gesichert und dann mit einem Texteditor geöffnet. Direkt hinter dem Gerätenamen, ohne Leerzeichen! (ich habe zwei Robbis) steht der Token (die folgenden 32 Zeichen). Sehr stark!
-
Bei mir klappt das nicht so richtig mit dem Backup.
Bin wie folgt vorgegangen:
1. MiToolkit downgeloaded und installiert unter c:\programme
2. Programm als administrator ausgeführt
3. Verbindung geprüft (Daten werden eingetragen)
4. Java geprüft (gefunden)
5. Token auslesen
6. Bestätigung am Handy
7. Fehlermeldung:
… Fehler aufgetreten... Backup ist viel zu klein.
Wenn ich manuell das gleiche probieren mit cmd funktioniert dies auch nicht.
Was mach ich falsch ?
-
Bei mir klappt das nicht so richtig mit dem Backup.
Bin wie folgt vorgegangen:
1. MiToolkit downgeloaded und installiert unter c:\programme
2. Programm als administrator ausgeführt
3. Verbindung geprüft (Daten werden eingetragen)
4. Java geprüft (gefunden)
5. Token auslesen
6. Bestätigung am Handy
7. Fehlermeldung:
… Fehler aufgetreten... Backup ist viel zu klein.
Wenn ich manuell das gleiche probieren mit cmd funktioniert dies auch nicht.
Was mach ich falsch ? `
Wie lange macht er das Backup? Sprich, schließt sich das Fenster auf dem Handy direkt nach dem Tipp auf Backup, oder dauert es ein paar Sekunden?Ist die MiHome App vorher auf, bevor sich das Backup Fenster öffnet?
-
ja, mihome app geht auf.
Das speichern geht sehr schnell, 1 Sekunde.
-
@markus-:{"id":29,"method":"miIO.config_router","params":{"country_domain":"sg","ssid":"WLANKENNUNG","uid":123456789,"gmt_offset":3600,"passwd":"geheim"}}
Wichtige Parameter:
ssid, passwd und uid. Die uid findest Du z.B. in der App. `
Was sing gültige Werte für "country_domain" und welche machen Sinn?"uid" - ist das "d" aus der Flole App Config oder die Xiaomi User ID?
Wird der Sauger danach ganz normal in der Xiaomi App sichtbar? `
Als country domain sind mir cn für China und sg für Singapore als zulässig bekannt. Andere gehen möglicherweise auch. Bedeutsam könnten sie für die Zeitzone sein (wobei es hier ja noch gut_offset gibt). uid ist die User ID von Xiaomi. Wenn der Vorgang geklappt hat, wird das Gerät in der App sichtbar. Das ist der Mechanismus aufgrund dessen man auch mehrere Apps nutzen kann.
Spannend ist, ob jemand den Login-Vorgang auf den Xiaomi-Servern belauschen kann, der https verschlüsselt ist. Hier hat die App wohl eine eigene ID. Würden wir diesen Vorgang verstehen, so könnten wir die Daten auch aus der Cloud holen. Vielleicht haben wir ja einen Spezialisten hierfür unter uns.
-
Spannend ist, ob jemand den Login-Vorgang auf den Xiaomi-Servern belauschen kann, der https verschlüsselt ist. Hier hat die App wohl eine eigene ID. Würden wir diesen Vorgang verstehen, so könnten wir die Daten auch aus der Cloud holen. Vielleicht haben wir ja einen Spezialisten hierfür unter uns. `
SSL? Haha, schön wärs…
Das einzige was man da noch sieht ist der Login Call und die Keys die zurück kommen, danach war's das.
Sowohl die Requests als auch die Responses sind bei Xiaomi verschlüsselt, gehasht und signiert.
Ohne den App Code zu verstehen kommen wir da leider nicht weiter -> javadecompilers.com/apk
Mir fehlt die Zeit dafür.
Etwas größere Chancen sehe ich beim Download der Maps.
Die liegen in der Xiaomi Cloud analog AWS S3, für deren Signatur es eventuell auch Doku gibt.
Da gilt es dann nur noch rauszufinden, mit welchem Key der Request signiert werden muss.
Naja, und anschließend noch das File Format der Maps...
-
Ist mir grundsätzlich klar. Soweit ich weiß kommt es auf die Implementierung an, ob man ein falsches ssl-Zertifikat seitens eines Fake-Servers unterschieben kann. Wenn die App das Zertifikat nicht prüft so könnte man eventuell die Kommunikation entziffern.
-
Soweit ich weiß kommt es auf die Implementierung an, ob man ein falsches ssl-Zertifikat seitens eines Fake-Servers unterschieben kann. Wenn die App das Zertifikat nicht prüft so könnte man eventuell die Kommunikation entziffern. `
Das ist nicht das Problem, soweit bin ich.
Was sie über HTTPS schicken wird durch die App selbst aber nochmal verschlüsselt, auch alles was zurückkommt ist verschlüsselt!
P.S.: https://github.com/ac-pm/SSLUnpinning_Cydia sollte helfen wenn du Android hast. Einfach mal nach SSL Unpinning suchen
-
Ob das dann auch schon mit der neuen FW so geht, wenn man den Token vorher nie hatte?
Gruß
ThePhantom `
Jop, dafür ist es ja gedacht.MiHome brauch den Token ja zwingend zur Kommunikation, speichert ihn also.
Ich habe (leider) auch auf die neuste Firmware geupdatet, und es klappt, wie man sieht, einwandfrei. `
So einmal tausend dank an blacksn0w, ich bin wieder online, waren knapp 10 sekunden Zeitaufwand. Tausend dank
-
Auch von mir echt ein fettes Danke Schön - jetzt kann es losgehen!