Hi, ich hab hier ne Black Box. Da stecke ich 4 Bytes rein und es kommen 4 Bytes wieder raus :) Allerdings sind die Bytes die raus kommen irgendwie verdreht, verschoben, gekippt, verrechnet..... Ein Beispiel: 00 00 00 00 => 96 B4 0F 11 .. 00 1C 00 00 => CB 2C 22 36 .. 55 55 55 55 => 39 45 F0 B7 Das was rein geht kann jede billige Zahl sein, also doch eine recht grosse Anzahl an Kombinationen ;) Bei gleicher Eingabe kommt auch immer das gleiche Ergebnis heraus. Wer findet das Muster, den Algorithmus? :) Im Anhang noch ein paar mehr Muster. Grüße
Gibt es Geld für die Lösung? Oder ist das eine Stellenausschreibung der NSA oder des BND?
Also wenn es nur ums Geld geht ;) Dann gibt es 50 Euro für die Lösung Oder willst du lieber nen Job haben?
Frag doch Bosch nach der Lösung du Witzbold... Bei diesem Rätsel geht es um die Kommunikation bei einem Pedelec das einen Boschantrieb hat. Die im Forum können es nicht knacken, deswegen sollen wir jetzt "knobeln". http://www.pedelecforum.de/forum/index.php?threads/infos-%C3%BCber-bosch-antrieb-can-bus-daten-usw.17799/page-6#post-567311 Zwei Posts weiter ist dann auch die hier angehängte Datei: ccat4.txt @Zahlennick Schöne Grüße an Google und schreib sowas das nächste mal gleich in den Thread :)
Wie schnell muß das sein? Falls sich die Geschwindigkeit in Grenzen hält, wäre ein Controller mit 16GB EEPROM (SD-Karte) und Lookup-Table ein möglicher Ansatz. Das wird nicht so schnell wie eine Berechnung, aber die Position des Ausgangs-Codes im Speicher kann man direkt berechnen und deswegen trotz der Größe der Datei schnell darauf zugreifen.
3162534373 .. schrieb: > ich hab hier ne Black Box. Ich habe hier eine White-Box: Da stecke ich ein Ding rein und es kommt auch das selbe Ding wieder raus... Wer findet den Algorithmus?
:
Bearbeitet durch User
Dump mal den gesammten Datensatz, als Lockup-Table sollten dass dann 4GB sein. Dann mal versuchen, mit guten Zipprogramm zu komprimieren. Wenn da System (wiederholende Sequenzen oder gleiche Daten) drin ist, dann findet es das Programm nomalerweise und macht mit Huffman-Code und Wörterbuch-Algo weniger Daten draus. Dann hier posten und mit hexeditor, Statistik und geschicktem Suchen versuchen, das System dahinter zu finden. Die wenigen geposteten Daten reichen dazu IMO nicht.
:
Bearbeitet durch User
Rote T. schrieb: > Dump mal den gesammten Datensatz Moin, die Box antwortet nur alle 300ms ;) Würde also ewig dauern alle Antworten zu bekommen :( Grüße
BTW, da ist schon System drin, die Bytes beeinflussen sich über kreuz, d.h. oberen 2 Bytes haben einfluss auf die unteren 2 Bytes und andersrum. FF FF unteres Byte => 01 0A oberes Byte in zieldaten 01 0A unteres Byte => BA 96 oberes Byte in zieldaten FE FE unteres Byte => 70 8D oberes Byte in zieldaten 01 01 oberes Byte => 9C 38 im unteren Byte in Zieldaten Wenn das auch für den Rest der Daten stimmt, dann reicht schon eine billige Lockup-Datei in einem 64k/128k EPROM oder ein besserer uc. Wie sieht es mit den versprochenen 50€ aus?
1 | 01 00 00 00 = 96 B4 0A 66 |
2 | 00 01 00 00 = 96 B4 CA 5F |
3 | 01 01 00 00 = 96 B4 9C 38 |
4 | 01 01 00 01 = BA 96 9C 38 |
5 | |
6 | 00 00 01 00 = 90 F6 0F 11 |
7 | 00 00 01 01 = C1 28 0F 11 |
8 | 00 00 00 01 = BA 96 0F 11 |
9 | 00 00 00 00 = 96 B4 0F 11 |
10 | |
11 | FE FE FE FE = 70 8D 00 7F |
12 | FE FE FE FF = B0 9F 00 7F |
13 | FE FE FF FE = 3A E4 00 7F |
14 | FE FE FF FF = 01 0A 00 7F |
15 | |
16 | FE FF FF FF = 01 0A 29 0D |
17 | FF FE FF FF = 01 0A 8F DB |
18 | |
19 | FF FF FE FE = 70 8D EE 1B |
20 | FF FF FE FF = B0 9F EE 1B |
21 | FF FF FF FE = 3A E4 EE 1B |
22 | FF FF FF FF = 01 0A EE 1B |
ja noch fehlt der Algorithmus. Es muss ja für alle Kombinationen passen ;) 692a4963 = 976bb658 aeed49a4 = 7ad16a6a d19249db = 0ff2740c eead49e4 = 3c471547
Poste mal eine Liste mit Daten, wo die oberen 2 Bytes fix (z.B. 00 00) sind und die unteren 2 Bytes ändern. Dann eine wo die unteren beiden fix und die oberen 2 ändern so in dem Stil:
1 | 00 00 02 02 = AB B6 39 03 |
2 | 00 00 02 03 = 5D E9 39 03 |
3 | 00 00 03 02 = 24 19 39 03 |
4 | 00 00 03 03 = 42 B8 39 03 |
5 | |
6 | 00 00 04 04 = 78 FF 8B 15 |
7 | 00 00 04 05 = 5C F4 8B 15 |
8 | 00 00 05 04 = 5E A7 8B 15 |
9 | 00 00 05 05 = EB A3 8B 15 |
Und das alles ist nur eine Prüfsumme oder ein Handshake? Das kommt mir recht viel vor für ein E-Bike wenn es nur um Manipulationsschutz geht... Was ist denn mit Sachen wie: -Wunschmoment -Drehrichtung (?) -Antrieb Ein/Aus -Max. Moment -Max. Drehzahl -Max. Strom usw., sowie die Antworten des Antriebs: -Ist Strom -Ist Moment -Ist Spannung -Ist Drehzahl -Ist Temperatur Oder wie läuft das bei so einem E-Bike...? Grüße, Alex
Alex B. schrieb: > Und das alles ist nur eine Prüfsumme oder ein Handshake? Das scheint ja wohl ein Device zu sein, das deterministisch auf den gleichen 32-Bit Wert mit der immer gleichen 32-Bit Antwort reagiert ohne ab und zu mal in Rauch aufzugehen oder anderweitig Unfug zu stiften. Geräte mit produktiver Funktion reagieren meist anders. Das klingt folglich nach einer Art Dongle.
:
Bearbeitet durch User
...was es ist steht ja im anderen Forum: Die Challenge/Response am CAN zur Erkennung ob am Pedelec ein Originalakku angeschlossen ist. Wenn nicht der richtige Code am CAN vom Akku zurückgeschickt wird, schalter das System ab :-)
Markus M. schrieb: > Wenn nicht der richtige Code am CAN vom Akku zurückgeschickt wird, > schalter das System ab :-) Eben, und wenn die Antwort Teil eines sha-Hashes ist kannst Du nach dem Algorithmus suchen bis zum Sankt Nimmerleinstag, vor allen Dingen wenn das noch gesaltet sein sollte... https://de.wikipedia.org/wiki/Secure_Hash_Algorithm Da ist den Akku aufmachen und versuchen die Firmware zu reverse engineeren vermutlich noch einfacher.
Tcf K. schrieb: > Da ist den Akku aufmachen und versuchen die Firmware zu reverse > engineeren vermutlich noch einfacher. Oder eine 16GiB µSD - aka 32GB.
Tcf K. schrieb: > Eben, und wenn die Antwort Teil eines sha-Hashes ist kannst Du nach dem > Algorithmus suchen bis zum Sankt Nimmerleinstag, vor allen Dingen wenn > das noch gesaltet sein sollte... Im Prinzip schon, aber das passt so eher gar nicht zu: Rote T. schrieb: > BTW, da ist schon System drin, die Bytes beeinflussen sich über kreuz, > d.h. oberen 2 Bytes haben einfluss auf die unteren 2 Bytes und > andersrum. und einem kurzen Blick auf die Daten, der mich eher eine relativ simples XOR-Shift-Geschwurbel vermuten ließe. Betonung liegt auf kurz.
Das mit der Lookup-Table geht nicht, da wie der TO schrob, nur alle 300ms ein Wert zurückgegeben wird. Alle 4 Milliarden Möglichkeiten abzufragen wird also eine Weile dauern...
:
Bearbeitet durch User
Ich hatte auch mal so ein Problem und habe dann 2 Wochen Vollzeit verbraten, und fand's nicht. Nur so zu den 50 Euro....
Oder D. schrieb: > Ich hatte auch mal so ein Problem und habe dann 2 Wochen Vollzeit > verbraten, und fand's nicht. > Nur so zu den 50 Euro.... Die hättest du aber nicht bekommen, weil du es ja nicht gefunden hast. Wenn er 100000€ ausgelobt hätte, bekämest du die folglich auch nicht. Also ist es doch völlig egal. mfg.
3162534373 .. schrieb: > die Box antwortet nur alle 300ms ;) > Würde also ewig dauern alle Antworten zu bekommen :( Wieso? Es dauert nicht einmal ein Jahr, wenn du dir 41 von diesen Akkus zulegst, die du ja anschließend als fast neuwertig weiterverkaufen kannst. Das ist sicher billiger und zielführender als jahrelang erfolglos zu versuchen, den Algorithmus zu finden. Es sticht zwar sofort ins Auge, dass die Bits 0 und 8 (bzw. 16 und 24) der Anfrage nur die Bits 16 bis 31 (bzw. 0 bis 15) der Antwort beeinflussen. Das ist aber nur ein Honigtopf, den Bosch eingebaut hat, um die Anstrengungen von 1337 h4x0r2 wie dir zu binden und im Nirwana verpuffen zu lassen.
Yalu X. schrieb: > um die Anstrengungen von 1337 h4x0r2 wie dir zu binden und im Nirwana > verpuffen zu lassen.
1 | AB AD 1D EA |
2 | BA DC 0D ED |
Leider kann ich nichts konstruktives beitragen. Dennoch viel Erfolg bei der Suche. Der "Ursprungs-Thread" in diesem "Pedelec-Forum" liest sich auch sehr interessant... Viele Grüße, Alex
Hallo ein nettes aber aufwendiges Objekt für eine Spielmit einem brutforce Angriff. Was sich scheinbar leicht ablesen lässt ist, dass das lowest Bit das Lowerword nicht beeinflust. Aber schon Bit 2 wirbelt alles ducheinander. Es wäre sicher gescheiter die Tabele binär darzustellen und die Funktionalität der Eingangsbits einzeln in der gesamten Tabelle zu prüfen. Erst im 2. Schritt würde ich die Bitkombinationen untersuchen. Intressant wäre auch zu erfahren ob es Ergebnisswerte mit aufälligen Bitmustern gibt oder solche die Symmetrien aufweisen. Oder ob die Abbildung eineindeutig ist sprich jedem möglichen Ergebnis ein genau ein passendes Request zugeordnet werden kann. Namaste
Markus M. schrieb: > Die Challenge/Response am CAN zur Erkennung ob am Pedelec ein > Originalakku angeschlossen ist. K. L. schrieb: > Frag doch Bosch nach der Lösung du Witzbold... Vielen Dank für die Info, welches Pedelec man sich NIEMALS kaufen darf.
Naja, die Bastellösung ist ja, aus einem Originalakku die Elektronik zu nehmen und an einen Selbstbauakku zu verpflanzen. Ich glaube der OT wollte das irgendwie kommerziell nutzen, was jedoch sowieso fragwürdig ist.
Alex B. schrieb: > Und das alles ist nur eine Prüfsumme oder ein Handshake? Das kommt mir > recht viel vor für ein E-Bike wenn es nur um Manipulationsschutz geht... > Was ist denn mit Sachen wie: Hi, wie die anderen schon geschrieben haben ist das die Challenge-Response-Authentifizierung vom Akku. Alle anderen Daten auf dem CAN-Bus sind nicht verschlüsselt und die meisten können per zuschauen zugeordnet werden. Eigene Elektronik bauen um anderen Akkus fahren zu können wäre cool :) Dafür braucht man die Challenge-Response Grüße
Ich hab da mal nen Blick drauf geworfen. Die versuchen da irgendwelche Crypto zu machen. Es gibt Hersteller die sowas recht sicher umsetzen können. Oftmals gehts aber grandios daneben. Je mehr sowas "selbst ausgedacht" wurde, desto eher wurden schwerwiegende Designfehler gemacht. Auf den ersten Blick steckt da schon zuviel Regelmäßigkeit drin: Siehe die ganzen Spielereien mit "letztes Bit kippen, zwei Byte bleiben gleich". Schaut also irgendwo selbstgemacht aus. Warum sollten die es tun? Um irgendwelche Honeypots aufzustellen? Und deshalb Sicherheit / Länge der Response verschenken? Damit wird sowas ja erst interessant... Wenns sicher sein soll, dann würd ich Response = SHA-X(KEY+Challenge) verwenden, mit ausreichend langem KEY und ner SHA Hash Funktion nach Wahl / Möglichkeit. Das wär dann so gut wie unmöglich zu knacken, solange niemand den Code auslesen kann. Sofern die sowas gemacht haben (auf einen Teil der Challenge Bits!), seid ihr da recht chancenlos. (Wobei sie da schon mehr als 32 bit hätten spendieren dürfen...) Irgendwo hab ich gelesen: Maximal eine Antwort pro 300 ms? Was passiert denn, wenn direkt danach die Spannung unterbrochen wird oder der Mikrocontroller einen Reset bekommt. Gehts dann doch schneller? Grundsätzlich würd ichs weiterhin probieren. Die folgenden Schritte können sinnvoll sein: - Macht BEIDE GERÄTE mal auf, welcher Mikrocontroller wird verwendet? - Lässt sich einer der beiden Controller auslesen? - Oder haben sie sogar externen Flashspeicher? => Ablöten und auswerten! - Wie lange braucht das Challenge-Response Verfahren? - Ändert sich die Ausführungszeit mit den Daten? - Gibts Korrelationen zwischen Challenge und Response Bits? - Wurden bereits Kollisionen gefunden? - Sind die Response Werte gleichverteilt? - Stromaufnahme des Chips auswerten: Lassen sich so etwas wie "Runden" erkennen? - Was unterstützt die Hardware des Controllers an Cryptofunktionen? Oft ist ein AES Hardwaremodul dabei (das könnte auch für sowas benutzt werden) - Unterstützt die Firmware im Controller sonst noch was? Da könntet ihr mal per Fuzzing probieren, Programmierfehler zu finden. Evtl. lässt sich da ja was ausnutzen... Das sollten ein paar Anregungen sein, da würde zumindest ich weitermachen. Evtl. wird ja mal wieder was geknackt, beim Meteotime Chip hats damals hier ja auch geklappt ;-)
Hi, die Spannungsversorgung ist der Akku selbst. Das Ein- und Ausschalten dauert noch länger als 300ms. Prozessor ist ein STM8AF51A9. Also simpler 8 Bit ohne Hardwarecrypto. (Im Motor und im Akku) Flash und EEprom intern, nicht auslesbar weil durch Fuses gesperrt. Antwortzeit ist immer 319ms. Grüße
:
Bearbeitet durch User
3162534373 .. schrieb: > Antwortzeit ist immer 319ms. Stromaufnahme in dieser Zeit genau messen (Scope), ob der da wirklich rödelt oder ob das nur eine Brute-Force-Sperre ist.
Also ich glaube durch "Scharfes Hinsehen" wird das wohl nichts. Kann der Code ausgelesen und disassembliert werden? Oder verhindert das auch die Fuses?
Johannes O. schrieb: > Irgendwo hab ich gelesen: Maximal eine Antwort pro 300 ms? Was passiert > denn, wenn direkt danach die Spannung unterbrochen wird oder der > Mikrocontroller einen Reset bekommt. Gehts dann doch schneller? Überleg doch: * µC schickt Challenge * Akku läßt sich 300 ms Zeit, bis er die Antwort schickt Wenn du da zwischendrin den Strom abstellst, gehts höchstens länger... Aber ihr könnt ja mal versuchen, mit der Hälfte der bekannten Daten ein neuraonales Netz zu trainieren und dann zu testen, ob es die andere Hälfte der Daten richtig errät...
:
Bearbeitet durch User
> Evtl. wird ja mal wieder was geknackt, beim Meteotime Chip > hats damals hier ja auch geklappt ;-) Ui ja, das wäre wieder eine Aufgabe für die damalige Runde, ich wäre dabei! Bei 300ms geht das ja viel schneller als damals (30 s). Schaut euch mal das Video vom CCC an, wo sie den angeblich sicheren Code des Microchip-Keeloq (Hopping-Code für Funkschlüssel (Auto, Garage etc.)) geknackt haben. Oder die Crypto-iButtons von Dallas. Das ist nur eine Frage der Zeit - irgend eine Schwachstelle ist drin. 32 Bits is ja heute kein Problem mehr. Mal sehen, ob es beim freundlichen Chinesen nicht ein paar solcher Chips gibt. Zuerst gilt es, eine ordentliche Datenbank mit ein paar Tausend Sätzen zu schaffen. Dann Stromverbrauch analysieren. Schauen, ob man die 300ms drücken kann. Packen wir's an!
Im Pedelec Forum war etwas ASM-Code gepostet? Konnte der STM ausgelesen werden? Wenn ja, wer hat den?
bekommt man es auch ohne den asm-Code hin? Zitat aus dem Pedelecforum: "Uiuiuiui, jetzt wirds warm, schaut euch mal diese seed/key Kombinationen an. Die Differenz im key ist dabei immer 3. Die Darstellung ist hex seed1 key1 hex seed1 key1+3 bin seed1 key1 bin seed1 key1+3 diff = 3 0xFFBB0015 0x330DB5DB 0xFFBA0015 0x330DB5DE 0b11111111101110110000000000010101 0b00110011000011011011010111011011 0b11111111101110100000000000010101 0b00110011000011011011010111011110 ------------ 0xFFBB0014 0x49A6B5DB 0xFFBA0014 0x49A6B5DE 0b11111111101110110000000000010100 0b01001001101001101011010111011011 0b11111111101110100000000000010100 0b01001001101001101011010111011110 ------------ 0x05BC0000 0x83D9F374 0x04BC0000 0x83D9F377 0b00000101101111000000000000000000 0b10000011110110011111001101110100 0b00000100101111000000000000000000 0b10000011110110011111001101110111 ------------ 0xFFC300F5 0xBDCF4EE8 0xFFC200F5 0xBDCF4EEB 0b11111111110000110000000011110101 0b10111101110011110100111011101000 0b11111111110000100000000011110101 0b10111101110011110100111011101011 ------------ 0xFFC300F4 0xED884EE8 0xFFC200F4 0xED884EEB 0b11111111110000110000000011110100 0b11101101100010000100111011101000 0b11111111110000100000000011110100 0b11101101100010000100111011101011 "
3162534373 .. schrieb: > bekommt man es auch ohne den asm-Code hin? DIe Methode des scharfen Hinsehen klappt bei mir nicht. Ist der ASM-COde verhanden?
hm... wohl nicht genug Autisten hier. Mit dem Quellcode könnte ich es ja selbst rausfinden :D
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.