Hashwert unterliegende Cryptofunktion herausfinden

OP #7588802
Lesenswert?

Hallo, ich habe das Problem, die Speicherinhalte eines EEprom richtig zu Interpretieren. Ich habe ein habe ein System, dort kann ich Geräte beliebig Programmieren, Jedes Gerät speichert seine Nummer, die Systemnummer und das Systempasswort in einem 24C16 EEPROM. Ich konnte schon die Speicherstellen ausfindig machen, jedoch komme ich nicht hinter den Algorithmus, wie die Daten abgelegt werden. Sicher nicht ohne Verschlüsselung, denn es ist ein (älteres) Sicherheitsprodukt. Es sind nur 32/64 bit, darum hoffe ich dass das Hashverfahren heutzutage brechbar ist.

ich habe mal einige kombinationen von Bekannten werten und Hashwert:

EEPROM Leer |PW Zurückgesetzt| GID 0 | Systemnummer 0:

1
0000:0780 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | 
2
0000:07D0 | 00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00 | 
3
0000:07E0 | 7D 59 B7 6A  05 9A 06 2E  4B 55 F9 E2  3C 03 05 C0 |
4
0000:07F0 | 22 33 35 55  53 E4 B2 1D  09 00 7C 06  00 00 00 00 |

Systemnummer: 4770 | Passwort: schliessanlage | GID 2:

1
0000:0780 | 00 00 00 00  00 00 00 00  00 05 4B 44  00 00 00 00 | 
2
0000:07D0 | 00 00 00 00  00 00 00 00  18 11 0F 30  09 88 6A 9F | 
3
0000:07E0 | 2B F5 B2 C9  A3 7D 59 B7  05 9A 06 2E  B8 4B 55 F9 | 
4
0000:07F0 | 3C 03 05 C0  0F 22 33 35  09 00 7C 06  00 00 00 00 |

Systemnummer: 4213 | Passwort: schliessanlage2 | GID 1:

1
0000:0780 | 00 00 00 00  00 00 00 00  00 03 41 EB  00 00 00 00 | 
2
0000:07D0 | 00 00 00 00  00 00 00 00  41 53 84 88  0F CF DB 2B | 
3
0000:07E0 | 2B F5 B2 C9  A3 7D 59 B7  05 9A 06 2E  B8 4B 55 F9 | 
4
0000:07F0 | 3C 03 05 C0  0F 22 33 35  09 00 7C 06  00 00 00 00 |

Systemnummer: 4213 | Passwort: schliessanlage2 | GID 2:

1
0000:0780 | 00 00 00 00  00 00 00 00  00 05 41 EB  00 00 00 00 | 
2
0000:07D0 | 00 00 00 00  00 00 00 00  41 53 84 88  0F CF DB 2B | 
3
0000:07E0 | 2B F5 B2 C9  A3 7D 59 B7  05 9A 06 2E  B8 4B 55 F9 | 
4
0000:07F0 | 3C 03 05 C0  0F 22 33 35  09 00 7C 06  00 00 00 00 |

0x0789 ist offensichtlich die GID, 0x078A hat was mit der Sys-nr zu tun. Ab 0x7E8 steht das Passwort, wie bekomme ich dessen Hashfunktion/Encoding heraus?

#7588871
Lesenswert?

Wie mein Vorredner schon bemerkt hat, der Block ist ab 07E0 identisch. Sehr unwahrscheinlich, dass hier das Passwort gespeichert ist. Das würde nämlich bedeuten das, dein Produkt das Ende des Passworts einfach abscheidet, ich empfehle das erstmal zu verifizieren, ob die Passwörter abgeschnitten werden und wenn ja bei welchen Zeichen.

Abgesehen davon ist die allgemeine Erwartung an Hashfunktionen, dass kleine Änderungen im Input zu komplett anderen Hashwerten führen, auch das lässt mich zweifeln, dass dieser Speicher das Passwort beinhaltet.

#7588895
Lesenswert?

Da ist noch mehr identisch .. wenn man die 32bit Blockung wegnimmt:

Oben ohne Passwort, unten mit irgendeinem.

1
xx xx xx xx xx 7D 59 B7 6A 05 9A 06 2E xx 4B 55 F9 E2 3C 03 05 C0 xx 22 33 35 55 53 E4 B2 1D 09 00 7C 06 
2

3
2B F5 B2 C9 A3 7D 59 B7 xx 05 9A 06 2E B8 4B 55 F9 xx 3C 03 05 C0 0F 22 33 35 xx xx xx xx xx 09 00 7C 06
OP #7589881
Lesenswert?

Hallo zusammen, ich habe es geschafft, die dinger zu zerbrechen. Habe zwischenzeitlich den Datenverkehr auf der funkstrecke und auf dem I2C bus zum Eeprom analysiert, in den momenten wo ein Schloss Programmiert oder Gelöscht wird. Habe dann die Kommunikation zwischen programmiergerät und PC abgehört und verstanden: Den Hashalgorithmus muss ich garnicht verstehen. Der Key wird plain über UART im Löschkommando an den Funkadapter übertragen. Ich grüble noch ein bisschen, wie das Protokoll funktioniert, was seitenweise den EEprom im Gerät löscht. Aber Autorisieren gegenüber den Fremden schlössern klappt schonmal mittels des aus dem EEprom von einem Schloss ausgelesenen Keys (die ganze Technik ist übrigens SimonsVoss G1 und schon etwas in die Jahre gekommen).

OP #7590561
Lesenswert?

Dieter S. schrieb:

Das hier kennst Du?

Danke, das sind die Paper die ich die letzten Wochen gelesen habe. Daher wusste ich erst, dass die ganze Anlage einen einzigen gemeinsamen Key hat, und die berechtigungen nur auf der Schlüssel-ID beruhen. Hätte jedes Schloss einen Individuellen Key, hätte mir alles nichts gebracht. Offenbar haben die Authoren alles inkl. der PIC-Firmware reversed, aber halten sich etwas bedeckt mit inhaltlichen Details zum Protokoll.

Ich habe mir die wichtigsten Kommandos zusammengescriptet, zwar ohne checks und Fehlerbehandlung, aber für die einmalige Massenabfertigung beim zurücksetzen der Geräte ist es ganz praktisch. Es wird lediglich die ID ausgelesen, in ein Löschkommando mit dem Key (Eeprom 0x7E8) gebaut und eine Prüfsumme generiert.

Die weiteren Daten im EEprom konnte ich mittlerweile auch interpretieren. (Schließplan, öffnungsprotokoll, Feiertagsliste und Zeitzonenvektor) Ich habe nun geöffnete Schlösser aus denen ich die Eeproms gelesen habe. Die kann man zwar wieder verpressen, sind dann aber nicht mehr hübsch. Stattdessen versuche ich, den I2C EEprom zu emulieren oder sniffen, um die ID des Transponders zu bekommen, der gerade Drangehalten wird. Z.b. um dann das Hoftor zu öffnen oder ähnliche sachen in der Hausautomatisierung auszulösen. Vom hersteller gibt es das als SmartRelais, allerdings nicht so günstig, dass man sich mal 10 davon anschaffen und in die hütte hängen möchte.

Falls jemand hier mitgedacht hat und an einem der Schlösser zum spielen interessiert ist, dem kann ich eins zusenden. Jedoch ist es ohne Programmiergerät eher ein Briefbeschwerer.

Angehängte Dateien:

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