Hi,
wie in diesem Thread -
www.delphi-forum.de/viewtopic.php?t=13611 - versprochen hier die Programme.
Zuerst allerdings noch eine kleine Anmerkung:
ich hab inzwischen eine, möglicherweise nicht ganz ungerechtfertigte, Kritik dafür bekommen, dass ich hier derartige Tutorials und Programme veröffentliche. Ich weiß, das hier vermittelte Wissen und der Code könnten möglicherweise für illegale Zwecke mißbraucht werden. Aber die Absicht hinter diesem Tutorial und dem hier veröffentlichten Code-Material ist die, klarzumachen, dass simple XOR-Verschlüsselungen unsicher sind! Ich will jetzt keinem Anfänger ausreden ein kleines Programm für eine XOR-Verschlüsselung zu schreiben, denn es ist auf jeden Fall etwas wobei man viel lernt, aber ich möchte niemanden in der Illusion lassen, dass er damit eine unknackbare Verschlüsselung geschaffen hat! Und wenn das allen klar ist, dann kann dieses Wissen auch nicht mehr auf illegale Weiße missbraucht werden, denn dann sollte jeder soweit sein zu wissen, dass eine simple XOR-Verschlüsselung in einer sicherheitsrelevanten Software nichts zu suchen hat!
Falls es dennoch andere Personen gibt die Kritik an dieser Veröffentlichung hegen wollen bitte um PMs oder Mails!
Die Programme
Ich weiß, dass der Code nicht unbedingt immer sauber und professionell ist. Die Programme waren eigentlich nur für private Zwecke und sind eigentlich nur als mittel zum Zweck der Demonstration der Unsicherheit der simplen XOR-Verschlüsselung (siehe dieser Thread:
www.delphi-forum.de/viewtopic.php?t=10610) entstanden... Aus diesem Grund war ich auch mit den Kommentaren äußerst sparsam. Ich hoffe trotzdem, dass ihr mit den Programmen und dem Code klarkommt. Bei Kritik, Fragen, Anregungen etc einfach melden (hier im Forum, PM, Mail, ICQ, ...)!
Decoder
Der Decoder ist das Programm das den Chiffre-Text analysiert und anhand der Koinzidenzerfassung die wahrscheinliche Schlüssellänge berechnet. Sobald die Analyse abgeschlossen ist sieht man 2 Panels - auf dem ersten sind allgemeine Informationen über die Datei, auf dem 2ten sind alle Informationen die relativ zur Schlüssellänge sind. Man kann die Schlüssellänge auch manuell ändern (wenn man der Meinung ist die Analyse hätte sich "getäuscht"), in diesem Fall werden die Informationen entsprechend angepasst.
Glaubt man die richtige Schlüssellänge gefunden zu haben kann man über einen Klick auf "Save" das ganze als .xdc-Datei (
Xor
De
Coder) speichern die man dann im DecoderEditor bearbeiten kann.
An dieser Stelle noch eine kleine Anmerkung um Missverständnise zu vermeiden: die Daten müssen im "Roh-Format", also in normalen Bytes vorliegen und nicht im Hex-Format formatiert! Also zB das Byte mit dem Wert 0E und nicht der Text 0E!
Nachdem es damit anscheinend Probleme gibt hier noch ein kleines Programm, das in Hex-Code formatierten Chiffre-Text in normalen Chiffre-Text übersetzt. Der als Hex-Code formatierte Chiffre-Text muss dazu in normalem Textformat ohne Zeilenumbrüche(!) vorliegen. [url=
www.x-spy.net/person...r.zip]download[/url]
Screenshot:
Decoder
Download:
Decoder.zip (~221kb)
DecodeEditor
Dieses Programm "überfallt" die meisten Benutzer wahrscheinlich mit einer sehr seltsamen Programmoberfläche. Ich werde jetzt mal versuchen diese halbwegs zu erklären. Am besten man öffnet man dazu mal eine .xdc-Datei, dann ist alles ein bisschen besser ersichtlich.
Ganz oben steht das Passwort - links in Hex-Form, rechts in normaler ANSI-Darstellung (anfangs besteht das Passwort nur aus Nullzeichen). Mit der Scrollbar darunter kann man die einzelnen Zeichen des Passwortes "durchscrollen". Die Position steht immer links unter der Scrollbar und das gerade "aktive" Zeichen des Passworts wird immer
fett dargestellt.
Unterhalb der Scrollbar befinden sich noch ein Edit-Feld und 3 Buttons. Im Edit-Feld steht immer der Hex-Wert des aktuellen Passwort-Zeichens. Man kann nun das Passwort "bearbeiten" indem man den Hex-Wert des neuen Passwort-Zeichens eingibt und auf "Change" klickt. Ein klick auf "Delete" setzt das aktive Zeichen wieder auf den Wert $00 zurück. Der Button "Bruteforce Char" testet einfach alle Zeichen des Chiffre-Text an den entsprechenden Positionen durch und listet jene Zeichen auf, die möglich wären (die also "sinnvolle" Zeichen ergeben würden).
Der obere der beiden Hex-Editoren enthält den "decodierten" Chiffre-Text, also den original Chiffre-Text XOR-verknüpft mit dem verschobenen Chiffre-Text (das Ergebnis der Koinzidenzerfassung). Alle Zeichen mit dem Hex-Wert $00 werden dabei extra hervorgehoben.
Der untere Hex-Editor enthält (sofern noch kein Passwort angegeben wurde) den original Chiffre-Text.
Sobald ein Zeichen des Passworts geändert wird, ändert sich auch der untere Hex-Editor, denn der Stream mit dem Chiffre-Text wird mit dem aktuellen Passwort XOR-verknüpft und dann erneut in den Editor geladen. Jene Zeichen, die dabei mit einem Wert <> $00 verknüpft wurden werden dabei extra hervorgehoben, damit man besser erkennen kann welcher Teil nun bereits in Klartext und welcher noch in Chiffre-Text vorliegt. Steuerzeichen oder "seltsame" (unerwartete) Zeichen werden dabei rot hervorgehoben.
Auf der rechten Seite befinden sich einige Buttons und Edits. Die Buttons "Open" und "Save" sollten hoffentlich selbsterklärend sein (beziehen sich auf die .xdc-Datei!). Der Button "Save Decryption" speichert nur den entschlüsselten Chiffre-Text. Durch klick auf "ASCII-Tabelle" öffnet sich ein Fenster mit allen Zeichen und den entsprechenden Hex-Werten (-> eine Gedächtnisstütze für alle die die ASCII-Tabelle nicht auswendig können
).
Die Edits beziehen sich alle auf Chiffre-Text, Klartext oder Passwort. Im obersten Edit wird, je nachdem wo man sich im Hex-Editor befindet, der Wert des aktuellen Zeichens des Chiffre-Text eingetragen. In den unteren 2 Edits kann man nun eintragen um welches Klartext-Zeichen es sich handeln soll (linkes Edit - Hex-Wert, rechts Edit - normales Zeichen) und aus den Werten für Chiffre-Text-Zeichen und Klartext-Zeichen wird nun das Zeichen für das Passwort an der jeweiligen Position berechnet welches man per klick auf "Change" auch gleich ins Passwort "einsetzen" kann.
Die Listbox ganz unten enthält Hinweise und Warnungen, die einem die ganze Sache erleichtern sollen. Ändert man nun ein Zeichen des Passwortes, so wird der Chiffre-Text mit dem neuen Passwort verschlüsselt. Sollten dabei im entschlüsselten Text Steuerzeichen oder andere seltsame Zeichen (die sonst nicht in einem deutschen Text auftauchen) vorkommen, so wird in dieser Listbox eine Warnung angezeigt (ähnlich dem Delphi-Compiler):
DecodeEditor hat folgendes geschrieben: |
Warning: Position: 17 Unexpected Char: $03 |
Außerdem werden Hinweise angezeigt, die die Sache auch noch erleichtern. Taucht im entschlüsselten Text zB ein Zeichen mit dem Wert $0D auf, so ist es sehr wahrscheinlich, dass das nächste Zeichen den Wert $0A hat (die Kombination $0D $0A stellt einen Zeilenumbruch dar)! Weitere wahrscheinliche Zeichen sind Leerzeichen nach Satzzeichen wie .,!? etc. Auch hier wird ein Hinweis angegeben:
DecodeEditor hat folgendes geschrieben: |
Note: Position: 23 Possible Char: $20' |
Durch einen Doppelklick auf einen Eintrag (egal ob Warnung oder Hinweis) spring das Programm sofort an die entsprechende Stelle im Hex-Editor.
Hinweis: dieses Programm verwendet eine leicht modifizierte Version (hab ein "halbfertiges" OwnerDraw-Event hinzugefügt) des TMPHexEditor von Markus Stephany (ich hab die entsprechenden Stellen leider nicht entsprechend kommentiert)! Das original findet ihr auf
www.mirkes.de
Screenshot:
DecodeEditor
Donwload:
DecodeEditor.zip (~410kb)
Edit: Links korrigiert