Entwickler-Ecke
Delphi Tutorials - XOR-Verschlüsselungen knacken
Motzi - Mo 07.07.03 16:08
Titel: XOR-Verschlüsselungen knacken
Hallo allesamt!
Da immer wieder das Stichwort "XOR-Verschlüsselung" fällt und O'rallY mich gebeten hat ob ich nicht vielleicht meine zwei in
diesem Thread [
http://www.delphi-forum.de/viewtopic.php?t=10610] beschriebenen Programme mit Source veröffentlichen kann (was ich innerhalb der nächsten Tage tun werde) dachte ich mir nur die Progs ohne kurze Erklärung bringen nicht viel, außerdem soll ein für alle mal unmissverständlich klargestellt werden, dass simple XOR-Verschlüsselungen (mit ein paar Ausnahmen) definitiv
nicht sicher sind.
WICHTIG: dieses Tutorial soll nicht zu illegalen Handlungen auffordern! Es ist lediglich für Lern- bzw. Übungszwecke und als Beweis der Unsicherheit von simplen XOR-Verschlüsselungen gedacht!
Nachfolgender Text bezieht sich (der Einfachheit halber) speziell auf das knacken normaler deutscher Texte, man kann das Prinzip jedoch auch sehr leicht auf Texte umlegen die in andren Sprachen abgefasst wurden. Für andere Dateien als simple Texte muss man die Sache ein bisschen anders angehen, aber auf das werde ich hier nicht weiter eingehen...
Ich werde der Vollständigkeit halber zwar immer wieder ein paar kleine Codestücke einbauen, aber generell bezieht sich der Text eher auf die 2 Programme die ich in nächster Zeit noch veröffentlichen werde (Links folgen sobald die Progs veröffentlicht sind).
Eine simple XOR-Verschlüsselung:
Eine simple XOR-Verschlüsselung macht nichts anderes, als die Zeichen eines Passwortes den Zeichen der zu verschlüsselnden Daten (dem Klartext) per XOR zu vernknüpfen - daraus resultiert dann der sogenannte Chiffre-Text. Ein Beispiel für eine simple XOR-Verschlüsselung:
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:
| procedure EncodeStream(aSource, aTarget: TStream; const sKey: String); const MAX_COUNT = 10240; var szBuffer: array [1..MAX_COUNT] of Byte; i: Integer; iKeyPos: Integer; iReadCount: Integer; begin aSource.Seek(0, soFromBeginning); aTarget.Size := aSource.Size; aTarget.Seek(0, soFromBeginning);
iKeyPos := 1; while aSource.Position < aSource.Size do begin iReadCount := aSource.Read(szBuffer, MAX_COUNT); for i := 1 to iReadCount do begin if iKeyPos > Length(sKey) then iKeyPos := 1; szBuffer[i] := szBuffer[i] xor Ord(sKey[iKeyPos]); Inc(iKeyPos); end;
aTarget.Write(szBuffer, iReadCount); end; end; |
Der Parameter aSource gibt einen Stream mit dem Klartext an, und aTarget stellt einen Stream dar, in dem die Prozedur den Chiffre-Text ablegt.
Wie kann man einen solchen Chiffre-Text nun knacken?
Die Koinzidenzerfassung
Die Koinzidenzerfassung basiert auf einem einfachen Prinzip - man "shiftet" (verschiebt) den Chiffre-Text um eine bestimmte Anzahl an Bytes und vergleicht dann den verschobenen Chiffre-Text mit dem original Chiffre-Text und zählt wieviele Bytes übereinstimmen. Wurde der Chiffre-Text um ein Vielfaches der Schlüssellänge verschoben, so liegt die Anzahl der übereinstimmenden Bytes bei etwas über 6%, andernfalls sind es weniger als 0.4%. Das lässt sich recht einfach erklären:
Da der Schlüssel i.A. kürzer ist als der Text (andernfalls würde es sich um ein OneTimePad handeln, welches unter bestimmten Vorraussetzungen 100% sicher ist, also nicht geknackt werden kann) wiederholt sich der Schlüssel periodisch. Beträgt die Verschiebung nun ein Vielfaches der Schlüssellänge, so sind die Bytes des verschobenen Chiffre-Textes und die Bytes des original Chiffre-Textes an denselben Stellen mit denselben Zeichen des Schlüssels XOR-verknüpft worden. Aufgrund der unterschiedlichen Auftrittswahrscheinlichkeit einzelner Zeichen in einem einfachen Text (zB. Leerzeichen oder das im Deutschen sehr häufig verwendete "e") besteht eine doch sehr hohe Chance, dass der verschobene Chiffre-Text und der original Chiffre-Text dasselbe Zeichen an derselben Stelle haben. Beträgt die Verschiebung nun ein Vielfaches der Schlüssellänge (sind also beide Zeichen mit demselben Schlüssel-Zeichen verschlüsselt worden), dann haben wir eine Übereinstimmung gefunden.
Die kleinste Verschiebung, die ein Vielfaches der Schlüssellänge ergibt, ist dann die gesuchte Länge des Schlüssels.
Wenn man nun die Schlüssellänge kennt verschiebt man den original Chiffre-Text um die Schlüssellänge und verknüpft den verschobenen Chiffre-Text mit dem original Chiffretext. Damit wird der Schlüssel entfernt und es verbleibt der Klartext XOR-verknüpft mit dem um die Schlüssellänge verschobenen Klartext. Da beim verschobenen Chiffre-Text und dem original Chiffre-Text ca. 6% der Bytes übereinstimmen hat man nach der XOR-Verknüpfung an diesen Stellen dann Zeichen mit dem HEX-Wert $00. Das bedeutet, dass an dieser Stelle mit großer Wahrscheinlichkeit ein Zeichen steht, dass in der jeweiligen Sprache sehr oft vorkommt. Und auf dieser Tatsache baut dann der nächste Schritt auf...
Die Kryptanalyse
Dieser Teil ist im Vergleich zur Koinzidenzerfassung verhältnismäßig einfach! Während die Koinzidenzerfassung aus einem gut durchdachten Algorithmus besteht, besteht die restliche Kryptanalyse eigentlich nur mehr aus gutem raten und ein bisschen logischer Kombination. Aus diesem Grund bezieht sich dieser Text auch hauptsächlich auf das Programm (welches leider noch nicht veröffentlich werden kann). Auch wenn dieser Teil eigentlich einfacher ist als die Koinzidenzerfassung, so ist das Programm dennoch ungleich komplexer, da ich viele kleine Hilfen und Unterstützungen eingebaut hab, die das analysieren des Textes wesentlich erleichtern.
Das Prinzip ist absolut simpel: man sucht im "dechiffrierten" Text (das Ergebnis der Koinzidenzerfassung - der Chiffre-Text der mit dem um x verschobenen Chiffre-Text XOR-vernküpft wurde) das erste Vorkommen des Zeichens mit dem HEX-Wert $00 (in meinem Programm werden diese Zeichen zum leichteren finden extra hervorgehoben). Nun ratet man einfach mal welches Zeichen das im Klartext sein könnte (meistens ist es ein sehr häufig auftretendes Zeichen) und berechnet dann aus dem geratenen Zeichen und dem Zeichen des original Chiffre-Textes das Zeichen des Schlüssels an jener Position. Somit kann man schonmal einen Teil des Textes entschlüsseln und ausgehend von diesen Teilen weitere Rückschlüsse ziehen. zB: auf ein Zeichen mit dem Wert $0D folgt meistens ein Zeichen mit dem Wert $0A (Zeilenumbruch), genauso wie normalerweise auf die Satzzeichen (.,;!?) meistens ein Leerzeichen folgt (mein Programm gibt extra Hinweise aus, sofern es solche häufig auftretenden Kombinationen findet, genauso wie es Warnungen ausgibt, wenn ein eigentlich entschlüsseltes Byte ein nicht darstellbares Zeichen ist). So kann man sich nun Stück für Stück Zeichen des Klartextes erarbeiten, daraus die Zeichen des Passwortes berechnen und damit wiederum den gesamten Text Stück für Stück entschlüsseln.
Ich werde das ganze später noch an einem Beispiel verdeutlichen.
Kurzer Hinweis: der gesamte Text inkl. Code wurde auf meinem Zivi-Arbeitsplatz aus dem Kopf geschrieben und kann daher momentan noch Fehler enthalten. Sobald ich zu Hause bin und mal Zeit hab werd ich das ganze nochmal überarbeiten und diesen Hinweis entfernen.
Anonymous - Mo 07.07.03 17:38
Frage ... IMHO hatte ich mal zu Pascalzeiten (Source deswegen abhanden gekommen) ein Prog geschrieben, welches die vorhergehenden Ergebnisse mit in die Verschluesselung einbezog. Wie saehe es mit dem knacken solcher Sachen aus?
Bsp: bla[i]:=bla[i-1] xor bla[i]
Weiss jetzt nicht, ob mein Bsp ueberhaupt liefe ... aber mal so prinzipiell.
Ich meine, da man sich den Algo per Disassembler holen kann, ist es sowieso keine Frage der Schluesselstaerke ... :mrgreen:
Motzi - Mo 07.07.03 19:09
Ich weiß zwar jetzt nicht genau wie/was du meinst aber ich denke schon, dass es auch relativ leicht geknackt werden kann (vielleicht mit ein bisschen mehr Aufwand). Man muss dazu sagen, dass XOR nicht generell unsicher ist.. XOR wird auch in den moderenen Algorithmen gerne eingesetzt, einfach weil es leicht umkehrbar ist, aber es geht speziell um die simple Verschlüsselung so wie oben gepostet. Viele Script-Kiddies oder Programmierer die sich einfach nicht mit der Materie auskennen versuchen dann oft die simple XOR Verschlüsselung mit irgendwelchen Tricks möglichst kompliziert zu gestalten, aber das endet meistens dennoch in einer Verschlüsselung die genauso linear abläuft wie die simple XOR-Verschlüsselung und daher auch genauso leicht zu knacken ist!
Motzi - Di 08.07.03 12:26
Das OneTimePad - 100%ige Sicherheit (mit XOR)
Es ist unglaublich aber wahr, es gibt das perfekte Verschlüsselungskonzept, das 100%ige Sicherheit bietet! Es nennt sich One-Time-Pad (Einmalblock) und wurde im Jahr 1917 von Major Joseph Mauborgne und Gilbert Vernam von AT&T entwickelt.
Das Prinzip des OneTimePad (kurz OTP) ist ebenso einfach wie genial: der Schlüssel ist genauso lang wie der Klartext und ist zufällig(!!) erzeugt. Nun wird jedes Zeichen des Klartextes mit einem Zeichen des Schlüssels XOR-verknüpft.
Solange ein Schnüffler keinen Zugang auf das One-Time-Pad erlangt, das zur Verschlüsselung der Nachricht verwendet wurde, ist dieses Konzept absolut sicher.
Da der Schlüssel zufällig erzeugt wird ist jede Schlüsselsequenz gleich wahrscheinlich, womit ein völlig willkürlicher Chiffre-Text entsteht. Ein bestimmter Chiffretext kann mit derselben Wahrscheinlichkeit zu jedem der möglichen Klartexte gleicher Länge gehören und da jede Klartextnachricht gleich wahrscheinlich ist, gibt es für den Kryptanalytiker keine Möglichkeit zu ermitteln, welche davon die richtige ist. Eine zufällig gewählte Schlüsselsequenz, die zu einem nicht zufälligen Klartext addiert wird, erzeugt einen völlig willkürlichen Chiffretext. Keine noch so überragende Rechen- bzw. Verarbeitungsleistung kann daran irgend etwas ändern.
Die Vorbehalte gegen diese Methode, und diese sind nicht zu vernachlässigen, beziehen sich darauf, dass die Schlüsselsequenz zufällig generiert werden muss. Jeder Angriff gegen dieses Konzept wird sich auf das Verfahren konzentrieren, das zur Erzeugung der Schlüsselbuchstaben verwendet wird. Generatoren von Pseudozufallszahlen zählen hier nicht, da sie immer eine gewisse Regelmäßigkeit aufweisen. Nur wenn eine echte Zufallszahlenquelle benutzt wird ist die Sache sicher. Dies ist jedoch wesentlich schwieriger, als es auf den ersten Blick erscheinen mag.
Der andere entscheidende Punkt ist, dass man die Schlüsselsequenz unter keinen Umständen nochmal verwenden kann. Selbst wenn ein mehrere Gigabyte umfassender Block benutzt wird, kann ein Kryptanalytiker den Klartext rekonstruieren, sofern er über mehrere Chiffretexte verfügt, deren Schlüssel sich überschneiden. Dazu verschiebt er die Chiffretexte paarweise gegeneinander und zählt jeweils die Anzahl der Übereinstimmungen. Wenn sie richtig ausgerichtet sind, steigt der Prozentsatz der Übereinstimmungen sprunghaft an, wobei der genaue Wert von der Klartextsprache abhängt. Ab diesem Punkt ist die Kryptanalyse einfach.
Unsichere OneTimePads
Wie nun bereits mehrmals erwähnt wurde muss der Schlüssel des OTPs zufällig erzeugt werden und zwar mittels eines
echten Zufalls! Echter Zufall basiert immer auf reellem Zufall, da die Realität viel zu komplex ist als dass sie einfach berechnet werden könnte. Pseudo-Zufalls-Generatoren wie das von Delphi bekannte Random/Randomize fällt nicht unter die Kategorie "echter Zufall" und kann mittels Brute-Force innerhalb kürzester Zeit geknackt werden (auf
http://www.programmierer-board.de hab ich das schonmal gezeigt).
Wieso das so einfach geht:
Es gibt 2 Arten mit Random zu arbeiten - entweder man initialisiert die Ausgangswerte mit Randomize oder aber manuell über RandSeed. Aber egal mit welcher Methode man arbeitet, RandSeed kann höchstens 2^32 verschiedene Werte annehmen, und da Random auf RandSeed basiert kann Random höchstens 2^32 verschiedene Zufallsfolgen erzeugen - und 2^32 verschiedene Möglichkeiten sind schnell durchprobiert! Basiert der Algorithmus auf Randomize, so vereinfacht sich die Sache nochmal um ein vielfaches! Randomize initialisiert die Variable RandSeed mit der Anzahl der seit 00:00 vergangenen Millisekunden. Wenn man sich nun ausrechnet wieviele Millisekunden ein Tag hat, so stellt man fest, dass es bei Randomize nur 24*60*60*1000=86400000 (msec) verschiedene Möglichkeiten gibt, also rund 49 mal weniger als RandSeed aufnehmen könnte. Ein Brute-Force Angriff auf ein derartiges System dauert also höchstens ein paar Minuten. Aufgrund des erwähnten Threads auf
http://www.programmierer-board.de hab ich auch ein Programm für eine derartige Brute-Force Attacke geschrieben, welches ich hier später auch noch veröffentlichen werde.
hitstec - Do 10.07.03 03:09
Sehr interessant!
Ein paar Fragen zu Random hätte ich da noch.
Nehmen wir an der Schlüssel besitzt die Länge 255. Um das erste Zeichen per Zufall zu ermitteln, hat man 2^32 Möglichkeiten zur Auswahl. Da aber der Schlüssel nicht nur aus einem Zeichen, sondern aus 255 besteht, sind die Möglichkeiten des Schlüssels doch eigentlich um ein vielfaches höher.
Oder, habe ich einen falschen Ansatz?
Ein Brute-Force Angriff hätte dadurch eine um ein vielfaches höhere Laufzeit, soweit ich weiß steigt die Anzahl der Möglichkeitn exponentiell.
Dann wollte ich mit dem Vorurteil einer 100%igen Sicherheit aufräumen. Denn wie perfekt die Verschlüsselung auch sein kann, es gibt immer mind. eine Möglichkeit, wie man die Verschlüsselung knackt - und zwar mit dem eigentlichen Passwort.
:wink:
Weiterhin hätte ich eine Idee. Da ich selbst eine Kennwortverwaltung geschrieben habe - schon eine Ewigkeit her - habe ich mich insbesondere mit dem Maskieren von Zeichenketten befasst.
Nun, was wäre wenn man zur Verschlüsselungszeit ein OneTimePad generiert (von mir aus erstmal mit Random) und diesen dann mit einer starken Verschlüsselung abhängig vom Benutzerkennwort verschlüsselt ablegt? Die Verschlüsselten Daten trennt man darauf von den verschlüsselten OneTimePads, die seperat aufbewahrt werden.
Motzi - Mo 14.07.03 12:35
hitstec hat folgendes geschrieben: |
Sehr interessant!
Ein paar Fragen zu Random hätte ich da noch.
Nehmen wir an der Schlüssel besitzt die Länge 255. Um das erste Zeichen per Zufall zu ermitteln, hat man 2^32 Möglichkeiten zur Auswahl. Da aber der Schlüssel nicht nur aus einem Zeichen, sondern aus 255 besteht, sind die Möglichkeiten des Schlüssels doch eigentlich um ein vielfaches höher.
Oder, habe ich einen falschen Ansatz?
Ein Brute-Force Angriff hätte dadurch eine um ein vielfaches höhere Laufzeit, soweit ich weiß steigt die Anzahl der Möglichkeitn exponentiell. |
Nein... die gesamte Reihe der Zufallszahlen basiert auf einer einzigen 32bit Variable (-> RandSeed). Anhand dieser Variable wird die erste Zufallszahl berechnet und dann die Variable RandSeed neu berechnet. Die nächste Zufallszahl basiert dann wieder auf dem neuen Wert von RandSeed. D.h. es gibt nur 2^32 verschiedene Zufallls-FOLGEN! Nicht umsonst darf man Randomize nur einmal aufrufen. Würde man Randomize in einer Schleife immer wieder aufrufen und sich die erste Zufallszahl ausgeben lassen, so wäre es immer dieselbe (sofern die Laufzeit der Schleife weniger als 1ms beträgt)! Der Grund liegt einfach darin, dass RandSeed in der Schleife immer wieder mit derselben Anzahl an ms initialisiert wird weshalb die Berechnung der ersten Zufallszahl immer gleich ausfällt. D.h. hat man einmal den richtigen Wert für RandSeed kann der Schlüssel noch so lang sein - er kann komplett rekonstruiert werden!!
Zitat: |
Dann wollte ich mit dem Vorurteil einer 100%igen Sicherheit aufräumen. Denn wie perfekt die Verschlüsselung auch sein kann, es gibt immer mind. eine Möglichkeit, wie man die Verschlüsselung knackt - und zwar mit dem eigentlichen Passwort.
:wink: |
Wie darf ich das verstehen? ;) Eine Verschlüsselung soll ja wieder umkehrbar sein, es muss also eine Möglichkeit geben aus dem Chiffre-Text wieder den Klartext zu bekommen! 100%ig sicher ist das ganze dann, wenn dies nur mit Kenntniss des Schlüssels (und des benutzten Algorithmus) funktioniert - und genau diese Sicherheit bietet das OTP! Eine nicht reversible "Verschlüsselung" stellt hingegen eine OneWay-Hash-Funktion dar...
Zitat: |
Weiterhin hätte ich eine Idee. Da ich selbst eine Kennwortverwaltung geschrieben habe - schon eine Ewigkeit her - habe ich mich insbesondere mit dem Maskieren von Zeichenketten befasst.
Nun, was wäre wenn man zur Verschlüsselungszeit ein OneTimePad generiert (von mir aus erstmal mit Random) und diesen dann mit einer starken Verschlüsselung abhängig vom Benutzerkennwort verschlüsselt ablegt? Die Verschlüsselten Daten trennt man darauf von den verschlüsselten OneTimePads, die seperat aufbewahrt werden. |
Hm.. ehrlich gesagt versteh ich nicht ganz was du meinst... :? aber soweit ich das seh ist das auch nicht sicherer, da das ganze im Endeffekt wieder nur auf dem Passwort des Benutzers und deiner verwendeten "starken" Chiffrierung.
hitstec - Mo 14.07.03 13:43
Zitat: |
Wie darf ich das verstehen? |
Ganz einfach. Es gibt keine 100%ige Sicherheit! Wenn du natürlich die Definition dessen umschreibst und es so hinstellst, wie du es beschrieben hast, dann schon.
100%ige Sicherheit bedeutet, dass niemand außer dir selbst Zugang auf deine verschlüsselten Daten erlangen kann. Da das weder theoretisch noch praktisch nichg möglich ist, existiert auch die 100%ige Sicherheit nicht. Jede verschlüsselte Information lässt sich unter bestimmten Bedingungen mithilfe von Brute Force dechiffrieren. Und dann haben wir ja noch den Zufall. Es ist immerhin möglich, wenn auch unwahrscheinlich, dass jemand zufällig das richtige Kennwort eingibt.
Und das mit Randseed leuchtet mir irgendwie nicht ein. Willst du damit auf die Reproduzierbarkeit der Pseudozufallszahlen hinaus?
Motzi - Mo 14.07.03 14:13
hitstec hat folgendes geschrieben: |
Jede verschlüsselte Information lässt sich unter bestimmten Bedingungen mithilfe von Brute Force dechiffrieren. Und dann haben wir ja noch den Zufall. Es ist immerhin möglich, wenn auch unwahrscheinlich, dass jemand zufällig das richtige Kennwort eingibt. |
Nein, eben nicht! :) Das OneTimePad wird
zufällig erzeugt, das Ergebnis ist also ein völlig willkürlicher Chiffre-Text! Es gibt also unendlich viele Klartexte, die mit dem entsprechenden Schlüssel ein und denselben Chiffre-Text ergeben. Und genau das ist der Punkt - ohne Kenntniss des verwendeten Schlüssel ist es
unmöglich den Klartext zu rekonstruieren! Einzig und allein aufgrund der Tatsache, dass der Angreifer keine Möglichkeit hat festzustellen welcher der unendlich vielen möglichen Klartexte der richtige ist! In meiner Fachbereichsarbeit ist im Anhang auch noch eine Beschreibung des OTP, falls du Lust hast kannst du dir das auch noch anschaun -
http://www.x-spy.net/personal
Zitat: |
Und das mit Randseed leuchtet mir irgendwie nicht ein. Willst du damit auf die Reproduzierbarkeit der Pseudozufallszahlen hinaus? |
Ganz genau - es gibt nur 2^32 mögliche Zahlenfolgen die durch Random erstellt werden können. Um einen altbekannten Spruch zu missbrauchen - "Ein System ist immer nur so stark wie der schwächste verwendete Algorithmus!" ;) Das System kann also noch so gut und komplex sein, wenn es auf einem Pseudo-Zufallsgenerator wie Random basiert, dann sinkt der Aufwand der für das knacken benötigt wird dennoch nur auf 2^32 Möglichkeiten!
mirage228 - Mo 14.07.03 14:19
sagen wir mal, ich weiss dass du einen deutschen Text mit OTP verschlüsselt hast. Dann könnte ich doch per Bruteforce alle Schlüsselkombos durchgehen (ja, ich weiss, dass das verdammt lange dauert...) und dann den text "entschlüsseln" und den chiffre-text durch ein analyse-programm jagen, der guckt, wieviele deutsche worte im text vorkommen. der text mit den meisten deutschen ausdrücken müsste dann doch der Originaltext sein oder????
Motzi - Mo 14.07.03 14:37
mirage228 hat folgendes geschrieben: |
sagen wir mal, ich weiss dass du einen deutschen Text mit OTP verschlüsselt hast. Dann könnte ich doch per Bruteforce alle Schlüsselkombos durchgehen (ja, ich weiss, dass das verdammt lange dauert...) und dann den text "entschlüsseln" und den chiffre-text durch ein analyse-programm jagen, der guckt, wieviele deutsche worte im text vorkommen. der text mit den meisten deutschen ausdrücken müsste dann doch der Originaltext sein oder???? |
Nein, eben nicht!! :) Der "Schmäh" bei dem OneTimePad ist ja, dass der Chiffre-Text entschlüsselt JEDEN möglichen Klartext ergeben kann. Zur Verdeutlichung hier die Beispiele aus meiner Fachbereichsarbeit (diese Beispiele basieren auf der klassischen Verschlüsselung per OTP - man nehme die Positionen der Buchstaben im Alphabet, addiere diese und rechne das Ergebnis modulo 26).
Der Klartext lautet: ONETIMEPAD
und der Schlüssel ist: TBFRGFARFM
dann ergibt der Chiffre-Text: IPKLPSFHGQ
Der Angreifer hat nun keine Möglichkeit festzustellen, welcher Schlüssel bzw welcher Klartext der richtige ist. Denn da der Schlüssel
zufällig erzeugt wird sind die Schlüssel EAUVKGDCMW oder UUGGDZEVFW genauso wahrscheinlich wie der richtige Schlüssel! Nur, dass der entschlüsselte Text dann DOPPELBETT oder NUDELSALAT lautet...
Auch für dich nochmal der Hinweis auf meine Fachbereichsarbeit, vielleicht ist die Beschreibung dort besser/verständlicher -
http://www.x-spy.net/personal
mirage228 - Mo 14.07.03 17:31
Ach, so ist das ;-)
Ich hätte den Teil mit dem OTP in deiner Facharbeit (übrigens super gelungen :-) ) doch besser lesen sollen...
Dann ist das ja wirklich super sicher ;-) :D
Ich glaube XOR-OTP kommt jetzt auch in die nächste Version meines Verschlüsselungsprogrammes ;-)
mfG
mirage228
Motzi - Mo 14.07.03 17:37
mirage228 hat folgendes geschrieben: |
Ach, so ist das ;-)
Ich hätte den Teil mit dem OTP in deiner Facharbeit (übrigens super gelungen :-) ) doch besser lesen sollen... |
Dankeschön! ;) 8)
Zitat: |
Dann ist das ja wirklich super sicher ;-) :D
Ich glaube XOR-OTP kommt jetzt auch in die nächste Version meines Verschlüsselungsprogrammes ;-) |
Dann aber bitte nur mit
echtem(!!) Zufall!! :)
mirage228 - Mo 14.07.03 19:04
Motzi hat folgendes geschrieben: |
Dann aber bitte nur mit echtem(!!) Zufall!! :) |
Japp, bin auch schon auf der Suche nach Algorythmen bzw. Komponenten dafür... aber bisher nix gefunden...
mfG
mirage228
P.S.: In den Readmes meiner Verschlüsselungskompos steht was von "High Quality RNG"... was muss ich mir drunter vorstellen?
Motzi - Di 15.07.03 10:52
mirage228 hat folgendes geschrieben: |
Japp, bin auch schon auf der Suche nach Algorythmen bzw. Komponenten dafür... aber bisher nix gefunden... |
Es gibt verschieden Möglichkeiten.. such mal ein bisschen im Internet (aber nicht nach Komponenten, das schaffst du auch selber..)! Der Typ aus dem programmierer-board dessen Randomize-OTP ich per Brute-Force geknackt hab hat dann eine neue Version rausgebracht, die auf der Zufälligkeit von Mausbewegungen basiert...
Zitat: |
P.S.: In den Readmes meiner Verschlüsselungskompos steht was von "High Quality RNG"... was muss ich mir drunter vorstellen? |
RNG = Random Number Generation (falls dus noch nicht gewusst hast ;)) Um welche Kompo handelt es sich dabei?
hitstec - Di 15.07.03 11:23
Doch, deine Facharbeit finde ich nicht schlecht. Sehr einfach zu verstehen.
Zitat: |
Nein, eben nicht! Das OneTimePad wird zufällig erzeugt, das Ergebnis ist also ein völlig willkürlicher Chiffre-Text! |
Achso, klar. Ungefähr so arbeitet meine Kennwortverwaltung. Sie generiert aus Textinformation eine Art Hash-String, das als Kennwort benutzt wird. Im Gegensatz zum OneTimePad ist dieser natürlich nicht umkehrbar. Der Vorteil dieser Kennwortverwaltung ist, das keinerlei Informationen gespeichert werden müssen, sodass Kryptoanalytiker so gut wie keinen Ansatz hätten, um solche Kennwörter zu rekonstruieren.
Allerdings ist der Algo zum generieren des Hashs ziemlich schwach und besitzt bestimmt einige Einschränkungen. Vielleicht schaust du dir das Tool kurz an und sagst mir, was du davon hälst.
PS:
Zitat: |
Randomize-OTP ich per Brute-Force geknackt hab |
Wie kann man das verstehen? Hast du die Reproduzierbarkeit des Algos herausgefunden oder wie?
Motzi - Di 15.07.03 11:49
hitstec hat folgendes geschrieben: |
Vielleicht schaust du dir das Tool kurz an und sagst mir, was du davon hälst. |
Klar, kann ich machen...!
Zitat: |
PS:
Zitat: | Randomize-OTP ich per Brute-Force geknackt hab |
Wie kann man das verstehen? Hast du die Reproduzierbarkeit des Algos herausgefunden oder wie? |
Schau dir am besten den entsprechenden Thread an, dort hab ichs auch erklärt:
http://www.programmierer-board.de/phpBB2/viewtopic.php?t=49583&postdays=0&postorder=asc&start=15
hitstec - Di 15.07.03 12:08
Habe es mir gerade angeschaut: interessante Idee, so wie er das mit der Mausbewegung gemacht hat.
Also er benutzt zwar Randomize, aber er initialisiert vor dem tatsächlichen Random ein paar Randomwerte unter Verwendung der Mausbewegungen.
Allerdings sind diese Randomwerte von den Mausbewegungen selbst eigentlich nicht abhängig. Warum soll dann seine Methode sicher sein?
Wäre es nicht sicherer, wenn man möglichst viele Faktoren bei der Generierung eines möglichst echten Zufalls berücksichtigt?
PS: Meine Kennwortverwaltung findest du hier:
http://www.kenngen.de.
Motzi - Di 15.07.03 13:00
hitstec hat folgendes geschrieben: |
Habe es mir gerade angeschaut: interessante Idee, so wie er das mit der Mausbewegung gemacht hat.
Also er benutzt zwar Randomize, aber er initialisiert vor dem tatsächlichen Random ein paar Randomwerte unter Verwendung der Mausbewegungen.
Allerdings sind diese Randomwerte von den Mausbewegungen selbst eigentlich nicht abhängig. Warum soll dann seine Methode sicher sein? |
Nein, er berechnet aufgrund der Mausbewegungen echte Zufallszahlen - ohne Random!
Zitat: |
Wäre es nicht sicherer, wenn man möglichst viele Faktoren bei der Generierung eines möglichst echten Zufalls berücksichtigt? |
Wenn der Zufall auf Realität basiert, dann hast du genug Faktoren drinnen (eben alle Faktoren der Realität)! Mehr brauchst du nicht..
Thx, werds mir wenn ich zu Hause bin mal anschaun...
mirage228 - Di 15.07.03 14:00
Motzi hat folgendes geschrieben: |
mirage228 hat folgendes geschrieben: | P.S.: In den Readmes meiner Verschlüsselungskompos steht was von "High Quality RNG"... was muss ich mir drunter vorstellen? |
RNG = Random Number Generation (falls dus noch nicht gewusst hast ;)) Um welche Kompo handelt es sich dabei? |
In dem Quelltext für die Keygeneration der RSA-Komponente steht:
{** get a random seed for the search - your routine
should use a high quality RNG to fill this seed **}
Die Komponenten für die Verschlüsselung habe ich von TSM Inc.
FloFri - Mi 29.10.03 09:35
Auch wenn der Thread schon etwas älter ist würde ich gerne zu dem Zufallsprinzip noch etwas fragen:
Was währe denn bei folgendem Beispiel zur erzeugung von Zufallszahlen:
Man macht zuerst ein Randomize.
Dann holt man sich per Random das erste Zeichen des Schlüssels.
Dannach holt man sich per Random einen zweiten wert zwischen 1 und 5
Ist dieser Wert gleich 5, dann wird der Random-Pool mit dem letzten Zeichen des Schlüssels neu initialisiert.
Dann geht das Spiel von vorne los.
Was haltet ihr dafon? Wie zufällig währe das?
Ach so: und hat jemand ein Beispiel für einen Reellen Zufalls-Algo?
Motzi - Mi 29.10.03 13:22
Das Problem ist dasselbe - Random ist nur ein Pseudo-Zufallsgenerator der nur auf einer 32-Bit Variable basiert. Kennt man den ersten Ausgangswert von RandSeed kann man deinen kompletten Algorithmus rekonstruieren! Und wie bereits gesagt vereinfacht der Einsatz von Randomize eine BruteForce-Attacke, da RandSeed mit der Anzahl der vergangenen Millisekunden seit 0 Uhr füllt und dieser Wert hat nunmal ein Maximum von 24*60*60*1000 = 86400000 und ist somit 49 mal kleiner als der höchst mögliche Wert eine 32-Bit Variable!
Die einzige Möglichkeit Random sinnvoll einzusetzten wäre wieder nur in Verbindung mit einer echten Zufallsquelle zB Mausbewegungen, aber wenn man bereits eine echte Zufallsquelle hat braucht man dann eigentlich auch kein Random mehr...!
FloFri - Mi 29.10.03 14:51
Hm, gibt es irgendwo ein beispiel, wie ich so eine eigene random-funktion schreibe, oder reicht es, wenn ich den seed-startwert aus einer reellen-zufallsquelle nehme?
Anonymous - Mi 29.10.03 17:16
Ich hatte vor eineiger Zeit mal ein bissl rumprobiert und dabei ist folgende Fkt rausgekommen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| function Rand(v: integer): integer; begin repeat result := round(v * 3 * cos(randseed * 133.579487179487)); randseed := (randseed + gettickcount + random(10)); if result < 0 then result := -result; until result < v; end; |
Allerdings weiß ich nicht wie sicher die ist. (Rekonstruierbar dürften die Zahlen aber nicht ohne weiteres sein)
Motzi - Mi 29.10.03 17:32
Und mit welchem Wert initialisierst du RandSeed das erste mal..? :roll:
Das Problem ist nunmal, dass Random auf einer 32-Bit Variable basiert und damit maximal 2^32 mögliche Zufallsfolgen erstellen kann. Und auch wenn RandSeed aufgrund eines eigenen Algos neu berechnet wird erhöht das die Sicherheit keinesfalls, da ja das gesamte Prinzip nur auf einem 32-Bit Ausgangswert beruht! Wird dieser Ausgangswert ermittelt (bei 32 Bit ist das per BruteForce kein Problem) so kann man alle weiteren Werte ohne Probleme berechnen..!
Anonymous - Mi 29.10.03 18:27
Motzi hat folgendes geschrieben: |
Und mit welchem Wert initialisierst du RandSeed das erste mal..? :roll: |
GetTickCount(=Anzahl der Millisekunden seit letztem Windows-start)
Und ich glaube kaum, dass du in diesem Fall alles wiederherstellen kannst, weil du nicht weist, wie lange mein PC für einen Schleifendurchlauf, in dem eine Zahl berechnet wird, braucht.
(Ich lasse mich aber gerne belehren ;))
sakura - Mi 29.10.03 21:28
Ich wollte nur eine Korrektur zu
Randomize anbringen. Ich bin mir nicht sicher, seit welcher Delphi-Version es anders ist, aber das ließe sich morgen mal testen. Unter Windows wird RandSeed i.A. mit 64 Bit initialisiert.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| procedure Randomize; {$IFDEF LINUX} begin RandSeed := _time(nil); end; {$ENDIF} {$IFDEF MSWINDOWS} var Counter: Int64; begin if QueryPerformanceCounter(Counter) then RandSeed := Counter else RandSeed := GetTickCount; end; {$ENDIF} |
EDIT: Vergesst es, ändert ja nichts an der Tatsache dass RandSeed vom Typ LongInt (32 Bit) ist :roll:
:welcome:
Motzi - Do 30.10.03 11:53
@obbschtkuche: oh.. hab übersehen, dass du innerhalb deiner Rand-Funktion auch nochmal GetTickCount verwendest... das macht die Sache natürlich etwas komplizierter, allerdings ist das auch noch nicht der ideale Zufall...!
@sakura: also bei meinem Delphi schaut Randomize so aus:
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: 34: 35: 36:
| procedure Randomize; {$IFDEF LINUX} begin RandSeed := _time(nil); {$ENDIF} {$IFDEF MSWINDOWS} var systemTime : record wYear : Word; wMonth : Word; wDayOfWeek : Word; wDay : Word; wHour : Word; wMinute : Word; wSecond : Word; wMilliSeconds: Word; reserved : array [0..7] of char; end; asm LEA EAX,systemTime PUSH EAX CALL GetSystemTime MOVZX EAX,systemTime.wHour IMUL EAX,60 ADD AX,systemTime.wMinute IMUL EAX,60 XOR EDX,EDX MOV DX,systemTime.wSecond ADD EAX,EDX IMUL EAX,1000 MOV DX,systemTime.wMilliSeconds ADD EAX,EDX MOV RandSeed,EAX {$ENDIF} end; |
Aber wie du richtig bemerkt hast "ändert ja nichts an der Tatsache dass RandSeed vom Typ LongInt (32 Bit) ist" und dass die Anzahl der möglichen Zufallsfolgen damit sehr begrenzt ist... ;)
FloFri - Fr 31.10.03 09:01
Aber das sollte doch eigendlich keinen stören mit den Zufallsfolgen, da doch eh ständig eine andere benutzt wird (am beispiel von obbschtkuche).
Noch eine andere Frage: Es können ja bei verschlüsselten Strings und Keys 255 verschiedene Zeichen rauskommen. Einige davon sind aber ja Steuerzeichen, von denen wiederum einige für den String tabu sind, da diese den string an sich verändern, ohne das der benutzer was macht.
Ein beispiel dafür ist das Zeichen chr(0), da dieser den Schluss des strings symbolisiert und dadurch der string an der stelle abgeschnitten wird.
Andere Tabu-Zeichen sind zum beispiel der backslash, da auch der den string verändert.
Steuerzeichen, die zum beispiel nicht tabu sind, sind chr(13) und chr(10), da diese ja nur eine neue zeile beginnen, aber nicht den string verfälschen.
Hat zufällig jemand eine Liste, mit solchen tabu-zeichen, die einen string verfälschen?
Anonymous - Fr 31.10.03 11:57
soweit ich weiß nur #0, aber das macht auch nichts, da dateien binär gespeichert werden
FloFri - Fr 31.10.03 14:48
Habe schon herausgefunden, warum mein text immer verfälscht wurde. Habe es aus Debug-Gründen erst in ein Memo-Feld gepostet, befor ich es gespeichert habe.
Speicher es jetzt direkt und kann sogar #0 benutzen.
pHew - Sa 17.01.04 18:15
Hm, kann ich so ein OneTimePad nicht knacken, wenn ich Wörter kenne die darin vorkommen?
Ich probier einfach alle Chiffres durch, bis bei einem ein hoher Prozentsatz "sinnvoller" Wörter drin stehen. Oder ergibt jeder beliebige Klartext sinnvolle Wörter (das wär ja arger Zufall, oder?).
Motzi - Sa 17.01.04 18:38
Nein.. ein OneTimePad erzeugt einen vollkommen willkürlichen Chiffre-Text. Und da jeder Schlüssel geleich wahrscheinlich ist, ist auch jeder mögliche Klartext gleich wahrscheinlich! Und zu diesen unendlich vielen möglichen Klartexten gehören eben auch alle möglichen Klartexte die durchaus sinnvollen Text haben. Aber dadurch, dass eben jeder dieser Klartexte gleich wahrscheinlich ist hat man keinen Anhaltspunkt welcher nun der gesuchte ist...
pHew - Di 20.01.04 18:40
Aber ob der Text jetzt
Thomas ging zur Arbeit und vergaß seinen Schal.
oder
Herbert Bügelbrett Paul t334 sieben komma!
lautet, hilft mir. Dann muss ich eben alle durchsehen, wo meine Wörter vorkommen. Wenn ich genug probier is das richtige sicher dabei, und das erkenn ich dann am Sinn der Worte. Mit Pech ist es eben das letzte von unendlich vielen.
Motzi - Sa 05.06.04 12:32
Hoppla.. das Posting ist mir damals komplett durch die Lappen gegangen.. :oops:
pHew hat folgendes geschrieben: |
Aber ob der Text jetzt
Thomas ging zur Arbeit und vergaß seinen Schal.
oder
Herbert Bügelbrett Paul t334 sieben komma!
lautet, hilft mir. Dann muss ich eben alle durchsehen, wo meine Wörter vorkommen. Wenn ich genug probier is das richtige sicher dabei, und das erkenn ich dann am Sinn der Worte. Mit Pech ist es eben das letzte von unendlich vielen. |
Wie du in deinem letztem Satz schon sagst gibt es
unendlich viele Möglichkeiten und jede dieser Möglichkeiten ist gleich wahrscheinlich! Und in diesen unendlich vielen Möglichkeiten gibt es zwar unendlich viele Möglichkeiten die keinen Sinn ergeben, aber auch unendlich viele die sehr wohl einen Sinn ergeben. Und da jede dieser Möglichkeiten gleich wahrscheinlich ist hat man keine Möglichkeit festzustellen welche jetzt die richtige ist..!!
FAlter - Sa 05.06.04 13:43
Ich habe vor einiger Zeit aich ein Verschlüsselungsprogramm geschrieben. Es basiert zwar nicht auf XOR-Basis, hat aber mit dem OTP trotzdem gewisse Ähnlichkeit.
Der Schlüssel steckt im zur Verschlüsselung verwendeten Passwort. Dieses darf zwar beliebig lang sein, am besten <= zu verschlüsselnde Daten in Byte, aber wenn man ihn genau gleich groß macht und nir zufälligen Symbolen füllt (und das Passwort kann nicht nur Buchstaben, sondern alle Zeichen von #0 bis #255 aufnehmen) dann ist es doch genauso schlecht knackbar, oder? Wenn man ein falsches Passwort eingibt, bekommt man nur Datenmüll.
Nur, da es schwierig ist, sich einen mehrere MB großen Schlüssel zu merken, habe ich ein System entwickelt, nach dem auch bei kürzeren Passwörtern einigermaßen Sicherheit bestehen soll. Der Schlüssel wird nach einem System jedesmal neu berechnet, wenn er fertig genutzt wurde. Dadurch sind auch bei Eingabe eines ähnlichen Passwortes nur die ersten paar Zeichen korrekt entschlüsselt.
Eine weitere Möglichkeit ist es, den Entschlüsselungsalgo... zum Verschlüsseln zu nutzen und dem zum Verschlüsseln beim Entschlüsseln. Das funktioniert einwandfrei, und der, der es Knacken will, muss möglicherweide doppelt so viele Kombinationen durchgehen.
Versucht mal, mit jetzigen Kenntnissen über das System (mehr hat der entschlüsselnde ja auch nicht), das zu entschlüsseln:
ËŽáÚÆŽÉÚÔ‡¹’XåȈ̒Ì×kš@ìØã„£’ÍÕÓŽÜÕÌ’ÜÒÖÜ@ÏÓ¢‚þòîí\ï÷ÿ£åj
PS: Der Schlüssel bestand nur aus auf der Tastatur eingebbaren Zeichen, war Englisch, kürzer als der Verschlüsselte Text und entsprach ihm Inhaltlich ungefähr.
raziel - Sa 05.06.04 14:40
Titel: welcher kommentar?
FAlter hat folgendes geschrieben: |
Der Schlüssel steckt im zur Verschlüsselung verwendeten Passwort. Dieses darf zwar beliebig lang sein, am besten <= zu verschlüsselnde Daten in Byte, aber wenn man ihn genau gleich groß macht und nir zufälligen Symbolen füllt (und das Passwort kann nicht nur Buchstaben, sondern alle Zeichen von #0 bis #255 aufnehmen) dann ist es doch genauso schlecht knackbar, oder? Wenn man ein falsches Passwort eingibt, bekommt man nur Datenmüll.
|
naja. wenn du deinen schlüssel aus einem passwort mit zufälligen daten generierst erstellst, kannst dich gleich komplett auf zufällige daten stützen -> das passwort wird sinnlos, weil du auch - genau wie beim one-time-pad - den schlüssel speichern bzw. mitübertragen musst.
FAlter hat folgendes geschrieben: |
Nur, da es schwierig ist, sich einen mehrere MB großen Schlüssel zu merken, habe ich ein System entwickelt, nach dem auch bei kürzeren Passwörtern einigermaßen Sicherheit bestehen soll. Der Schlüssel wird nach einem System jedesmal neu berechnet, wenn er fertig genutzt wurde. |
:?: Wie meinen :?:
FAlter hat folgendes geschrieben: |
Versucht mal, mit jetzigen Kenntnissen über das System (mehr hat der entschlüsselnde ja auch nicht), das zu entschlüsseln:
ËŽáÚÆŽÉÚÔ‡¹’XåȈ̒Ì×kš@ìØã„£’ÍÕÓŽÜÕÌ’ÜÒÖÜ@ÏÓ¢‚þòîí\ï÷ÿ£åj
PS: Der Schlüssel bestand nur aus auf der Tastatur eingebbaren Zeichen, war Englisch, kürzer als der Verschlüsselte Text und entsprach ihm Inhaltlich ungefähr. |
Scherzkeks. Du hast zwar im gröbsten umrissen wie du den schlüssel generierst, aber kein wort über die art der verschlüsselung. wir wissen nur dass nicht ge
xort wurde... :roll:
//edit: oder is das ein schlüssel?
raziel
Motzi - Sa 05.06.04 16:56
FAlter hat folgendes geschrieben: |
Nur, da es schwierig ist, sich einen mehrere MB großen Schlüssel zu merken, habe ich ein System entwickelt, nach dem auch bei kürzeren Passwörtern einigermaßen Sicherheit bestehen soll. Der Schlüssel wird nach einem System jedesmal neu berechnet, wenn er fertig genutzt wurde. |
Die Sicherheit basiert aber dennoch nur auf dem kurzen Passwort..! Ich brauche schließlich nur das kurze Passwort zu kennen um daraus den langen Schlüssel berechnen zu können..!
Bei eine Kryptanalyse geht man davon aus, dass der Angreifer bestens über den Algorithmus bescheid weiß. Du kannst also gerne deinen Code hier posten und ich schau ihn mir mal an..
FAlter - So 06.06.04 17:52
Titel: Re: welcher kommentar?
raziel hat folgendes geschrieben: |
das passwort wird sinnlos, weil du auch - genau wie beim one-time-pad - den schlüssel speichern bzw. mitübertragen musst. |
Ich übertrage keinen Schlüssel. Der Empfänger gibt das Passwort ein, das ich vorher z. B. mit ihm persönlich abgemacht habe. Da dieses Passwort den Schlüssel darstellt, muss ich es nicht jedesmal mit übertragen.
motzi nicht, sondern auch raziel hat folgendes geschrieben: |
Wie meinen |
Ich berechne aus dem Passwort eine Zahl und mit deren Hilfe codiere ich die Zeichen noch zusätzlich. Das bietet höhere Sciherheit, als nur nochmal mit dem Passwortanfang zu beginnen.
aber diesmal motzi hat folgendes geschrieben: |
Die Sicherheit basiert aber dennoch nur auf dem kurzen Passwort..! Ich brauche schließlich nur das kurze Passwort zu kennen um daraus den langen Schlüssel berechnen zu können..! |
Nun, dieses "kurze" Passwort ist natürlich niche mehrere MB lang lang, aber Ein Sprichwort ist doch schon ziemlich lang oder ein Gedicht. Oder man nimmt einfach Teile eines Liedes ("DhGDEheD(A)"). Wenn man möchte, kann man auch den Ihnalt des letzten Briefes nehmen. Dieser sollte dann einiger KB groß sein.
Um zur Realität zurückzukommen: Was nutzt es dir, wenn du weißt, dass das Passwort Meyer oder Mayer oder Majer oder so ist? Und Wenn dui das Passwort nicht weißt, hast du kaum eine Chance.
Damit ihr den Text oben entschlüsseln könnt, hier ein paar weitere Infos: Mein Schlüssel basiert aus Addition und Subtraktion des Byte-Wertes. Ich hoffe, ihr könnt es trotz dieser Information nicht entschlüsseln. (Ich werde natürlich nicht so viel verraten, dass die ganze Sicherheit weg ist.)
Und noch was:
10 15 15 10 _ 1 5 5 _ 14 1 5 !
Leichter zu entschlüsseln (HEX!!!) Endlich habe ich es geschafft, einen Hex-Satz zu schreiben!
[sub]//Edit: Namen in Quote-Tags geändert[/sub]
raziel - So 06.06.04 18:05
Titel: Re: welcher kommentar?
FAlter hat folgendes geschrieben: |
motzi hat folgendes geschrieben: | Wie meinen |
|
Das war von mir, nich vion Motzi...
FAlter hat folgendes geschrieben: |
(Ich werde natürlich nicht so viel verraten, dass die ganze Sicherheit weg ist.) |
An dieser Stelle zitier ich sehr gerne Bruce Schneier aus seinem Buch "Angewandte Kryptographie":
Bruce Schneier hat folgendes geschrieben: |
Wenn ich von Ihnen verlange, einen Brief zu lesen, den ich in einen Safe gelegt und dann irgendwo in New York versteckt habe, dann hat das nichts mit Sicherheit zu tun, sondern ist ein einfaches Verstecken. Wenn ich diesen Brief jedoch in den Safe lege, Ihnen dann die Entwicklungspläne des Safes und noch hundert Safes gleicher Bauart mitsamt ihren Kombinationen gebe, so daß Sie mit Hilfe der weltbesten Safeknacker den Sperrmechanismus ausgiebig studieren können, aber immer noch nicht in der Lage sind, den Safe zu öffnen und den Brief zu lesen - dann ist das Sicherheit. |
In diesem Sinne,
raziel
FAlter - So 06.06.04 18:36
Aber ich finde, dass auch Verstecken schon zur Sicherheit beitragen kann. Und dazu noch der Rest - macht die eigentliche Sicherheit.
Möglicherweise irrt er sich etwas.
raziel - So 06.06.04 18:53
sicher nicht. gib uns dein prog (kompiliert) und man kann durch "reverse engineering" den algorithmus und die schlüsselgenerierung nachvollziehen.
raziel
Christian S. - So 06.06.04 18:55
Hallo!
Ich habe hier nicht alles gelesen, aber es ist eines der Prinzipien der Verschlüsselung, dass die Sicherheit eines Algorithmus nicht davon abhängen darf, ob er bekannt ist oder nicht! Und ehrlich gesagt, würde ich keinem Algorithmus, der nicht öffentlich ist, meine Daten anvertrauen. Woher soll ich denn wissen, wie gut er ist?
MfG
Peter
FAlter - So 06.06.04 19:02
raziel hat folgendes geschrieben: |
sicher nicht. gib uns dein prog (kompiliert) und man kann durch "reverse engineering" den algorithmus und die schlüsselgenerierung nachvollziehen.
raziel |
Hier! [
http://people.freenet.de/FAlter/FAlterCrypt.zip]
Motzi - So 06.06.04 20:12
Wie Peter Lustig schon geschrieben hat, ein Algorithmus kann nur dann als sicher eingestuft werden, wenn alle Details über den Algo bekannt sind, er aber dennoch nicht geknackt werden kann.
Veröffentlich deinen Source und ich kann ihn mir mal anschaun.. aber nur weil ich ihn dann nicht knacken kann heißt das trotzdem noch nicht, dass er auch sicher ist..! ;)
Zitat: |
Zitat: | Die Sicherheit basiert aber dennoch nur auf dem kurzen Passwort..! Ich brauche schließlich nur das kurze Passwort zu kennen um daraus den langen Schlüssel berechnen zu können..! |
Nun, dieses "kurze" Passwort ist natürlich niche mehrere MB lang lang, aber Ein Sprichwort ist doch schon ziemlich lang oder ein Gedicht. Oder man nimmt einfach Teile eines Liedes ("DhGDEheD(A)"). Wenn man möchte, kann man auch den Ihnalt des letzten Briefes nehmen. Dieser sollte dann einiger KB groß sein. |
Was hat das jetzt damit zu tun..? Ich wollte damit darauf hinweisen, dass durch die "berechnete Verlängerung" des Passwortes die Verschlüsselung nicht sicherer wird, da die Sicherheit dennoch nur auf dem kurzen Passwort beruht und nicht auf dem längeren berechneten!
Eine BruteForce-Attacke ist im Allgemeinen sowieso die ineffizienteste Attacke.. viel besser ist da eine Wörterbuch-Attacke, aber abgesehn davon gibt es ja noch verschiedene andere Möglichkeiten Algorithem zu Analysieren und Schwachstellen zu finden über die die Chiffrierung auch ohne Kenntniss des Schlüssels geknackt werden können..!
Und wie gesagt, wenn du deinen Code hier reinstellst schau ich ihn mir gerne mal an.. aber wie gesagt geht man bei einer Kryptanalyse davon aus, dass der Angreifer bestens über den Algo und die Implementierung bescheid weiß..! Bei einem perfekten Algorithmus liegt die Sicherheit
nur beim Schlüssel! Soll heißen ein Angreifer kann alle Details über den Algo haben, beliebig viel Chiffre-Text mit dazugehörigem Klartext, aber die effizienteste Attacke ist immer noch eine Brute-Force-Attacke...
raziel - So 06.06.04 21:05
Ich hoff ich zerstör hier jetz nich dein Lebenswerk aber deine "Verschlüsselung" denk ich "geknackt" zu haben... Hab einfach einen "Known-Plaintext Angriff" durchgeführt. Dazu brauchte ich nich mal deine Exe anzuschauen (nur doppelzuklicken):
Dein Ciphertext umfasst lediglich Zeichen von $41 - $FF. Zum Verschlüsseln wird einfach der Schlüssel zum Plaintext hinzuaddiert. Zum Entschlüsseln eben subtrahiert. Was mir jetzt noch fehlt ist die Schlüsselgeneration. An den komm ich aber nur wenn ich deine Exe ent-upxt hab, was aber kein Problem darstellen dürfte. Das mach ich aber (frühestens) morgen. Jetzt widme ich mich aber erst mal einer kleinen Silberscheibe mit dem Aufdruck "Kill Bill" ;-)
raziel
raziel - Mo 07.06.04 16:06
Muss was richtigstellen: Der ASCII-Bereich der einzelnen Ciphertext Zeichen geht
nicht von $41 bis $FF, sondern von $0 bis $FF... aber ansonsten stimmt alles: Die Verschlüsselung ist einfach:
Delphi-Quelltext
1: 2:
| for i := 1 to length(plaintext) do ciphertext[i] := (plaintext[i] + key[i]) mod 256; |
raziel
ps: der schlüssel bereitet mir noch kopfschmerzen... :( aber das wird sich hoffentlich nach dem deUPXen legen...
Anonymous - Mo 07.06.04 16:44
Wenn ich mich nicht irre liegt die Fkt für den nächsten Schlüssel bei "$004534D8"
//Edit:
Vielleicht auch eher "$00404890"
//Edit2:
Vielleicht auch doch keins von Beidem :P
raziel - Fr 11.06.04 12:27
UPX mag mich nich... kriegs nich entpackt. Hab auch langsam keine Lust mehr.
Bisherige Ergebnisse über den Schlüssel:
Offensichtlich wird bei Passwörtern mit gerader Länge einfach der Schlüssel wie folgt berechnet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| var key, password: String; keykey: Byte; key := password; keykey := Ord(password[(length(password) div 2)+1)]) - Ord(password[1]); repeat for i := 1 to length(password) do begin key := key + Chr(Ord(password[i]) + keykey); end; until (length(key) >= length(plaintext)); |
Aber wie das bei ungeraden Schlüsseln geht hab ich noch nicht rausgefunden... :(
Hier ein Beispiel (Hex):
Quelltext
1: 2: 3:
| 48 45 4C 4C 4F F6 F3 FA FA FD A4 A1 A8 A8 AB 52 4F 56 56 59 00 FD 04 04 07 AE AB B2 B2 B5 5C 59 60 60 63 0A 07 0E 0E 11 B8 B5 BC BC BF 66 63 6A |
Das Passwort war: "HELLO" (48 45 4C 4C 4F)
Wer Lust hat zu tüfteln und was rauskriegt > PN ;-)
Weil ich das (noch) nicht knacken konnte, heißt das aber noch lange nicht, dass das sicher ist!!
FAlter hat folgendes geschrieben: |
Es basiert zwar nicht auf XOR-Basis, hat aber mit dem OTP trotzdem gewisse Ähnlichkeit. |
Ich würde es weniger mit OTP als eher mit Vigenere vergleichen. Warum? Die Sicherheit von OTP basiert darauf, dass der Schlüssel komplett durch einen echten Zufall erzeugt wird. Das ist bei Dir nicht der Fall. Eher ist es bei Dir so, dass du aus einem Passwort (nicht per Zufall generiert) einen Schlüssel "streckst" - genau wie bei Vigenere.
raziel
Motzi - Fr 11.06.04 12:45
Ist auch ganz enfach.. wenn du schaust wiederholt sich das Schema des Passwortes immer wieder:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| 48 45 4C 4C 4F F6 F3 FA FA FD A4 A1 A8 A8 AB 52 4F 56 56 59 00 FD 04 04 07 AE AB B2 B2 B5 5C 59 60 60 63 0A 07 0E 0E 11 B8 B5 BC BC BF ..... |
Die Differenz zwischen den Zeilen beträgt in dem Fall immer konstant $52:
$48 - $52 (mod $FF) = $F6
$F6 - $52 (mod $FF) = $A4
$A4 - $52 (mod $FF) = $52
...
Ich nehm an diese $52 werden auch noch irgendwie berechnet, aber ich hab mir das Prog noch nicht angeschaut...
raziel - Fr 11.06.04 12:53
So weit war ich auch schon, aber WIE ich auf diesen "keykey" komm is mir immer noch ein Rätsel... ;-)
Motzi - Fr 11.06.04 12:55
Hm.. prog durch den Disassembler schicken und angucken.. ;)
raziel - Fr 11.06.04 12:57
Wird mir wohl nix anderes mehr übrigbleiben... :( *OllyDbganwerf*
raziel - Fr 11.06.04 13:49
obbschtkuche hat folgendes geschrieben: |
Wenn ich mich nicht irre liegt die Fkt für den nächsten Schlüssel bei "$004534D8"
//Edit:
Vielleicht auch eher "$00404890" |
bei $004534D8 ziemlich sicher nich, weil das noch die UPX entpack routinen sind... $00404890 schon eher. Mein ProcDump will nich (WinXP gar net und Win98 is die gedumpte exe fehlerhaft...), deshalb muss ich zu fuß übern ODBG und ndisasm gehen... :( Win32DisAsm will au nimmer, liegt wohl am dump :bawling:
// edit :autsch: wieso einfach wenns kompliziert auch geht... "upx -d faltercrypt.exe"...
raziel
Motzi - Fr 11.06.04 14:00
Vorschlag @ FAlter: du postest deinen Code und einen ~400 Zeichen langen verschlüsselten Text (ohne Passwort) und ich leg dir den entschlüsselten Text plus Passwort vor..! Musst mir nur ein paar Tage Zeit geben weil ich momentan Uni-bedingt nicht so viel Zeit hab...
Anonymous - Fr 11.06.04 14:02
raziel hat folgendes geschrieben: |
bei $004534D8 ziemlich sicher nich, weil das noch die UPX entpack routinen sind... $00404890 schon eher. |
Ich war von der entpackten exe ausgegangen :roll:
raziel - Fr 11.06.04 15:15
obbschtkuche hat folgendes geschrieben: |
Ich war von der entpackten exe ausgegangen :roll: |
ich von der nicht-entpackten. wusste nicht dass es bei upx auch ne unpack funktion gibt... :?
aber dank exe2dpr kann ich mit ziemlicher sicherheit sagen, dass die verschlüsselungsprozedur bei $00453CAC liegt!
raziel
FAlter - Fr 11.06.04 17:26
Motzi hat folgendes geschrieben: |
Vorschlag @ FAlter: du postest deinen Code und einen ~400 Zeichen langen verschlüsselten Text (ohne Passwort) und ich leg dir den entschlüsselten Text plus Passwort vor..! Musst mir nur ein paar Tage Zeit geben weil ich momentan Uni-bedingt nicht so viel Zeit hab... |
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| ¥þúêçã¦ÐàñâÔÓÛ—Á®ÆL»È´U«¡´R…Ÿ’” -‘}r™*^ws^…FhUJqG?òæLA0G7$ö#(6Åäû!òíüáâàæëŒç׿ÒÌO侫¾¾d¢¢¤ª¥•¸[);iˆ©9I’ˆw”%Xregsc H[FnT-S=ëM2$AãÎ'Ã##ÀÓô¬ßùìîúê‡ÏâÍõÛ´ÚÄ`w´¤Æµ¤Ç¥’¥cK©‰L‡€–4XŠwheav`Rq`@K@g÷=G,Jã-2A*á·¨ýª þÄÐÞùçä°ØÔãÏ×ÞÓzƒ¼³Ô´Ÿ±¯¡t ž‹`v{Іwž„lz}i‡kSdd hP;^GHüÜF46S (Ù,ÎùþêºõîõÖøÄúÔÑéÊÏÜzÃÓu®Õ¹©¯¡´ OV€Š >q‹sŒxfnv^E`UhG?A6^í D8$I+âø´öéñîºáÍ÷çÚ¦ÎÊàØ½ÞÁ©Ç|dÓ®=O¯™¯M–¦Hr›‹{€|mpYw.d`RBElH-V>ëU-?ã7'"3öÄ ø à”…èçÍðêÈóÉs×øßp“¹´«¾ªK¤ ¸‰Lv†—ˆzyh=ibx0k_KbH>]=æI<;(5˼%#¾œýïê¹€ÒØË—ÒÇî¥ÈÃÂͽ¡°¨Ÿt› ¥‹²Ce–„†£ppx*m|`\[SrLC6;Y?á;7'O$ ÏÃ7&¶î¥ëÖùâã«ÂÂêÝ}ØÆ¼~¨¬Ë¸ž°µ¨Ã/„¡MŸƒB]n›obpx_Y_c_tI6HB?ÚÆ%2"ö-,È%ü#úç ¸ ÞØíëŒêÒ½·ÇØÉ»ºÂ©~¥™ª¯P¿›–šª|—ˆ4/XreTfN``IiK-MA@Ê=×1)*ñ$ôÄ ïã°ìé ïÌàØÙ¡×¸ÔÁÆá]I¹½²Í¡—¬«e—{‘•7«‰vüƒ}‰iRlT{cJbI@c=æ,?<H-!;Þ-BÏ&""︱‘¸ðë–õÜÐÜÛ‚öÔÁHÎÈÔ´·fŸÆ®•”‹®ˆGn~¡vg*e}g^dd ~\IÏVP\<%?í&E$ºÌ.§Îþ'ì ýêöÖôÃðÕÂÞ׋„dÃÇi¤»©¹³U³›†©’”[n‘€ˆwfsx{WKnVYP:IEE4¹Dè:""ⶪç÷ô¬ïþâÞ¡ÀÍøÍÏÎÖ½’Ĩ¾Âd´¦¢²3—¯›¤‹„}m‹@(†nY)di€THPAméÕ#=:[=222×6Ø - ü¬àþûî ÝÏáá“¡ÉÆˆÒ¸Öp£¹¹…\©œžªHy‘•Œ™yq%d’fid]nYúWYJW÷-=;9M¨&;(2¾#+» ý‰ûð÷ëÙøØÐ—¶ÃêóÏÈn̰\P{É«•¥R`–wŒwž/C…pú„gQd^SpM;YET84öA'E-5Ù-þ# ùí ’©ØÖøñãðâÂä—j FÐuœÆ®®¦£o“V‘†>T‡Œ‚•nasnm?I_^JØCVBC=!7;Ü;Ý%Éù"žŠãôâÞô˜ÔçÏÌÒØxÖº¶y‘¹Ò°¢e±ž¯–Š˜™z‚s–3NbY|dOTA`Q1U÷1XÕÁ3À*ñ Ïù#û
úâ°ý꘷âßÐäÌÇÍÍ´¨¹k¹Î®K…©ª‘z”˜…˜4g}‚'VTvoajSNj^@XC,Oò=P2Ò*$&<+»Ìúïûëùé–ÜÐÛ{l¤ª¯Õ¾·Ö¬¦Â¶ À ‰£¦‹®L@ |
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: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281:
| unit UFalterCrypt;
interface
procedure EnCrypt(var S: String; const PW: String; const D: Integer); procedure DeCrypt(var S: String; const PW: String; const D: Integer); function PWSum(const PW: String): Int64;
implementation
procedure EnCrypt(var S: String; const PW: String; const D: Integer); var i, L1, L2, LS: Integer; T: Int64; begin L1 := Length(S); L2 := Length(PW); if L1 <= L2 then LS := L1 else LS := L2; for i := 1 to LS do begin T := Byte(S[i]) + Byte(PW[i]) + D; T := T mod 255; S[i] := Chr(T); end; end;
procedure DeCrypt(var S: String; const PW: String; const D: Integer); var I, L1, L2, LS: Integer; T: Int64; begin L1 := Length(S); L2 := Length(PW); if L1 <= L2 then LS := L1 else LS := L2; for i := 1 to LS do begin T := Byte(S[i]) - Byte(PW[i]) - D; while T < 0 do inc(T, 255); S[i] := Chr(T); end; end;
function PWSum(const PW: String): Int64; var i: Integer; begin Result := 0; for i := 1 to Length(PW) do if i Mod 2 = 0 then inc(Result, Byte(PW[i])) else dec(Result, Byte(PW[i])); end;
end.
unit UCrypt;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, FileCtrl, ComCtrls;
type TForm1 = class(TForm) GroupBox1: TGroupBox; Label1: TLabel; Button1: TButton; OpenDialog1: TOpenDialog; GroupBox2: TGroupBox; Label2: TLabel; Edit1: TEdit; Label3: TLabel; Edit2: TEdit; GroupBox3: TGroupBox; Button2: TButton; Button3: TButton; Button4: TButton; GroupBox4: TGroupBox; ProgressBar1: TProgressBar; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private Abbrechen: Boolean; procedure AddProgress(const A: Int64); function Check: Boolean; public end;
var Form1: TForm1;
implementation
{$R *.dfm} {$R XPManifest.res}
uses UFalterCrypt;
procedure TForm1.AddProgress(const A: Int64); var X: Integer; begin X := ProgressBar1.Position + A; Label4.Caption := FloatToStrF(X * 100 / ProgressBar1.Max, ffFixed, 4, 1) + ' %'; ProgressBar1.Position := X; Application.ProcessMessages; end;
function TForm1.Check: Boolean; begin if not FileExists(OpenDialog1.FileName) then begin Application.MessageBox('Sie müssen eine existierende Datei wählen!', 'Dateifehler', MB_OK + MB_ICONSTOP); Result := false; exit; end; if Edit1.Text <> Edit2.Text then begin Application.MessageBox('Das Passwort wurde nicht korrekt bestätigt.', 'Passwortfehler', MB_OK + MB_ICONINFORMATION); Edit2.SetFocus; Result := false; exit; end; if Edit1.Text = '' then begin Application.MessageBox('Das Passwort darf nicht leer sein', 'Passwortfehler', MB_OK + MB_ICONINFORMATION); Edit1.SetFocus; Result := false; exit; end; Button1.Enabled := false; Button2.Enabled := false; Button3.Enabled := false; Button4.Enabled := true; Edit1.Enabled := false; Edit2.Enabled := false; Result := true; end;
procedure TForm1.Button1Click(Sender: TObject); begin if OpenDialog1.Execute then Label1.Caption:=MinimizeName(OpenDialog1.FileName, Label1.Canvas, Label1.Width); end;
procedure TForm1.Button4Click(Sender: TObject); begin Abbrechen := true; end;
procedure TForm1.Button2Click(Sender: TObject); var Stream: TFileStream; PW: String; PWLength, LastLength: Integer; Pos, Durchl, ps: Int64; Bytes: String; begin if not Check then exit; ProgressBar1.Position := 0; Application.ProcessMessages; Abbrechen := false; PW := Edit1.Text; PWLength := Length(PW); Pos := 0; Durchl := 0; ps := PWSum(PW); Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenReadWrite); try ProgressBar1.Max := Stream.Size; SetLength(Bytes, PWLength); while Stream.Size - Pos >= PWLength do begin Stream.Read(Bytes[1], PWLength); EnCrypt(Bytes, PW, Durchl); AddProgress(PWLength); Stream.Seek(Pos, soFromBeginning); Stream.Write(Bytes[1], PWLength); inc(Pos, PWLength); inc(Durchl, ps); Application.ProcessMessages; if Abbrechen then exit; end; LastLength := Stream.Size - Pos; if LastLength = 0 then exit; SetLength(Bytes, LastLength); Stream.Read(Bytes[1], LastLength); EnCrypt(Bytes, PW, Durchl); ProgressBar1.Position := ProgressBar1.Max; Label4.Caption := '100,0 %'; Application.ProcessMessages; Stream.Seek(Pos, soFromBeginning); Stream.Write(Bytes[1], LastLength); finally Stream.Free; Button1.Enabled := true; Button2.Enabled := true; Button3.Enabled := true; Button4.Enabled := false; Edit1.Enabled := true; Edit2.Enabled := true; end; end;
procedure TForm1.Button3Click(Sender: TObject); var Stream: TFileStream; PW: String; PWLength, LastLength: Integer; Pos, Durchl, ps: Int64; Bytes: String; begin if not Check then exit; ProgressBar1.Position := 0; Application.ProcessMessages; Abbrechen := false; PW := Edit1.Text; PWLength := Length(PW); Pos := 0; Durchl := 0; ps := PWSum(PW); Stream := TFileStream.Create(OpenDialog1.FileName, fmOpenReadWrite); try ProgressBar1.Max := Stream.Size; SetLength(Bytes, PWLength); while Stream.Size - Pos >= PWLength do begin Stream.Read(Bytes[1], PWLength); DeCrypt(Bytes, PW, Durchl); AddProgress(PWLength); Stream.Seek(Pos, soFromBeginning); Stream.Write(Bytes[1], PWLength); inc(Pos, PWLength); inc(Durchl, ps); Application.ProcessMessages; if Abbrechen then exit; end; LastLength := Stream.Size - Pos; if LastLength = 0 then exit; SetLength(Bytes, LastLength); Stream.Read(Bytes[1], LastLength); DeCrypt(Bytes, PW, Durchl); ProgressBar1.Position := ProgressBar1.Max; Label4.Caption := '100,0 %'; Application.ProcessMessages; Stream.Seek(Pos, soFromBeginning); Stream.Write(Bytes[1], LastLength); finally Stream.Free; Button1.Enabled := true; Button2.Enabled := true; Button3.Enabled := true; Button4.Enabled := false; Edit1.Enabled := true; Edit2.Enabled := true; end; end;
end. |
Hab mir noch keine Zeit zum optimieren genommen...
PS: Hoffe, ihr braucht die dpr nicht :D
Moderiert von
Peter Lustig: Quote- durch Code-Tags ersetzt, um scrolling zu aktivieren
Motzi - Fr 11.06.04 17:29
Post den Chiffre-Text lieber im Hex-Format... werd mir das genauer anschaun wenn ich genug Zeit dazu find..!
raziel - Fr 11.06.04 17:46
FAlter hat folgendes geschrieben: |
PS: Hoffe, ihr braucht die dpr nicht :D |
Hab se schon, dank exe2dpr ;-)
FAlter - Fr 11.06.04 17:58
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: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607: 608: 609: 610: 611: 612: 613: 614: 615: 616: 617: 618: 619: 620: 621: 622: 623: 624: 625: 626: 627: 628: 629: 630: 631: 632: 633: 634: 635: 636: 637: 638: 639: 640: 641: 642: 643: 644: 645: 646: 647: 648: 649: 650: 651: 652: 653: 654: 655: 656: 657: 658: 659: 660: 661: 662: 663: 664: 665: 666: 667: 668: 669: 670: 671: 672: 673: 674: 675: 676: 677: 678: 679: 680: 681: 682: 683: 684: 685: 686: 687: 688: 689: 690: 691: 692: 693: 694: 695: 696: 697: 698: 699: 700: 701: 702: 703: 704: 705: 706: 707: 708: 709: 710: 711: 712: 713: 714: 715: 716: 717: 718: 719: 720: 721: 722: 723: 724: 725: 726: 727: 728: 729: 730: 731: 732: 733: 734: 735: 736: 737: 738: 739: 740: 741: 742: 743: 744: 745: 746: 747: 748: 749: 750: 751: 752: 753: 754: 755: 756: 757: 758: 759: 760: 761: 762: 763: 764: 765: 766: 767: 768: 769: 770: 771: 772: 773: 774: 775: 776: 777: 778: 779: 780: 781: 782: 783: 784: 785: 786: 787: 788: 789: 790: 791: 792: 793: 794: 795: 796: 797: 798: 799: 800: 801: 802: 803: 804: 805: 806: 807: 808: 809: 810: 811: 812: 813: 814: 815: 816: 817: 818: 819: 820: 821: 822: 823: 824: 825: 826: 827: 828: 829: 830: 831: 832: 833: 834: 835: 836: 837: 838: 839: 840: 841: 842: 843: 844: 845: 846: 847: 848: 849: 850: 851: 852: 853: 854: 855: 856: 857: 858: 859: 860: 861: 862: 863: 864: 865: 866: 867: 868: 869: 870: 871: 872: 873: 874: 875: 876: 877: 878: 879: 880: 881: 882: 883: 884: 885: 886: 887: 888: 889: 890: 891: 892: 893: 894: 895: 896: 897: 898: 899: 900: 901: 902: 903: 904: 905: 906: 907: 908: 909: 910: 911: 912: 913: 914: 915: 916: 917: 918: 919: 920: 921: 922: 923: 924: 925: 926: 927: 928: 929: 930: 931: 932: 933: 934: 935: 936: 937: 938: 939: 940: 941: 942: 943: 944: 945: 946: 947: 948: 949: 950: 951: 952: 953: 954: 955: 956: 957: 958: 959: 960: 961: 962: 963: 964: 965: 966: 967: 968: 969: 970: 971: 972: 973: 974: 975: 976: 977: 978: 979: 980: 981: 982: 983: 984: 985: 986: 987: 988: 989: 990: 991: 992: 993: 994: 995: 996: 997: 998: 999: 1000: 1001: 1002: 1003: 1004: 1005: 1006: 1007: 1008: 1009: 1010: 1011: 1012: 1013: 1014: 1015: 1016: 1017: 1018: 1019: 1020: 1021: 1022: 1023: 1024: 1025: 1026: 1027: 1028: 1029: 1030: 1031: 1032: 1033: 1034: 1035: 1036: 1037: 1038: 1039: 1040: 1041: 1042: 1043: 1044: 1045: 1046: 1047: 1048: 1049: 1050: 1051: 1052: 1053: 1054: 1055: 1056: 1057: 1058: 1059: 1060: 1061: 1062: 1063: 1064: 1065: 1066: 1067: 1068: 1069: 1070: 1071: 1072: 1073: 1074: 1075: 1076: 1077: 1078: 1079: 1080: 1081: 1082: 1083: 1084: 1085: 1086: 1087: 1088: 1089: 1090: 1091: 1092: 1093: 1094: 1095: 1096: 1097: 1098: 1099: 1100: 1101: 1102: 1103: 1104: 1105: 1106: 1107: 1108: 1109: 1110: 1111: 1112: 1113: 1114: 1115: 1116: 1117: 1118: 1119: 1120: 1121: 1122: 1123: 1124: 1125: 1126: 1127: 1128: 1129: 1130: 1131: 1132: 1133: 1134: 1135: 1136: 1137: 1138: 1139: 1140: 1141: 1142: 1143: 1144: 1145: 1146: 1147: 1148: 1149: 1150: 1151: 1152: 1153: 1154: 1155: 1156: 1157: 1158: 1159: 1160: 1161: 1162: 1163: 1164: 1165: 1166: 1167: 1168: 1169: 1170: 1171: 1172: 1173: 1174: 1175: 1176: 1177: 1178: 1179: 1180: 1181: 1182: 1183: 1184: 1185: 1186: 1187: 1188: 1189: 1190: 1191: 1192: 1193: 1194: 1195: 1196: 1197: 1198: 1199: 1200: 1201: 1202: 1203: 1204: 1205: 1206: 1207: 1208: 1209: 1210: 1211: 1212: 1213: 1214: 1215: 1216: 1217: 1218: 1219: 1220: 1221: 1222: 1223: 1224: 1225: 1226: 1227: 1228: 1229: 1230: 1231: 1232: 1233: 1234: 1235: 1236: 1237: 1238: 1239: 1240: 1241: 1242: 1243: 1244: 1245: 1246: 1247: 1248: 1249: 1250: 1251: 1252: 1253: 1254: 1255: 1256: 1257: 1258: 1259: 1260: 1261: 1262: 1263: 1264: 1265: 1266: 1267: 1268: 1269: 1270: 1271: 1272: 1273: 1274: 1275: 1276: 1277: 1278: 1279: 1280: 1281: 1282: 1283: 1284: 1285: 1286: 1287: 1288: 1289: 1290: 1291: 1292: 1293: 1294: 1295: 1296: 1297: 1298: 1299: 1300: 1301: 1302: 1303: 1304: 1305: 1306: 1307: 1308: 1309: 1310: 1311: 1312: 1313: 1314: 1315: 1316: 1317: 1318: 1319: 1320: 1321: 1322: 1323: 1324: 1325: 1326: 1327: 1328: 1329: 1330: 1331: 1332: 1333: 1334: 1335: 1336: 1337: 1338: 1339: 1340: 1341: 1342: 1343: 1344: 1345: 1346: 1347: 1348: 1349: 1350: 1351: 1352: 1353: 1354: 1355: 1356: 1357: 1358: 1359: 1360: 1361: 1362: 1363: 1364: 1365: 1366: 1367: 1368: 1369: 1370: 1371: 1372: 1373: 1374: 1375: 1376: 1377: 1378: 1379: 1380: 1381: 1382: 1383: 1384: 1385: 1386: 1387: 1388: 1389: 1390: 1391: 1392: 1393: 1394: 1395: 1396: 1397: 1398: 1399: 1400: 1401: 1402: 1403: 1404: 1405: 1406: 1407: 1408: 1409: 1410: 1411: 1412: 1413: 1414: 1415: 1416: 1417: 1418: 1419: 1420: 1421: 1422: 1423: 1424: 1425: 1426: 1427: 1428: 1429: 1430: 1431: 1432: 1433: 1434: 1435: 1436: 1437: 1438: 1439: 1440: 1441: 1442: 1443: 1444: 1445: 1446: 1447: 1448: 1449: 1450: 1451: 1452: 1453: 1454: 1455: 1456: 1457: 1458: 1459: 1460: 1461: 1462: 1463: 1464: 1465: 1466: 1467: 1468: 1469: 1470: 1471: 1472: 1473: 1474: 1475: 1476: 1477: 1478: 1479: 1480: 1481: 1482: 1483: 1484: 1485: 1486: 1487: 1488: 1489: 1490: 1491:
| 0E 0C A5 FE FA EA 13 E7 E3 A6 D0 E0 F1 E2 D4 D3 DB C2 97 C1 AE C6 4C BB C8 B4 55 AB AD A1 B4 52 85 9F 92 94 A0 90 2D 91 7D 72 99 2A 5E 77 73 5E 85 16 46 68 55 4A 71 47 3F F2 E6 17 4C 41 30 47 37 24 F6 1E 12 23 28 0E 36 C5 E4 1C 10 FB 21 F2 ED 03 FC E1 06 E2 E0 E6 EB 8C E7 D7 BF D2 CC 4F E4 BE AB BE BE 64 A2 A2 A4 AA A5 95 B8 5B 29 3B 69 88 A9 39 49 92 88 77 94 25 58 72 65 67 73 63 00 48 5B 46 6E 54 2D 53 3D EB 4D 32 24 41 E3 1E CE 27 C3 23 15 08 23 C0 D3 06 10 F4 13 AC DF F9 EC EE FA EA 87 CF E2 CD F5 DB B4 DA C4 60 77 B4 A4 C6 B5 A4 C7 A5 92 A5 63 4B A9 8D 89 4C 87 80 96 34 58 8A 77 68 7F 65 61 76 60 52 71 60 40 10 4B 40 67 F7 0B 3D 47 2C 4A E3 15 2D 32 1C 41 2A 13 E1 B7 A8 FD 0F AA 09 0A FE C4 D0 DE F9 E7 E4 B0 D8 D4 E3 CF D7 DE D3 7A 83 BC B3 D4 B4 9F B1 AF A1 74 AD 8F A0 9E 8B 60 76 7B 8A 86 77 9E 84 6C 7A 7D 69 87 6B 53 64 64 0A 68 50 3B 5E 47 48 FC DC 15 46 34 36 53 20 20 28 D9 1D 2C 10 0C CE F9 FE 1D 03 EA BA F5 EE 05 F5 D6 F8 9D C4 FA D4 D1 E9 CA CF DC 7A C3 D3 75 AE D5 B9 A9 AF AD A1 B4 A0 4F 56 80 8A A0 3E 71 1F 8B 73 8C 78 06 18 66 6E 76 5E 05 45 60 55 68 47 3F 06 41 36 5E ED 0D 44 38 24 49 1B 16 2B 1A 1C E2 15 F8 0F 13 B4 03 F6 E9 02 F1 EE BA E1 CD F7 E7 DA A6 CE CA E0 D8 BD DE C1 A9 C7 7C 64 D3 AE 3D 4F AF 99 AF 4D 96 A6 48 72 9B 8B 7B 80 7C 6D 90 70 59 77 2E 14 64 60 52 15 42 45 6C 48 2D 56 3E EB 55 2D 1D 3F E3 0E 37 27 11 22 15 18 33 0F F6 C4 00 F8 0F 00 E0 03 94 85 E8 E7 CD F0 EA C8 F3 C9 73 D7 C3 B8 DF 70 93 B9 B4 AB BE AA 4B A4 A0 90 B8 8D 89 4C 76 86 97 88 7A 79 81 68 3D 69 62 78 1B 30 6B 5F 4B 62 48 3E 5D 3D E6 49 3C 3B 01 28 18 35 CB BC 0E 25 13 23 1D BE 1E 0E 02 9C 05 FD 08 EF EA B9 8F 80 D2 D8 CB 97 D2 C7 EE 7F A5 C8 C3 C2 CD BD A1 B0 A8 9F 74 9B 8F A0 A5 8B B2 43 65 96 84 86 A3 70 70 78 2A 6D 7C 60 5C 1F 5B 53 72 4C 43 0B 36 3B 59 3F E1 3B 37 27 4F 24 20 CF C3 01 37 11 0E 26 07 0C 19 B6 EE 0E 06 A5 04 EB D6 F9 E2 E3 AB C2 C2 EA DD 7D D8 C6 BC 7E A8 AC CB B8 9E B0 B5 A8 C3 2F 84 A1 4D 90 9F 83 7F 42 5D 6E 9B 6F 62 1B 0F 70 78 5F 59 5F 63 5F 74 49 36 48 42 3F 19 DA C6 25 32 22 F6 2D 12 2C 19 C8 25 0B 07 0F 04 FC 23 FA E7 0A B8 A0 01 DE D8 ED EB 8C EA D2 BD 8D B7 C7 D8 C9 BB BA C2 A9 7E A5 99 AA AF 50 BF 9B 90 96 9A 8F AA 16 7C 97 88 34 2F 0F 58 72 65 14 54 66 4E 60 60 49 69 4B 2D 4D 41 40 CA 3D D7 31 29 2A F1 08 13 1F 24 1B 1F 13 F4 C4 00 05 1C EF E3 B0 EC E9 0A EF CC E0 D8 D9 A1 D7 B8 D4 C1 C6 E1 5D 49 B9 BD B2 CD A1 97 AC AB 90 65 97 7B 91 95 37 AB 89 76 FC 83 7D 89 69 52 6C 1B 54 7B 63 4A 62 49 40 63 3D E6 2C 3F 3C 48 2D 21 3B DE 2D 42 CF 04 26 22 04 22 10 EF 12 05 B8 B1 91 B8 F0 EB 96 F5 DC D0 DC DB 82 F6 D4 C1 48 CE C8 D4 B4 9D B7 66 9F C6 AE 95 AD 94 8B AE 88 7F 47 6E 7E A1 76 67 81 2A 65 7D 67 5E 64 64 0A 7E 5C 49 CF 56 50 5C 3C 25 3F ED 26 45 24 BA CC 1E 0F 2E A7 0C CE 0C FE 27 0B EC 00 FD EA 07 F6 D6 F4 9D C3 F0 D5 C2 DE D7 8B 84 64 8D C3 C7 69 A4 BB A9 B9 B3 55 B3 9B 86 A9 92 94 5B 6E 7F 91 80 7F 88 77 66 73 78 19 7B 57 4B 6E 56 59 1F 50 3A 49 45 45 0B 34 B9 44 E8 10 3A 22 8D 22 1A 17 E2 07 03 B6 AA E7 1E F7 F4 C2 AC EF FE E2 DE A1 C0 CD F8 CD CF CE D6 BD 92 C4 A8 BE C2 64 B4 A6 A2 B2 33 97 AF 9B 8F A4 8B 84 1B 7D 6D 8B 40 28 86 6E 59 29 64 69 80 54 48 15 50 41 6D E9 D5 23 3D 3A 5B 3D 32 32 32 D7 36 1A 17 D8 00 16 2D 08 02 06 09 FC 1D AC E0 FE FB EE 0A DD CF E1 E1 93 A1 C9 C6 88 D2 B8 D6 70 A3 B9 B9 AD 85 5C 8F A9 9C 9E AA 48 79 91 95 8C 99 79 71 25 19 64 92 66 0F 69 64 5D 6E 59 FA 57 59 4A 57 F7 2D 3D 3B 39 4D A8 26 3B 28 1A 32 1E BE 23 0F 04 2B BB 01 0F 09 FD 89 FB F0 F7 EB D9 F8 D8 D0 97 B6 C3 EA C3 B3 CF C8 6E CC B0 AD 5C 50 7B C9 AB 95 AD A5 52 60 96 77 90 8C 77 9E 2F 43 85 70 FA 84 67 51 64 5E 53 70 4D 3B 59 02 45 54 38 34 F6 41 27 45 2D 13 35 D9 15 2D 1E FE 23 20 06 1D F9 ED 00 00 92 A9 D8 D6 F8 F1 E3 F0 E2 C2 E4 97 6A 81 A0 46 D0 75 9C C6 AE 1A AE A6 A3 6F 93 8F 56 91 86 AD 3E 54 87 8C 82 95 6E 61 73 6E 6D 3F 16 49 5F 5E 05 4A D8 43 56 42 43 0B 3D 21 37 3B DC 3B 1F 16 DD 01 0E 25 0B 03 C9 05 F9 22 9E 8A E3 02 F4 15 E2 DE F4 98 D4 E7 CF CC D2 D8 78 D6 BA B6 79 91 B9 D2 B0 A2 65 B1 9E AF 96 8A 98 8D 8F 99 81 7A 02 82 73 96 33 14 4E 62 59 7C 64 4F 15 54 41 60 51 31 55 F7 31 58 D5 C1 33 C0 2A F1 19 0D 1E CF F9 23 13 FB 0A 10 0A 1F FA E2 B0 FD EA 04 98 B7 E2 DF D0 E4 CC C7 CD CD 7F 8D B4 A8 B9 6B B9 CE AE 4B 85 A9 9D AA 91 7A 94 98 85 98 34 67 7D 82 10 27 56 54 76 6F 61 6A 53 4E 6A 5E 40 58 43 2C 4F F2 3D 50 32 D2 2A 24 26 3C 1E 03 19 1D 04 2B BB CC 05 FA EF 1A FB EB F9 E9 96 04 DC D0 DB 7B 6C A4 AA AF D5 BE B7 D6 AC A6 C2 B6 A0 C0 A0 89 A3 A6 8B AE 4C 40 |
Anonymous - Fr 11.06.04 18:38
Hilfe! Mein Mozilla produziert irgendwas, aber keinen vernünftigen Thread :mrgreen:
FAlter - Mo 19.07.04 20:16
Motzi hat folgendes geschrieben: |
Vorschlag @ FAlter: du postest deinen Code und einen ~400 Zeichen langen verschlüsselten Text (ohne Passwort) und ich leg dir den entschlüsselten Text plus Passwort vor..! Musst mir nur ein paar Tage Zeit geben weil ich momentan Uni-bedingt nicht so viel Zeit hab... |
Da es scheinbar doch etwas länger dauert:
1. Ich habe anstelle auf "Verschlüsseln" aus "Entschlüsseln" geklickt. Also zum Entschlüsseln Verschlüsseln verwenden.
2. Das Original was
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:
| Zu dieser Software gehören alle dieser oder einer anderen Fassung dieses Programmpaketes angehörigen Dateien. Als Autor dieser Software gilt für jede Datei dieser Software derjenige, der die Urheberrechte der Datei besitzt. Es ist Ihnen erlaubt, beliebig viele Sicherungskopien dieser Software oder Teile dieser Software zu erstellen. Sie dürfen auch Kopien des Programmes oder Teilen davon erstellen, um sie zu Verschenken. Vor Verkauf oder Vermietung dieser Software oder Teilen dieser Software ist Absprache mit dem Autor erwünscht. Bei der Weitergabe dieser Software oder einem Teil dieser Software ist dieser Text als Schriftstück oder Datei weiterzugeben. Sie sind berechtigt, falls die Software dies unterstützt, die Funktionalität der Software durch entweder selbst erstellte oder zusätzlich erworbene Plugins zu erweitern. Bei einem zusätzlich erworbenem Plugin gelten zusätzlich die dafür festgelegten Regeln. Der Autor dieses Programmes haftet nicht für Schäden an Soft- oder Hardware oder Vermögensschäden, die durch das Benutzen des Programms entstehen, es sei denn, diese beruhen auf einem grob fahrlässigen oder vorsätzlichen Handeln des Autors, seiner Erfüllgehilfen oder seiner gesetzlichen Vertreter. Für Schäden an der Gesundheit, dem Körper oder dem Leben des Nutzers haftet der Autor uneingeschränkt. Ebenso haftet er für die Verletzung von Pflichten, die zur Erreichung des Vertragszweckes von besonderer Bedeutung sind (Kardinalspflichten). |
3. Wie heißt das Passwort?
Motzi - Sa 24.07.04 11:35
Sorry... hatte vorher uni-bedingt überhaupt keine Zeit und im Moment bin ich im Krankenhaus und hab nur jetzt an Wochenende Ausgang.. ich bin bis jetzt noch überhaupt nicht dazu gekommen mir das auch nur für 10min anzuschaun..!
Aber ich versprech dir das werd ich noch machen wenn ich dazu komm..!!
raziel - Sa 24.07.04 19:22
Wo kam denn der letzte FAlter-Post her? Na gut, das is jetz nich mehr schwer... Lösung per PN an FAlter, damit den anderen noch ein Rätselspaß bleibt ;-)
raziel
Motzi - Fr 30.07.04 15:52
So.. hab diesmal gleich das ganze Wochenende Ausgang bekommen.. *freu* :)
Hab mir die Sachen letzte Woche mal auf einen Memory-Stick gespielt und am Montag Abend im Krankenhaus am Notebook angeschaut...
Mit dem Klartext war das rausfinden des Passwortes mit Hilfe eines Hex-Editors und eines Taschenrechners nur noch eine Sache von ein paar Minuten..! (Wer es wissen will - es ist "Lizenz", aber natürlich ohne die Hochkommas)
Was ich dir aber schon übel nehm ist, dass du mich/uns in die Irre führen wolltest indem du den Code nicht per Encrypt sondern per Decrypt verschlüsselt hast! :evil: Im Prinzip macht es ja keinen großen Unterschied, aber wenn ich dir schon sage du sollst mir einen verschlüsselten Text geben um dir zu zeigen, dass dein Algo nicht sicher ist, dann geh ich davon aus, dass der Text auch wirklich mit dem Algo verschlüsselt ist. Ansonsten ist das keine Ausgangsbasis für eine Kryptanalyse! Das nächste mal also bitte dazu sagen wenn du meinst solche Scherze treiben zu müssen..!
So, und als entgültigen Beweis, dass der Algo unsicher ist post einfach nochmal einen neuen Chiffre-Text (wieder ~400 Zeichen oder so) diesmal ohne Klartext und ich werd mir das ab Montag, wenn ich wieder im KH bin anschaun und dir vorraussichtlich nächstes Wochenende den entschlüsselten Text vorlegen... was haltest du davon?
FAlter - Fr 30.07.04 16:53
Irgendwas stimmt nicht?
PS: Ist 'ne Readme von 'nem älteren Programm, aber ich sag nicht, welches und in welcher Sprache. Das Passwort passt wieder zum Inhalt. Inhalt + Passwort = Text ohne Sonderzeichen.
Jetzt werde ich den Code teilen. @Mods: bitte löscht den obigen Post.
Christian S. - Fr 30.07.04 16:57
Hallo!
Bitte lade das Zeug irgendwo hoch. Es muss nicht sein, hier ein paar Tausend Zeilen reinzuposten! Da hat mein FireFox 0.9.2 sogar Anzeigeprobleme bekommen. :?
MfG
Peter
FAlter - Fr 30.07.04 17:07
Ich nehme lieber doch eine andere Datei. Mir ist eben aufgefallen, das die (Delphi 3)-Readme > 14 kB ist.
Jetzt wirds 'ne HTML mit 'nem Delphi-Code drin. (Die HTML ist nicht Formatiert, also Achtung, lieber nur im Browser ansehen!!!)
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: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307: 308: 309: 310: 311: 312: 313: 314: 315: 316: 317: 318: 319: 320: 321: 322: 323: 324: 325: 326: 327: 328: 329: 330: 331: 332: 333: 334: 335: 336: 337: 338: 339: 340: 341: 342: 343: 344: 345: 346: 347: 348: 349: 350: 351: 352: 353: 354: 355: 356: 357: 358: 359: 360: 361: 362: 363: 364: 365: 366: 367: 368: 369: 370: 371: 372: 373: 374: 375: 376: 377: 378: 379: 380: 381: 382: 383: 384: 385: 386: 387: 388: 389: 390: 391: 392: 393: 394: 395: 396: 397: 398: 399: 400: 401: 402: 403: 404: 405: 406: 407: 408: 409: 410: 411: 412: 413: 414: 415: 416: 417: 418: 419: 420: 421: 422: 423: 424: 425: 426: 427: 428: 429: 430: 431: 432: 433: 434: 435: 436: 437: 438: 439: 440: 441: 442: 443: 444: 445: 446: 447: 448: 449: 450: 451: 452: 453: 454: 455: 456: 457: 458: 459: 460: 461: 462: 463: 464: 465: 466: 467: 468: 469: 470: 471: 472: 473: 474: 475: 476: 477: 478: 479: 480: 481: 482: 483: 484: 485: 486: 487: 488: 489: 490: 491: 492: 493: 494: 495: 496: 497: 498: 499: 500: 501: 502: 503: 504: 505: 506: 507: 508: 509: 510: 511: 512: 513: 514: 515: 516: 517: 518: 519: 520: 521: 522: 523: 524: 525: 526: 527: 528: 529: 530: 531: 532: 533: 534: 535: 536: 537: 538: 539: 540: 541: 542: 543: 544: 545: 546: 547: 548: 549: 550: 551: 552: 553: 554: 555: 556: 557: 558: 559: 560: 561: 562: 563: 564: 565: 566: 567: 568: 569: 570: 571: 572: 573: 574: 575: 576: 577: 578: 579: 580: 581: 582: 583: 584: 585: 586: 587: 588: 589: 590: 591: 592: 593: 594: 595: 596: 597: 598: 599: 600: 601: 602: 603: 604: 605: 606: 607: 608: 609: 610: 611: 612: 613: 614: 615: 616: 617: 618: 619: 620: 621: 622: 623: 624: 625: 626: 627: 628: 629: 630: 631: 632: 633: 634: 635: 636: 637: 638: 639: 640: 641: 642: 643: 644: 645: 646: 647: 648: 649: 650: 651: 652: 653: 654: 655: 656: 657: 658: 659: 660: 661: 662: 663: 664: 665: 666: 667: 668: 669: 670: 671: 672: 673: 674: 675: 676: 677: 678: 679: 680: 681: 682: 683: 684: 685: 686: 687: 688: 689: 690: 691: 692: 693: 694: 695: 696: 697: 698: 699: 700: 701: 702: 703: 704: 705: 706: 707: 708: 709: 710: 711: 712: 713: 714: 715: 716: 717: 718: 719: 720: 721: 722: 723: 724: 725: 726: 727: 728: 729: 730: 731: 732: 733: 734: 735: 736: 737: 738: 739: 740: 741: 742: 743:
| 84 8A B7 C3 B2 BB CB B1 B2 8D 99 C6 C9 C9 98 C0 D0 AC C2 BF 9D 9B A7 B3 B0 A8 DB A6 C2 AE 92 C8 E2 D3 AA CA E1 C9 D4 A8 A0 BB C7 C9 B3 DF 09 E6 FF 05 DE 0B 0A 11 0B F5 0C BD C9 DF CC C1 C9 CC 0E 12 1D 08 DD D2 B6 20 2A 2B DC 1E E4 CE 1C 1F F7 E0 10 0F E6 18 2F 17 22 E9 C8 27 34 35 34 1E F1 17 33 23 C4 02 D7 0B 32 36 3A 28 06 04 14 32 38 3C 11 07 4A 2E 45 3D 1A 14 25 4A 4A F3 27 37 4D 4E 2D 46 5B 4B 52 4A 08 40 51 03 2C 51 60 58 0E 36 52 49 5A 60 32 60 73 1C 71 54 63 4C 5D 63 3E 68 40 34 74 61 77 5E 63 3C 1E 70 72 82 6A 21 7A 5C 74 6C 28 2E 77 8C 86 72 84 76 32 30 57 84 8D 94 80 81 92 4A 3B 5F 62 8A 91 A1 46 5A 31 52 8F 87 7A 88 51 A0 8E 92 95 5C 4D 96 74 A9 B1 AA A8 92 AC 4A 54 97 87 A7 B7 A9 AD AB 7F 53 83 A2 8D AB C4 79 89 AC BF 9F B8 72 6E B0 C1 C6 B9 B2 80 97 B8 BF A3 80 B2 D1 C3 B5 C8 78 A0 C1 AF D1 D6 CF D5 BC D3 C2 8D A8 B7 C7 D6 DA D7 90 B3 C7 CB D1 C0 D0 E6 E7 A1 B5 DD D3 DF DC BE E3 E7 EC F2 A2 C3 D9 F0 E9 C1 F1 B7 E0 C9 E8 FE E6 E6 F5 8B C8 9E D1 FD ED 08 E3 AE F6 E6 08 0E CB FE 03 12 F4 0E D4 9D FF 16 16 17 FF 14 09 CD 15 FD 16 15 D2 CB 07 1E 0C 1E 0F FB 23 F5 DB 29 12 30 1B E1 1B 0B 25 2E FD DD 19 29 11 2E 2F 05 35 08 35 3A 2E F6 F0 FC F9 E1 F6 05 F6 0E 04 02 2A 33 2F 16 11 E6 1A 3B 40 40 44 F6 39 22 3F 55 53 51 4C 22 F5 03 23 07 28 32 33 2E 05 0E 51 4E 61 41 2B 1A 1C 24 1C 27 16 22 22 F7 17 6D 6B 6B 60 3D 11 1E 2B 0F 30 3A 51 4C 20 29 6E 70 6D 56 74 50 36 32 4D 58 31 3D 53 37 34 5A 59 80 42 59 4F 7F 84 1A 63 8E 99 95 88 8B 85 80 8C 70 44 97 9D 4A 87 96 8A 8D 48 5C 8E A0 A6 A7 8D A5 9D 51 AB 7A 9F A3 A9 AA 99 AD 6A 69 A2 50 7D 53 86 AD AF 68 A5 B2 B6 8F A9 B6 B8 6E B9 BA BA B1 89 52 82 7D 7C 86 8D 96 AC C4 B9 9E 98 A0 C7 9E C8 D5 C1 C1 C3 A6 D8 DF D3 A5 90 CE 99 87 BB 98 CD DF E5 B8 D9 E7 D1 9E C0 B5 DE ED F4 BD E2 F6 9E C9 DA C6 EC FC B1 D7 E1 F5 DA E7 F4 A0 A7 E5 E1 EF EF F5 E2 FF B4 AA CC FC 0E B6 BD D7 C4 F6 D2 EC 13 14 0A DB C6 05 CF D9 FF F3 C2 DB EB CE 0F 0E 0E 17 E1 94 FB 1F 2F F2 1C 27 05 29 CF D0 D4 FA 22 F8 F3 30 1F 1A 32 D8 EC 2A 07 1F EB F4 E3 F3 1F C5 03 33 10 3C 2B 0C ED 2D 09 CE 12 53 4F 3B 09 F8 04 3D 12 E6 08 3E 14 3C F6 1F F0 1F 49 22 57 19 28 08 3B 1C 37 06 23 E9 32 67 1C 66 5E 61 4F 2A 5D FF 2F 1E 5A 2C 4F 1D 29 18 4A 4B 71 7E 6D 75 6F 42 57 73 21 14 44 4C 40 75 42 4B 60 48 6D 5D 7D 8C 8E 51 3C 7A 45 4F 75 69 38 51 61 44 84 83 83 8C 57 0A 63 A0 92 6F 84 93 80 8D 99 29 67 54 6A 60 63 53 42 6A 97 50 62 6C A4 5F A6 B1 98 A3 72 8D 5C 8D AC B5 9D AD AB A9 AE 88 AE B6 BB B0 AC C2 6C 9A BE 8E BA C1 CD 7A AD CC B3 BE 8D AA 93 90 CB 9B 91 C2 C1 7B 8A 7D 9C CC A9 DC BF DB 94 93 C6 86 A5 D5 E6 8F 96 B0 87 DB CF C4 E2 B7 A3 E6 D2 EE DA B1 B8 CF E1 EB EB F3 B3 A4 C7 C1 E8 D7 F1 EF FF C5 BE EF EE A8 B7 AA B3 06 FA 07 FB D1 8F D2 FF EF F7 09 0E 02 03 D9 AE D6 FC BC 01 1C 1D 07 17 E4 C6 06 E1 E2 D8 E0 E1 E0 DB E6 FD CC E8 F2 EF 2B 23 F3 DE 1D E7 D5 F8 FA 2D 29 2F 2F 1A 30 ED FA 21 15 E3 FC 0D EF 30 2F 2F 38 03 D1 3B 39 4B 43 06 3E F0 F0 48 E0 F5 54 1B FB 1D 4D 42 3F 41 23 51 24 26 47 4F 08 06 21 09 35 4A 65 63 29 0C 5F 42 5F 5C 0B 41 35 1C 55 3F 63 61 36 67 4B 5B 7D 40 3C 5A 75 12 2D 3C EB 29 7B 70 7C 71 47 21 75 69 5E 7C 51 7D 73 75 41 24 82 75 57 7D 59 40 60 8B 92 72 87 7D 62 82 63 65 86 8E 47 45 60 5E 68 65 93 97 94 8E 9E 5B 5A 8D 4D 6C 9C AD 56 5D 77 64 9D 72 3E A7 A5 B7 AF 72 68 9F 9F B0 91 7D 7B 7C 89 AE BE AE AB B2 96 B0 75 CC C0 B7 74 96 B4 BB 99 82 AE C8 BD C6 D2 BE BD 78 A7 BE D5 D6 83 A4 D3 B6 C8 C6 9D 94 C0 DA CF D8 E4 D0 CF 74 C4 D4 EB F1 DA DB DC CC E7 93 CE DD F4 E7 E3 E4 BD D2 EE 9C 8F BF C7 EE F9 9F B9 B7 AB F3 CB FD 05 D0 B6 F6 F5 F5 FE C9 A1 C2 ED 11 BF 07 12 F8 04 D2 E1 02 15 D3 C2 0A 08 B4 E2 0A F0 0A CF 12 21 07 17 BD EB 13 02 1C 1A 2A D4 16 2B 1B DE D2 0E 1D 30 31 DD E6 F0 DF E0 25 07 E0 3E 35 2A 27 2F 2B F0 E4 14 2B 42 43 EF 2C 3C 27 ED F3 07 48 4A 4A 14 33 41 3D 47 49 E0 51 5B 54 4E 15 4B 49 4E 47 FF 47 61 10 1A 21 F7 03 57 4B 40 5E 33 1F 62 4E 6A 56 2D 21 05 6E 66 69 63 56 6C 5B 60 69 1B 62 7C 2B 35 3C 45 27 6D 42 0E 77 75 87 7F 42 38 6F 6F 80 61 4D 58 7F 56 79 81 2A 84 85 6E 57 54 88 5F 39 4C 5B 88 92 77 93 95 A1 8B 8F 9A 4D 56 6B 74 92 9A A3 98 8F 56 61 93 6F 76 A4 A4 7D 6B 96 7D 4E 62 76 80 7D 9C AF B1 A3 84 66 A5 81 55 98 BB B6 C2 BB C3 A5 7A 93 A2 B2 CB C4 C0 B2 7A B2 C8 5F 8D 9C CD D9 CD B9 D3 7B 7E 9A A4 A1 CE DC CD 9D 9B BD A5 A3 AD DE 96 A6 B0 90 E3 C6 E3 E0 8F 9B ED E2 EE E3 B9 93 E7 DB D0 EE C3 AF F2 DE FA E6 BD AA A2 E9 CF E5 F2 F1 F6 BB BA ED AD BE EA 05 F9 03 0F FA F9 C2 BA 03 18 12 01 08 D0 E1 07 16 E6 0F F2 1D 1B 0E 0D 0F C6 E3 AA 1C 1C E8 E5 0C 1E 18 D8 D8 B3 F0 21 FD 2F 1B 23 1B F4 E7 FE FB E7 2E 3C 25 3B F0 FD 24 18 E6 FF 10 D6 01 32 31 EA F9 EC F5 48 3D 49 3E 14 ED 42 36 2B 49 1E 20 41 15 48 40 4F 19 EF 44 2A 0D 50 FF 25 17 06 16 E9 27 57 34 65 58 30 12 51 2D F2 14 30 34 2F 12 39 4E 36 5C 4B 39 36 6A 41 37 68 67 21 30 23 2C 7E 73 7F 74 4A 24 78 6C 61 7F 54 40 83 6F 8B 77 4E 39 65 7A 95 93 59 57 8F 8A 7D 84 6C 86 99 87 8F 7C 4A 53 62 45 39 65 70 97 A2 48 62 60 6A 90 84 53 6C 7C 75 9A 7A 35 5D A5 7D AF B6 82 68 A8 A7 A7 B0 7B 53 74 A9 76 AC B8 BB A9 84 B1 99 B3 C6 85 74 C3 C0 AB 72 C1 9C CB 81 D9 C2 C1 C3 B7 C0 7B 87 C5 D6 D7 CF C5 D4 BD CD D8 BB DC E7 E9 D5 CC 92 D7 DC DF BC E1 E9 EA EC 90 A3 CB D8 E9 C9 E7 FA FA AA B5 E6 E5 9F AE A1 AA FC F1 FD F2 C8 A2 F6 EA DF FD D2 C7 C2 D3 FB F1 FD FA DC 02 06 0B 11 08 13 03 10 01 E3 BF E6 CA E9 13 1B FA 0C 17 EA 11 21 1D 23 1B BB 02 22 20 B0 04 E7 DC FE CF 30 18 1A D5 DB F6 27 38 E0 E7 02 EE ED 28 E0 E9 3C 31 3D 32 08 E1 36 2A 1F 3D 12 14 35 09 3C 34 43 0D E3 38 1E 01 44 F3 19 0B F9 0A DD 1B 4B 28 59 4C 08 2A 48 4F 2D 24 21 55 2C 14 41 49 4F 60 45 63 60 2A 3F 54 63 50 5D 69 F8 27 24 36 20 34 65 30 62 6D 1E 65 7F 2E 38 3F 32 69 69 7A 5B 47 3C 85 74 7D 85 3F 72 75 5B 7E 8D 5C 7D 85 3E 3C 57 23 39 4D 8A 67 4A 8A 89 89 92 5D 2C 95 93 A5 9D 60 56 8D 8D 9E 7F 6B 60 A9 98 A1 A9 63 84 54 52 76 63 80 A1 75 95 96 A9 A3 5D 71 AE 8B 76 90 B4 9D BA BB 9C B0 83 98 BA BD C1 A4 BF 7D 86 B7 BF CD A6 BB CB B1 B3 C0 99 98 A3 CA D5 7B 95 93 87 CF A7 D9 E0 AC 92 D2 D1 D1 DA A5 74 DD DB ED E5 A8 9E D5 D5 E6 C7 B3 BE E5 BC DC F0 E2 B8 AB C2 BF AB 04 A7 B9 C7 99 B5 C1 CB C8 9E 0A FF A8 E6 E7 FA F4 AE C2 FF DC C7 E1 06 EE 0C 0D ED 02 D4 FE 0C FE 1A FC C0 CD A4 D6 CF EC 0E E1 13 0D E5 0C FF CE E7 F7 DA 1B 1A 1A 23 ED BC 26 24 36 2E F0 E6 1E 1E 2F 10 FB F0 3A 29 32 3A F3 27 2A 10 33 42 11 32 3A F2 F0 0C 0A E0 35 1B 04 47 33 4F 3B 12 FC 29 3E 59 57 1D FF 53 36 53 50 FE 0B 5D 52 5E 53 29 03 57 4B 40 5E 33 1F 62 4E 6A 56 2D 66 F5 31 3E 0C 6D 53 5B 1F 58 1B 0A 20 7A 69 61 2F 66 18 2F 24 58 67 6E 46 6C 42 4E 63 7F 2D 20 50 42 8B 7A 83 8B 45 3C 84 5C 8E 95 61 47 87 86 86 8F 5A 29 92 90 A2 9A 5D 53 8A 8A 9B 7C 68 5D A6 95 9E A6 60 9A 9F 78 5E 81 AF B6 95 A7 9A 9F A8 79 91 B8 BF B3 A1 70 AB 63 72 47 7B 7B B0 77 81 8D A2 BE 6C 5F 8F 81 CA B9 C2 CA 84 7B C3 9B CD D4 A0 86 C6 C5 C5 CE 99 68 D1 CF E1 D9 9C 76 81 D5 C9 BE DC B1 E0 E0 CD 9D B4 99 AB 90 D7 F1 A0 AA B1 BA CF B7 9F CB E0 FB F9 BF A2 F5 D8 F5 F2 A1 AD FF F4 01 F5 CB A5 F9 ED E2 01 D5 01 05 F2 D4 C4 F6 07 98 C8 E1 CA 0E F9 16 02 D8 C3 EF 05 20 1E E3 06 1A FE E1 E2 EC 1E D5 E5 EF E5 17 16 CF DE D1 F0 ED 22 F8 D8 2C 0F 2C 29 D7 E3 36 2B 37 2C 02 F1 2B FF D4 F5 17 33 38 39 3F 31 EA 45 24 3D F9 20 48 3B 42 3C 48 39 24 47 EC 48 44 49 02 43 42 49 22 56 55 63 4D 4E 0B 22 4B 52 36 54 5C 61 56 52 68 1F 1E 58 11 30 60 71 1A 21 3B 12 66 5A 4F 6D 42 2E 71 5D 79 65 3C 67 46 71 30 4B 49 24 4B 60 48 5D 53 7B 7F 56 44 6F 56 35 63 7C 5A 8C 97 95 83 44 78 79 80 90 68 41 55 4C 63 81 68 6C 8A 91 6F 66 63 97 6E 56 83 8B 91 A2 87 A5 A2 6C 81 96 A5 92 9F AB 56 78 A8 B9 62 69 83 70 A2 B2 44 74 8D 5A 71 B1 B0 B0 B9 84 53 BC BA CC C4 87 99 BB B8 B8 9B C9 81 9C 9A 75 B4 91 C4 CF AC C1 DA 99 A9 D0 CE B9 D8 C9 83 A5 D5 E6 8F 96 B0 9D CF AB 77 E0 DE F0 E8 AB A1 D8 D8 E9 CA B6 F9 F8 FA B5 E6 E5 9F AE A1 AA FC F1 FD F2 C8 A2 F6 EA DF FD D2 BE 02 ED 0A F5 CC B7 E3 F8 14 12 D7 0C 09 03 03 D6 AD 02 E7 CA E7 13 0F FD 09 16 A7 E4 15 F1 13 16 ED 03 1F CC BF EF C5 E2 26 12 2E 1A F0 DB 08 1D 38 36 FB DE 32 15 32 2F DD E9 3C 31 3D 32 08 1E 2D 2F 15 3B 13 07 35 09 12 27 43 F0 E3 14 06 4F 3E 47 4F 09 FF 48 20 52 59 25 0B 4B 4A 4A 53 1E EC 56 54 66 5E 21 17 4E 4E 5F 40 2C 21 6A 59 62 6A 24 4C 5E 3D 6E 6C 25 3A 35 23 24 33 34 1D 23 49 77 47 30 3B 1B 57 7C 51 72 7B 89 74 7C 7A 6D 84 75 14 52 3F 61 89 8D 7F 75 85 39 61 83 9A 33 91 42 96 8B 8F 8E 41 8E 9D 9B 90 8D 95 8D 4B 71 70 A2 9C 9C 98 A1 AD 9D 9A A9 86 A0 A8 B2 7B 66 AB 6F 79 9F 93 62 7B 8B 6E AE AD AD B6 81 50 B9 B7 C9 C1 84 7A B1 B1 C2 A3 8F 84 CD BC C5 CD 87 7E C6 9E D0 D7 A3 89 C9 C8 C8 D1 9C 8D CB D9 D8 D4 D8 8F 98 A7 8A 90 E4 DF C2 DA D6 DF CF E7 AE 93 DA F4 A3 AD B4 A7 DE DE EF D0 BC B1 FA E9 F2 FA B4 AB F3 CB FD 05 D0 B6 F6 F5 F5 FE C9 7C B9 0C 01 0D 02 D7 FB 01 10 E0 09 EC 17 15 08 07 09 C0 DA C1 C5 20 17 DD D7 11 07 1E E4 C9 11 2B D9 E3 EA DD 15 15 26 07 F2 E7 31 20 29 31 EA E1 2A 02 34 3B 07 EC 2D 2C 2C 35 FF CE 38 36 48 40 03 F8 30 30 41 22 0E 19 40 17 37 4B 3D 13 06 1D 1A 06 4F 02 14 22 F3 10 FF FF 47 2D 64 5A 1F 1D 3F 27 09 FE 23 2D 19 30 4E 35 4A 61 2E 38 69 21 31 3B 1B 6E 51 6E 6B 1A 0A 30 79 68 71 79 33 2A 72 4A 7C 83 4F 35 75 74 74 7D 48 17 80 7E 90 88 4B 41 78 78 89 6A 56 4B 94 83 8C 94 4E 96 88 77 8C 6A 5E 8C 60 4D 5E 9D 8E 72 92 A9 66 76 8C A4 9B 92 A4 35 72 A2 7F A0 A3 7B 90 AC 5A 4D 7D 6F B8 A7 B0 B8 72 69 B1 89 BB C2 8E 74 B4 B3 B3 BC 87 56 BF BD CF C7 8A 80 B7 B7 C8 A9 95 8A D3 C2 CB D3 8D 84 CC A4 D6 DD A9 8F CF CE CE D7 A2 AD D1 DD E0 E0 74 B1 93 D2 AE 90 D7 F1 A0 AA B1 A4 DB DB EC CD B9 AE F7 E6 EF F7 B1 A8 F0 C8 FA 02 CD B3 F3 F2 F2 FB C6 95 FE FC 0F 07 C9 BF F6 F6 08 E8 D4 C9 13 02 0B 13 CC C3 0C E3 16 1D E8 CE 0F 0E 0E 17 E1 B0 1A 18 2A 22 E4 27 09 13 18 B3 EE FB DF FB 21 38 0E 21 25 02 2C 23 31 21 DB F5 D5 08 23 11 E6 FA F1 0F 3A 36 07 30 34 16 38 4E FA FF ED 0A F7 04 0F F3 42 21 ED 0E 06 54 36 49 3E 35 4B 62 52 08 28 50 46 52 4F 31 56 5A 5F 65 25 23 4C 2D 2B 35 66 1E 2E 38 18 6B 4E 6B 68 17 23 75 6A 76 6B 41 1B 6F 63 58 76 4B 37 7A 66 82 6E 45 30 5C 71 8C 8A 50 33 86 69 86 83 32 3E 90 85 91 86 5C 36 8A 7E 73 91 66 52 95 81 9D 89 60 4B 77 8C A7 A5 6B 75 A2 98 93 82 81 5B A5 6A 59 73 B1 91 7F 9C 84 A3 AE BB 6B 75 6B A2 A2 B3 94 80 75 BE AD B6 BE 78 53 6F 9B B0 CB C9 8F 72 C5 A8 C5 C2 71 7D CF C4 D0 C5 9B 75 C9 BD B2 D0 A5 91 D4 C0 DC C8 9F 8A B6 CB E6 E4 AA 8D E0 C3 E0 DD 8C 98 EA DF EB E0 B6 90 E4 D8 CD EB C0 AC EF DB F7 E3 BA A5 D1 E6 02 FF C5 A8 FB DE FB F8 A7 B3 06 FA 07 FB D1 AB FF F3 E8 07 DB C7 0B F6 13 FE D5 C0 EC 02 1D 1B E0 C3 17 F9 17 14 C2 CE 21 16 22 17 EC C6 1B 0F 04 22 F6 E2 26 12 2E 1A F0 F1 03 F8 CE F4 EF 1E 32 27 32 2F 15 2D 31 37 3E E1 19 25 36 31 11 3B 3F FD 42 40 43 31 0C 39 1A 12 0F 4A 1A 10 41 40 F9 09 FB 05 57 4C 58 4D 23 FC 51 45 3A 58 2D 19 5C 48 64 50 27 12 3E 53 6E 6C 32 15 68 4B 68 65 14 20 72 67 73 68 3E 18 6C 60 55 73 48 34 77 63 7F 6B 42 2D 59 6E 89 87 4D 30 83 66 83 80 2F 65 84 8E 49 56 8D 79 88 8B 1D 58 65 49 87 88 7E 7F 90 86 75 9E 85 97 A5 99 6B 5B 8D 9D 2F 5F 78 45 5C 9C 9B 9B A4 6F 3E A7 A5 B7 AF 72 68 9F 9F B0 91 7D 72 BB AA B3 BB 75 6C B4 8C BE C5 91 77 B7 B6 B6 BF 8A 59 C2 C0 D2 CA 8D 83 BA BA CB AC 98 8D D6 C5 CE D6 90 87 CF A7 D9 E0 AC B8 CD DD C3 BE D9 76 D7 A5 9A B7 E2 DE AF D8 DC BE E0 F6 A3 AB 96 C7 DC EB EB D2 A9 FD F1 EA E7 B3 A2 C0 A5 A5 F3 D2 11 BA 06 B3 B1 BD E5 D7 06 BD 03 03 F6 10 F0 06 B7 C6 FD 15 1C 08 09 D2 9E DC CF ED E3 EB 13 1E C3 DD DB CF 18 EF 22 29 F4 DA 1B 1A 1A 23 ED BC 26 24 36 2E F0 E6 1E 1E 2F 10 FB F0 3A 29 32 3A F3 EA 33 0B 3D 44 10 F5 36 35 35 3E 09 D7 41 3F 51 49 0C 02 39 39 4A 2B 17 0C 55 44 4D 55 0F 30 45 32 13 32 5F 57 52 60 FC 23 26 EC 51 64 40 66 4D 70 3A 57 6A 4A 32 27 70 5F 68 70 2A 21 69 41 73 7A 46 2C 6C 6B 6B 74 3F 0E 77 75 87 7F 42 38 6F 6F 80 61 4D 26 43 86 72 8E 7A 51 3C 68 7D 98 96 5C 3F 92 75 92 8F 3E 4A 9C 91 9D 92 68 42 96 8A 7F 9D 72 5E A1 8D A9 95 6C 6D 7E 74 BB 62 B9 54 6E 5D 81 A6 44 A0 BE B7 B1 78 BC AB B8 B1 8E BB CC CA B7 B9 B4 A8 B1 BA 5D 8D 8A C5 95 8B BC BB 75 84 77 80 D2 C7 D3 C8 9E 78 CC C0 B5 D3 A8 94 D7 C3 DF CB A2 8D B9 CE E9 E7 AD 90 E3 C6 E3 E0 8F 9B ED E2 EE E3 B9 93 E7 DB D0 EE C3 AF F2 DE FA E6 BD 8C 8C F5 F3 06 FD C0 DC E8 F9 F0 C3 FF C2 04 C2 AE DB FD FA DC DD 03 0B 0D 14 B7 CF B1 E0 03 EA 0F D4 20 0E 04 14 C3 CF E1 B0 1A 18 2A 22 E4 DA 12 12 23 04 EF FA 29 F8 2E DE 2A D8 E7 CB 31 2B 31 36 25 3B 2A E1 30 0F 2A 39 46 EC 27 42 20 40 2E 17 44 06 17 05 37 17 04 36 46 D7 08 21 0A 4D 39 55 41 18 03 2F 44 5F 5D 23 06 59 3C 59 56 05 11 63 58 64 59 2F 09 5D 51 46 64 39 09 20 60 5F 5F 68 33 02 6B 69 7B 73 36 42 57 3F 66 53 6A 4B 4D 3B 66 4D 24 78 6C 61 7F 54 40 83 6F 8B 77 4E 39 65 7A 95 93 59 3C 8F 72 8F 8C 3B 47 99 8E 9A 8F 65 3F 93 87 7C 9A 6F 5B 9E 8A A6 92 69 54 80 95 B0 AE 74 57 AA 8D AA A7 56 62 B4 A9 B5 AA 80 5A AE A2 97 B5 8A 76 B9 A5 C1 AD 84 6F 9B B0 CB C9 8F 72 C5 A8 C5 C2 71 7D CF C4 D0 C5 9B 75 C9 BD B2 D0 A5 91 D4 C0 DC C8 9F 6E 6E D7 D5 E7 DF A2 98 CF CF E0 C1 AD A2 EB DA E3 EB A5 9C E4 BC EE F5 C1 A7 E7 E6 E6 EF BA 89 F2 F0 03 FA BD B3 EA EA FB DC C8 BD 07 F5 FE 07 C0 B7 FF D7 0A 11 DC C2 03 02 02 0B D5 A4 0E 0C 1E 16 D8 CE 06 06 17 F7 E3 D8 22 11 1A 22 DB D2 1B F2 25 2C F7 DD 1E 1D 1D 26 F0 BF 29 27 39 31 F3 E9 21 21 32 13 FE F3 3D 2C 35 3D F6 ED 36 0E 40 47 13 0F 34 14 CE FF FF 2F 04 FF 23 0A F3 56 33 43 46 DD 43 52 4F 21 0C 51 15 1F 45 39 08 21 31 14 54 53 53 5C 27 F5 5F 5D 6F 67 2A 20 57 57 68 49 35 2A 73 62 6B 73 2D 3A 60 20 68 7B 72 44 3D 3B 5D 45 2D 59 6E 89 87 4D 30 83 66 83 80 2F 3B 8D 82 8E 83 59 33 87 7B 70 8E 63 4F 92 7E 9A 86 5D 48 74 89 A4 A2 68 4B 9E 81 9E 9B 4A 56 A8 9D A9 9E 74 4E A2 96 8B A9 7E 6A AD 99 B5 A1 78 47 47 B0 AE C0 B8 7B 71 A8 A8 B9 9A 86 7B C4 B3 BC C4 7E 75 BD 95 C7 CE 9A 80 C0 BF BF C8 93 62 CB C9 DB D3 96 8C C3 C3 D4 B5 A1 96 DF CE D7 DF 99 90 D8 B0 E2 E9 B5 9B DB DA DA E3 AE 7D E6 E4 F6 EE B1 A7 DE DE EF D0 BC B1 FA E9 F2 FA B4 AB F3 CB FD 05 D0 B6 F6 F5 F5 FE C9 98 02 FF 12 0A CC C2 F9 F9 0B EB D7 CC 16 05 0E 16 CF C6 0F E6 19 20 EB D1 12 11 11 1A E4 97 D4 27 1C 28 1D F2 CC 21 15 0A 28 FC E8 2C 18 34 20 F6 E1 0E 23 3E 3C 02 E4 38 1B 38 35 E3 EF 42 37 43 38 0E E7 3C 30 25 43 18 04 47 33 4F 3B 12 FC 29 3E 59 57 1D FF 53 36 53 50 FE 21 58 2E 1A 12 3E 3E 52 57 41 30 67 71 14 5F 5C 4E 64 12 41 63 66 6B 6B 15 69 62 6F 27 1B 62 7C 2B 35 3C 2F 66 66 77 58 44 39 82 71 7A 82 3C 33 7B 53 85 8C 58 3E 7E 7D 7D 86 51 20 89 87 99 91 54 2E 42 4E 83 68 96 4E 9A 8B 90 9B 3C 91 96 2C 91 9C AA 53 85 9B 8E 9D 96 35 A3 A9 B5 5C AF 69 AB 5A 9E 7F B2 69 B0 B1 AC B7 A9 63 A7 9C BA B5 BB 6E 98 C0 B5 BA B0 50 B6 CD CF BC C3 D4 AE C3 75 AE C8 C8 A1 C2 CA 83 81 9C 84 B0 C5 E0 DE A4 87 DA BD DA D7 86 92 E4 D9 E5 DA B0 8A DE D2 C7 E5 BA A6 E9 D5 F1 DD B4 9F CB E0 FB F9 BF AB B6 DA EB E7 86 E1 F6 FB F9 EA FE 9F F8 F4 E3 9A 16 BC 14 AE FE F6 09 FA DD 0C 12 0A 0E D3 05 04 BD CC BF DE 0F 20 C8 CF E9 C0 15 09 FD 1C F0 DC 20 0C 28 14 EA D5 02 17 32 30 F5 D8 2C 0F 2C 29 D7 EC F6 23 29 25 2A 1E 30 27 14 E6 3E 3B 41 E4 1B 20 39 3F 14 3E 41 47 FB 2F 4E 35 40 0F 2C 4D 58 52 46 13 11 3A 1B 19 23 54 0C 1C 26 06 59 3C 59 56 05 11 63 58 64 59 2F 09 5D 51 46 64 39 09 4D 57 71 3F 6C 6A 41 71 6A 70 45 67 7A 42 70 65 4A 2E 60 72 75 72 83 40 79 82 1F 3D 5C 7B 83 83 79 7A 41 5B 58 86 86 8F 83 42 41 58 7D 88 66 95 9A 9A 8C 48 65 55 87 97 29 59 72 5B 9E 8A A6 92 69 54 80 95 B0 AE 74 57 AA 8D AA A7 56 62 B4 A9 B5 AA 80 87 B4 B2 89 B9 B2 B8 8D AF C2 65 99 AA 96 BC CC 9B C3 C4 88 74 95 B3 A4 CD C2 D5 8B 9D C1 BD BF C7 A4 8C 8A 9B 92 7E 99 84 6E B4 A9 D2 E1 E8 B1 D6 EA 92 9B C4 BA D6 F0 E5 A4 90 CB CB DF E4 CE BD F4 FE B2 A7 CC D8 E8 E6 CB F8 BA CB EC F4 AD AB C6 AE DA EF 0B 09 CE B1 05 E7 05 02 B0 BC 0F 04 10 05 DA B4 09 FC F1 10 E4 D0 14 FF 1C 08 DE C9 F5 0B 26 24 E9 E8 27 07 13 12 03 DF FE 1E 26 26 1C 1D E3 FD FA 29 29 32 26 E4 E3 E2 EA DE D2 EF ED 01 FE F7 F8 DB 0A 3D 12 15 3C 41 3A 33 4A F0 DA 24 07 19 23 30 2C 2D 08 09 16 3C 30 FE 18 28 21 3F 5A F6 12 21 EC 56 54 66 5E 21 17 4E 4E 5F 40 2C 37 5E 35 55 63 57 56 61 45 73 40 34 62 36 3F 54 70 1E 11 41 33 7C 6B 74 7C 36 2D 75 4D 7F 86 52 38 78 77 77 80 4B 1A 83 81 93 8B 4E 60 82 7F 7F 62 90 56 6F 96 81 8C 51 5E 84 78 47 60 70 53 93 92 92 9B 66 2F 6C 9C 79 9B 9C 9D 63 70 63 7A 77 7F A6 B1 57 71 6F 79 9F 93 62 7B 8B 52 66 B9 9C B9 B6 65 71 C3 B8 C4 B9 8F 7F B8 8D 62 83 7E A3 BB C5 7D BF C7 C4 A8 D1 CC 88 D1 D0 D8 75 C7 87 BA DB DD DD A7 D6 8F CB CF D3 BC 8F C9 EC E4 D4 EA C8 E0 E0 77 E1 F0 F7 E3 E8 E6 E3 EF DD CE F5 AB FF EC E8 F8 99 BF B2 92 C6 C3 FE CE C4 F5 F4 AE BD B0 B9 0C 01 0D 02 D7 B1 06 F9 EE 0D E1 EA 12 07 15 07 E7 13 ED 0A F2 19 0D 12 16 03 D1 FC F2 1D 1D 1F 27 D5 F2 E2 15 25 B6 E6 FF CC F9 18 FE 15 2A 20 DA FC F9 2E 05 FA F8 1C 34 29 0E 08 10 3D 42 E7 41 31 41 36 13 37 42 FD 4C 3A 56 30 14 F8 EB FD 06 16 20 16 49 3D 56 FF 25 51 58 57 59 20 10 40 4E 57 41 53 6A 1B 32 28 6A 53 53 5E 42 35 45 6B 62 68 65 61 1B 3E 4E 64 6F 2B 7D 73 7B 5C 69 24 5E 78 81 50 70 27 7A 73 72 73 2E 34 84 91 8C 80 55 39 45 8D 71 92 53 8C 82 85 98 78 91 4D 67 89 5C A3 90 44 6B 26 6E 8D 78 96 AF 58 74 97 AA 8A A3 51 51 65 A1 7F A3 99 B2 91 A2 AC 87 A4 AB AF B3 6B 68 7D B5 A4 8E AD C0 73 C8 BB BE 60 8F BB 94 B6 7B BE C0 C3 CE AE 75 CA A7 CE C9 D7 80 94 C4 72 C6 D0 A7 C9 AA 90 D1 D5 E0 CB A1 96 7A D2 E5 E9 E7 D7 A3 CA D1 DC C8 DA F1 AE DF D8 AC E1 DF 9B 9B E6 FC FD F4 B6 B6 A5 E8 F1 D8 FC FE C0 F3 E6 FC F3 F0 FD 9D F4 FF C9 0B F4 D5 B7 F5 D2 82 0D 18 0A 0C 04 08 FF CB D9 B0 16 1A 0F 15 0D E9 D6 D5 0B F3 22 F3 F2 22 C9 16 10 19 17 02 F1 E0 23 20 21 32 12 2B DA DA F9 29 E8 2C 2E 2C 1C FE E3 0E 3B 45 42 07 F3 FE 35 2C 37 18 34 3B 4F 45 40 07 3F 07 02 27 4B 4A 13 42 3F 47 34 48 1C 36 54 55 2A 5A 45 51 3F 58 4B 3C 0D 33 FF 2D 52 61 4A 0F 51 42 66 62 64 6C 2F 1F 1C 1A 18 4F 6F 6A 45 25 63 7A 69 71 3B 14 35 87 88 83 32 86 31 38 79 60 76 48 63 78 7C 86 7A 42 89 58 84 8B 87 4B 7E 95 7D 88 50 30 52 4D 4C 88 8B 9E 56 47 7B 6A 96 9D 99 50 70 87 6F 7A 4E 46 61 6D 6F 5A 53 5C 93 9C A0 82 A4 BA 84 64 6D 76 56 60 B7 8D A9 C3 B8 88 65 86 75 6B 87 69 7D B9 97 90 7B C7 84 8E 81 98 C6 C5 DB 9B 5F 9C 7E C3 CF AC CC A8 |
Moderiert von
Motzi: Beiträge zusammengefasst
Motzi - Sa 31.07.04 13:09
@FAlter: irgendwie kenn ich mich nicht ganz aus.. was willst du mir mit dem Posting 4 Posts über diesem sagen?
Der neue Chiffre-Text ist jetzt also eine HTML-Datei? Und die letzte Zeile davon fehlt und ist im nächsten Posting? Wenn ja, dann häng ich das noch an und lösch den einen Post...
raziel - Sa 31.07.04 13:26
.: cracked :.
Hab zunächst den Hinweis übersehen, dass es sich um ein HTML Dokument handelt. Macht das ganze natürlich wesentlich einfacher, als die über 1000 Seiten langen Ergebnisse meines "Analyse Tools" durchzuackern... ;-)
Ich will ja kein "Spielverderber" sein und poste nur den Titel des HTML Docs:
"Ein Histogramm in eine Paintbox zeichnen"
man liest sich,
raziel
Motzi - Sa 31.07.04 13:47
Korrekt... und der Titel des HTML-Docs enthält auch das Passwort.. ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!