Was zum knobeln, Algorithmus finden

#4273719
Lesenswert?

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
Angehängte Dateien:
Persönliche Seite #4273898
Lesenswert?

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 :)
#4273906
Lesenswert?

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.
#4273918
Lesenswert?

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.
#4273922
Lesenswert?

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
#4273931
Lesenswert?

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
(Firma: Ucore Fotografie www.ucore.de) Persönliche Seite #4273938
Lesenswert?

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
#4273976
Lesenswert?

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.
#4274030
Lesenswert?

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.
#4274054
Lesenswert?

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.
Moderator #4274141
Lesenswert?

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.
(Firma: Ucore Fotografie www.ucore.de) Persönliche Seite #4274154
Lesenswert?

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
(Firma: Nisch-Aufzüge) Persönliche Seite #4274282
Lesenswert?

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
#4274675
Lesenswert?

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
#4274836
Lesenswert?

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 ;-)
#4274979
Lesenswert?

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...
#4275130
Lesenswert?

> 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!
#4277631
Lesenswert?

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

"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren