Forum: PC-Programmierung Hashwert unterliegende Cryptofunktion herausfinden


von Flip B. (frickelfreak)


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?

von Harald K. (kirnbichler)


Lesenswert?

Probiere mal sinnvollere Passwörter als "schliessanlage" und 
"schliessanlage2"

Der Block ab 7e0 ist bei beiden identisch.

von Oliver (imonbln)


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.

von Flip B. (frickelfreak)


Lesenswert?

Ich gehe auch davon aus, dass nur 64 bit passwortabhängiger key sind. 
Wie geht man da ran? Eventuell ist es einfacher, die PC software zu 
reversen, die das Passwort verarbeitet?

von Christian E. (cerker)


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

: Bearbeitet durch User
von Flip B. (frickelfreak)


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).

von Dieter S. (ds1)


Lesenswert?

Das hier kennst Du?

https://dontvacuum.me/papers/ACMCCS-2013/Security-Analysis-of-a-Widely-Deployed-Locking-System.pdf

Es geht dort um  SimonsVoss G1, für G2 gibt es ebenfalls ein Paper.

von Flip B. (frickelfreak)


Angehängte Dateien:

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.

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
Noch kein Account? Hier anmelden.