Autor Beitrag
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Fr 25.07.03 16:28 
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 (XorDeCoder) 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

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!


Zuletzt bearbeitet von Motzi am Do 27.05.04 20:43, insgesamt 2-mal bearbeitet
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: So 27.07.03 11:29 
Ich find das Programmpacket super! Ist irgendwie cool, wie sich langsam aus einem Zeichenhaufen ein anständiges Satzgebilde entsteht.
Doch würde ich noch ein paar Kleinigkeiten verbessern (was ich ja auch eignentlich selber machen könnte :wink:):
-Die einzelnen Zeichen des Passworts sollte auch per Mausklick angesteuert werden können, da es mit der Scrollbar doch manchmal richtig nervt
-bei der ASCII-Zeichentablle muss ich immer zuerst auf den "Find Char"-Button klicken, damit was passiert. Ein einfacher Enter-Anschlag oder sogar völlig automatisch mittels des OnChange-Events wär vielleicht eine gute Idee. Außerdem sollte das Fenster nicht automatisch geschlossen werden, wenn man wieder auf die Mainform klickt.

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: So 27.07.03 14:18 
Ok, hab jetzt ein paar kleine Änderungen vorgenommen:

- die ASCII-Tabelle ist nun ein Always-On-Top Toolwindow (schließt sich also nicht mehr automatisch)

- die suche in der ASCII-Tabelle wird nun schon im OnChange ausgelöst

- die einzelnen Passwort-Zeichen können nun auch per Mausklick ausgewählt werden (aber nur in der Hex-Darstellung)

Neue Version ist online...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
GuenterS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23


D7 Pers
BeitragVerfasst: So 18.01.04 22:07 
die links funktionieren bei mir aber leider nicht wirklich...
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 19.01.04 10:58 
Hm.. komisch.. bei mir schon.. die Domain macht leider bei machen Leuten immer wieder Probleme, der Server läuft aber..!

Probier mal als alternative statt www.x-spy.net motzi.fs-tools.de das hat bis jetzt eigentlich bei allen noch funktioniert...

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
GuenterS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 23


D7 Pers
BeitragVerfasst: Mo 19.01.04 19:57 
Ok diese addi ( motzi.fs-tools.de ) funktioniert auch bei mir, aber es war beim Beitrag nicht ersichtlich wieso ich diese probieren sollte....
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Di 20.01.04 10:09 
Ja.. früher hat die Domain www.x-spy.net problemlos funktioniert, aber seit einiger Zeit gibt es anscheinend immer wieder Probleme mit einem DNS-Server/Eintrag, zumindest kann ich es mir sonst nicht anders erklären, warum die Domain bei mir und anderen problemlos funktioniert und bei einigen anderen wiederum gar nicht... :?

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: So 14.03.04 14:15 
irgendwie funktioniert das beim mit nicht so richtig.
ich hab mal die verschlüsselungsroutine genommen, die du auf deinem tutrial venutzt hast. aber dein decoder bekommt nicht den richtigen code raus.
die schlüssellänge ist zwar korrekt aber das encodieren funktioniert nicht.
mit welchem program hast du das den gemacht?

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: So 14.03.04 14:21 
Der DecodeEditor knackt den Schlüssel auch nicht automatisch..! Das musst schon du erledigen und zwar so wie oben beschrieben steht..! Die Berechnung der Schlüssellänge hilft dir nur dabei.. aber um die eigentliche Entschlüsselung musst du dich schon selbst kümmern..!

Was meinst du mit "mit welchem Programm hast du das gemacht"..? :?

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: So 14.03.04 18:56 
ich meine welchem programm(source) du die XOR dateien erstellt hast

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: So 14.03.04 19:05 
Achso... hab mir dazu ein Prog mit einer normalen simplen XOR-Verschlüsselung geschrieben. Einfach eine Form mit einem Memo (für den Text), einem Edit (für das Passwort), einem SaveDialog und einen Button in dessen OnClick folgender Code kommt:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
procedure TForm1.Button1Click(Sender: TObject);
var
  aStream: TFileStream;
  pData: Pointer;
  i, dwSize: DWord;
  PasswordPos: Integer;
begin
  if SaveDialog1.Execute then
  begin
    aStream := TFileStream.Create(SaveDialog1.FileName, fmCreate);
    dwSize := Length(Memo1.Text);
    pData := GetMemory(dwSize);
    try
      CopyMemory(pData, PChar(Memo1.Text), dwSize);

      PasswordPos := 1;
      for i := 0 to dwSize do
      begin
        if PasswordPos > Length(Edit1.Text) then
          PasswordPos := 1;

        PByte(DWord(pData) + i)^ := PByte(DWord(pData) + i)^ xor Ord(Edit1.Text[PasswordPos]);

        Inc(PasswordPos);
      end;

      aStream.Write(pData^, dwSize);
    finally
      FreeMemory(pData);
      aStream.Free;
    end;
  end;
end;

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: So 14.03.04 19:21 
THX
jetzt hab ich's raus 8)

_________________
Patrick
im zweifelsfall immer das richtige tun!!!
F.Art
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 434



BeitragVerfasst: Mo 24.05.04 10:42 
Wie lautet der Code um es wieder zu entschlüsseln?
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Mo 24.05.04 10:46 
Was entschlüsseln..? :?

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!
O'rallY
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: Do 27.05.04 17:57 
Download von motzi.fs-tools.de/pe...xor/DecodeEditor.zip funktioniert bei mir auch nicht.
Dieser allerdings schon: www.manuel-poeter.de...ensource/Decoder.zip

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
Motzi Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: Do 27.05.04 20:39 
Hoppla.. ich hab die links nicht zu meiner neuen Homepage geändert.. :oops: Danke für den Hinweis! :)

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!