Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#8

Re: Text mit unbekannter Codierung entschlüsseln.

  Alt 19. Jul 2007, 17:39
Hi

hast Glück bzw. Pech

Code:
123456789012345678     -> EAAEeVFYUFFiSUR fU1VFVhsEMTAC
1234567890123456789    -> EAAEeVFYUFFiSUR cUVBBUR0NGDE5Ag==
12345678901234567890   -> EAAEeVFYUFFiSUR cUVBBUR0NGAI yMAI=
1234567890123456789012 -> EAAEeVFYUFFiSUR cUVBBUR0NGAI GfzIyAg==
Hinter der Base64 Codierung muß eine Veschlüsselung stecken, sie hat folgende Eigenschaften

1.) es ist eine Blockverschlüsselung, das erkennt man oben bei den Leerzeichen die ich eingefügt habe. Blockverschlüsselungen sind im allgemeinen sicherer als Stromverschlüsselungen. Pech gehabt.

2.) die Blockgröße dieser Verschlüsselung dürfte 8 oder 16 Bytes sein, eher 16 Bytes. Peck gehabt, lässt sich nicht so leicht knacken.

3.) es wurde immer ein festes Passwort benutzt, Glück gehabt. Normalerweise würde man das Passwort mit Zufall in einen Sessionkey umwandlen. Das führt zu einer Vergrößerung der Datenmenge und zu dem Fakt das die gleichen String immer andere Resultate liefern. Also Glück gehabt, der Programmier des Algos. hat geschlampt.

4.) normalerweise würde man die Nachricht vor dem Verschlüseln mit Zufall am Anfang expandieren. Dann verschl. man beides in einem Rutsch. Auch hier würde die Datengröße ansteigen und der Output jedesmal anders sein. Glück gehabt das ist hier nicht der Fall

5.) der 1. String verhält sich merkwürdig

7.) sollten die Daten nicht ein Mehrfaches der Blockgröße sein, sprich zb. 9 statt 8 Bytes oder 17 statt 16, so benutzt der Algo. ein Padding -> Cipher Text Stealing um den letzten unvollständigen Block zu verschlüsseln. Das erkennt man am den Daten wenn man sie nach binär umwandelt an Hand des letzten Datenblockes. Er unterscheidet sich komplett zu den anderen Strings, statt wie bei den vorherigen Datenblöcken identisch zu sein.

6.) versuche nun mal das zu verschlüsseln

Code:

12345678
11111111
22222222

123456781
111111111
222222221

1234567812345678
1111111111111111
2222222222222222

12345678123456781
11111111111111111
22222222222222222

12345678123456781234567812345678
11111111111111111111111111111111
22222222222222222222222222222222
11111111111111112222222222222222
22222222222222221111111111111111
An hand deren Outputs können wir die reale Blockgröße herausfinden.
Die Strings mit gleichen Zeichen sollten in jedem Datenblock unterschiedliche Werte ergeben. Also zb. 11111111 sollte vereschl. binär für die 1. Eins ein anderes Byte liefern als für die 2. Eins.
Mit den Strings 11111111111111112222222222222222 und 22222222222222221111111111111111 testen wir bei einem Blockcipher mit 16 Bytes Blockgröße ob die Blöcke untereinander verknüpft sind. Sollte das der Fall sein so würden die 2'er Zahlen in den Blöcken durch unterschiedliche Bytes codiert sein. Sollte das nicht der Fall sein, Glück gehabt, wir haben es fast geknackt. Denn dann würde der erste Block mit Einsen identisch mit dem 2. Block von Einsen aus dem 2. String sein. Der Programmierer hat mist gebaut.
Denn dann brauchst du nur alle 16 Zeichnen Strings die du benutzen möchtest mit der Software einmal verschlüsseln, daraus deine Strings zusammenbauen und in der INI speichern, ohne den Algo. noch das Passwort zu kennen.

Gruß Hagen
  Mit Zitat antworten Zitat