
Ai Ways U5 SOC abgreifen
Zitat von Jpsy am 22. April 2023, 07:21 UhrHi Jens,
ich antworte Dir in Deutsch, das ist hier vermutlich für mehr Leute lesbar.
Der Grund, warum der Weg über mitmproxy überhaupt funktioniert hat, war ein Fehler in der alten Appversion. Die App hat damals einen unverschlüsselten HTTP-Request (also nicht HTTPS) zum Laden eines Bildes verwendet, und dabei auch noch die Login Credentials mitgeschickt. Das war sicherheitstechnisch ein totaler Fail. Aber für uns eine große Hilfe, um das Token und die RegisterId zu bekommen.Nun hat Aiways diese Sicherheitslücke aber geschlossen. Jetzt braucht man bessere Werkzeuge, wie z.B. Pcapdroid. Damit ist es möglich, den Datenverkehr zu entschlüsseln, weil man in Android ein Zertifikat von Pcapdroid als vertrauenswürdig hinterlegt.
BTW: Der Verbrauch unseres U5 über seine bisher 33.000 km liegt bei 27,3 kWh / 100 km. Das ist viel, enthält aber die Ladeverluste, die sonst meist nicht angegeben werden (und den Fahrstiel meiner Frau :). Ein Tesla kommt aber auch mit Ladeverlusten auf sehr viel niedrigere Werte - bedingt durch Siliziumkarbid-Halbleiter, selbst entwickelte Motoren, viel besseren cw-Wert und sicher noch viele weitere Faktoren.
@dvbhannes:
Kannst Du den EVCC-Code nicht selbst anpassen? Gegenüber der ursprünglichen Version mit drei Requests musst Du alle Requests weglassen außer dem einen, der die Daten bezieht. In diesem Request fügst Du Dein Token und Deine RegisterId fest ein und fügst die Parameter version und plattform hinzu und es sollte wieder funktionieren.
Mein Token ist bisher seit vielen Monaten stabil. Wenn es wirklich ein Verfallsdatum haben sollte, kann mit Pcapdroid jederzeit wieder das neue abgegriffen werden. Einmal im Jahr wäre das z.B. für mich ok. Besser als garkeine Daten.Gruß Jörg
Hi Jens,
ich antworte Dir in Deutsch, das ist hier vermutlich für mehr Leute lesbar.
Der Grund, warum der Weg über mitmproxy überhaupt funktioniert hat, war ein Fehler in der alten Appversion. Die App hat damals einen unverschlüsselten HTTP-Request (also nicht HTTPS) zum Laden eines Bildes verwendet, und dabei auch noch die Login Credentials mitgeschickt. Das war sicherheitstechnisch ein totaler Fail. Aber für uns eine große Hilfe, um das Token und die RegisterId zu bekommen.
Nun hat Aiways diese Sicherheitslücke aber geschlossen. Jetzt braucht man bessere Werkzeuge, wie z.B. Pcapdroid. Damit ist es möglich, den Datenverkehr zu entschlüsseln, weil man in Android ein Zertifikat von Pcapdroid als vertrauenswürdig hinterlegt.
BTW: Der Verbrauch unseres U5 über seine bisher 33.000 km liegt bei 27,3 kWh / 100 km. Das ist viel, enthält aber die Ladeverluste, die sonst meist nicht angegeben werden (und den Fahrstiel meiner Frau :). Ein Tesla kommt aber auch mit Ladeverlusten auf sehr viel niedrigere Werte - bedingt durch Siliziumkarbid-Halbleiter, selbst entwickelte Motoren, viel besseren cw-Wert und sicher noch viele weitere Faktoren.
@dvbhannes:
Kannst Du den EVCC-Code nicht selbst anpassen? Gegenüber der ursprünglichen Version mit drei Requests musst Du alle Requests weglassen außer dem einen, der die Daten bezieht. In diesem Request fügst Du Dein Token und Deine RegisterId fest ein und fügst die Parameter version und plattform hinzu und es sollte wieder funktionieren.
Mein Token ist bisher seit vielen Monaten stabil. Wenn es wirklich ein Verfallsdatum haben sollte, kann mit Pcapdroid jederzeit wieder das neue abgegriffen werden. Einmal im Jahr wäre das z.B. für mich ok. Besser als garkeine Daten.
Gruß Jörg
Zitat von dvbhannes am 24. April 2023, 15:35 Uhr@ Jpsy:
Wie EVCC-Code? Meinst Du in der Konfigurationsdatei einfach Token und RegisterId einfügen???
Gruß Henrik
@ Jpsy:
Wie EVCC-Code? Meinst Du in der Konfigurationsdatei einfach Token und RegisterId einfügen???
Gruß Henrik
Zitat von Jpsy am 28. April 2023, 12:03 UhrZitat von dvbhannes am 24. April 2023, 15:35 UhrWie EVCC-Code? Meinst Du in der Konfigurationsdatei einfach Token und RegisterId einfügen???
Nein, ich meine den Quellcode von EVCC. Das ist ja ein OpenSource-Projekt und die Quellen liegen offen.
Falls Du dazu in der Lage bist, kannst das Aiways-Modul von EVCC selbst modifizieren und das Projekt neu kompilieren.
Ich denke, die dafür relevanten Dateien stehen hier:
https://github.com/evcc-io/evcc/tree/master/vehicle/aiways
Zitat von dvbhannes am 24. April 2023, 15:35 UhrWie EVCC-Code? Meinst Du in der Konfigurationsdatei einfach Token und RegisterId einfügen???
Nein, ich meine den Quellcode von EVCC. Das ist ja ein OpenSource-Projekt und die Quellen liegen offen.
Falls Du dazu in der Lage bist, kannst das Aiways-Modul von EVCC selbst modifizieren und das Projekt neu kompilieren.
Ich denke, die dafür relevanten Dateien stehen hier:
https://github.com/evcc-io/evcc/tree/master/vehicle/aiways
Zitat von dvbhannes am 26. Mai 2023, 11:35 UhrKönnte es sein, dass man mit einer API ABRP mit den Live-Daten des Aiways versorgen kann...
siehe https://www.iternio.com/
Könnte es sein, dass man mit einer API ABRP mit den Live-Daten des Aiways versorgen kann...
siehe https://www.iternio.com/
Zitat von dvbhannes am 26. Mai 2023, 11:48 UhrZitat von Jpsy am 28. April 2023, 12:03 UhrZitat von dvbhannes am 24. April 2023, 15:35 UhrWie EVCC-Code? Meinst Du in der Konfigurationsdatei einfach Token und RegisterId einfügen???
Nein, ich meine den Quellcode von EVCC. Das ist ja ein OpenSource-Projekt und die Quellen liegen offen.
Falls Du dazu in der Lage bist, kannst das Aiways-Modul von EVCC selbst modifizieren und das Projekt neu kompilieren.
Ich denke, die dafür relevanten Dateien stehen hier:
https://github.com/evcc-io/evcc/tree/master/vehicle/aiwaysDanke Dir, aber dazu bin ich leider nicht in der Lage...
Zitat von Jpsy am 28. April 2023, 12:03 UhrZitat von dvbhannes am 24. April 2023, 15:35 UhrWie EVCC-Code? Meinst Du in der Konfigurationsdatei einfach Token und RegisterId einfügen???
Nein, ich meine den Quellcode von EVCC. Das ist ja ein OpenSource-Projekt und die Quellen liegen offen.
Falls Du dazu in der Lage bist, kannst das Aiways-Modul von EVCC selbst modifizieren und das Projekt neu kompilieren.
Ich denke, die dafür relevanten Dateien stehen hier:
https://github.com/evcc-io/evcc/tree/master/vehicle/aiways
Danke Dir, aber dazu bin ich leider nicht in der Lage...
Zitat von WallE92 am 28. Juli 2023, 08:37 UhrHallo zusammen,
erstmal toll, was so viele hier schon so geleistet haben!
Ich werkel jetzt auch schon ein paar Tage daran rum, den Abruf der Daten über JS in iobroker zu integrieren.
Mit den vorhandenen Anleitungen erreiche ich auch immerhin schon den Aiways-Server. Token und den ganzen Spaß habe ich auch aus der App ausgelesen.
Es wird in meinem Skript nur auch noch der getCondition request ausgeführt.Leider erhalte ich aber nach wie vor die Meldung
{"code":702,"message":"The detection environment is not safe, please try again later","timestamp":1690467531139}Ich vermute, ich habe noch einen Fehler im Header.
Kann mir dazu eventuell jemand einen Hinweis liefern, was daran falsch ist?
Mein Header sieht derzeit wie folgt aus:
const requestHeaders = {"language":language,"token":token,"requesttime":Date.now(),"appsignid":appsignid,"reqtimestamps":Date.now(),"authorization":authorization,"registerid":registerid,"deviceid":deviceid,"version":version,"platform":platform,"apptimezone":apptimezone,"apptimezoneid":apptimezoneid,"content-type":"application/json; charset=utf-8","accept-encoding":"gzip","user-agent":"okhttp/4.3.1",};
Vielen Dank schon einmal!
EDIT:
Problem ist gefunden. Die aktuelle App-Version ist 1.4.1, jedoch scheint der Aiways-Server mit dieser einen anderen Zugriff zu erwarten. Dieser muss sämtliche Informationen enthalten, welche ich oben aufgelistet habe. Am Ende scheitert das bei mir an der "authorization". Ich weiß nicht, wie diese generiert wird. Sie ändert sich auch bei jeder Anfrage an den Server.
Das alles scheint aber kein Problem zu sein, so lange man die "version": "1.3.0" an den Server schickt. In diesem Fall kann man sich die authorization, die appsignid und die zwei timestamps sparen und man erhält die Daten.
Hallo zusammen,
erstmal toll, was so viele hier schon so geleistet haben!
Ich werkel jetzt auch schon ein paar Tage daran rum, den Abruf der Daten über JS in iobroker zu integrieren.
Mit den vorhandenen Anleitungen erreiche ich auch immerhin schon den Aiways-Server. Token und den ganzen Spaß habe ich auch aus der App ausgelesen.
Es wird in meinem Skript nur auch noch der getCondition request ausgeführt.
Leider erhalte ich aber nach wie vor die Meldung
{"code":702,"message":"The detection environment is not safe, please try again later","timestamp":1690467531139}
Ich vermute, ich habe noch einen Fehler im Header.
Kann mir dazu eventuell jemand einen Hinweis liefern, was daran falsch ist?
Mein Header sieht derzeit wie folgt aus:
};
Vielen Dank schon einmal!
EDIT:
Problem ist gefunden. Die aktuelle App-Version ist 1.4.1, jedoch scheint der Aiways-Server mit dieser einen anderen Zugriff zu erwarten. Dieser muss sämtliche Informationen enthalten, welche ich oben aufgelistet habe. Am Ende scheitert das bei mir an der "authorization". Ich weiß nicht, wie diese generiert wird. Sie ändert sich auch bei jeder Anfrage an den Server.
Das alles scheint aber kein Problem zu sein, so lange man die "version": "1.3.0" an den Server schickt. In diesem Fall kann man sich die authorization, die appsignid und die zwei timestamps sparen und man erhält die Daten.
Valentin
__________________________________
Tesla Model Y LR von 02/22
Aiways U5 Premium von 12/22 mit AHK