<< Habe meine beiden Hauptposts mal hier zusammengefasst >>
Zuletzt aktualisiert am:
25.02.2004
Hi,
schon seit geraumer Zeit frag ich mich hier quer durchs Forum und hab schon einige gute Tipps
bekommen und (hoffe ich) auch gegeben.
Nun möchte ich mein erstes "grösseres" Programm mal von euch testen und auseinanderpflücken
lassen. (Naja, grösser ist wohl relativ
)
Ich hoffe auf ein Feedback im Bezug auf
Programmierstil (was könnte man einfacher machen) bzw. Funktionalität....
Vielleicht gibts ja noch Erweiterungs/Verbesserungsvorschläge..?!
Es geht um ein kleines Verschlüsselungsprogramm.
Nein, ich behaupte jetzt nicht, dass es unknackbar ist...
Wäre cool wenn ihr mal ein paar Kommentare loswerden würdet...
Ich programmiere mit Delphi nur so in meiner (sehr knappen) Freizeit..
Mit Verschlüsselung an sich kenn ich mich auch nich so aus..
Aber was besseres als ne Caesar-Verschöüsselung ist mir schon eingefallen...
Wer sich damit ein bischen auskennt könnte mir erklären wo mögliche Schwächen liegen...
Versuchts einfach mal...
Bei Bedarf gibts auch ein paar Tipps...
Downloadlink :
www.angelfire.com/ul...tverstecker_0006.zip
- Zum Zweck des Programms
Mit diesem Programm kann man eine Textdatei "unsichtbar" in einem Bild verstecken...
D.h. Das rechte Memofeld ist nur für die Ausgabe bestimmt....
Man lädt ein Bild und eine Klartextnachricht. Wählt ein Passwort und legt los. (Verschlüsseln)
Wahlweise lädt man ein codiertes Bild und gibt das Passwort ein (entschlüsseln).
Man kann damit auch seine Bitmap Grafiken watermarken. Dann muss man sie weder in die Exe einbinden, noch umständlich in Resource files
packen.... Beim laden prüft man dann ob das entsprechende Bitmuster (Vgl. "Funktionsweise") vorliegt.
- Funktionsweise
Das funktioniert so ähnlich wie ein digitales Watermarking. Ich verstecke die Informationen im "Least Significant Bit" (LSB)
Ein Pixel hat sagen wir mal folgende Werte : Rot =213 Grün =45 Blau =52.
Ein Zeichen des Klartextes ist als Bitfolge = "10011010" (zum Beispiel)...
Nun einfach den ord() Wert als Pixelfarbe für R G oder B zu verwenden würde das Bild sehr stark verändern....
Also interessiert man sich nur dafür ob der Wert gerade oder ungerade ist.....
Entsprechend seiner Bitmaske des Zeichens verändert man diese Werte der Pixel dann (und zwar maximal um 1. Das sieht keiner....) Also aus .....
(Rot =213 Grün =45 Blau =52) würde bei key=1 und "gerade" zu codierendem Bit : (Rot =213 Grün =44 Blau =52).....
Man benötigt also 8 Pixel zum Speichern eines Zeichens. Das bedeutet dass man in ein 800*600 Bitmap (ca. 250 KByte) max. 58 KByte Text
bekommt.... Aber egal...
Das Passwort erzeugt einen Key im Format: (Beispiel: 0,2,1,0,1,0,2,0,1,1,0,2), was angibt ob die Information
(gerade oder ungerade) im R G oder B Wert steckt... Hier sollen später über die Ulam Funktion noch Vieren eingefügt werden (Wer sagt denn
das man in jedem Pixel was unterbringen muss..
Wäre auch ne Lösung für den "Müll"-Bug.
- Bekannte Bugs
-Das nach der Nachricht noch Müll decoded wird liegt daran, dass ich das ganze Bild decodieren lasse, da ich keine Möglichkeit habe, bisher zu erkennen
wann der codierte Text aufhört..... (siehe "weiterentwicklung")
-An manchen Stellen treten auch in der ersten "korrekten" Sequenz einzelne Zeichenfehler auf. Davor und danach ist alles
fehlerfrei und die Zeichenfehler sind auch teilweise nicht reproduzierbar.... *dasmichetwasverwirrentut*
-Text eingeben enabled den encode-it button nicht. Man muss ein textfile laden um encoden zu können
-Der Decodieren-Button ist noch nicht DAU-proof.
-Quelltext noch nicht dokumentiert.
-Fortschrittsanzeige macht manchmal Mucken.........
- Vorteile (?)
Man ahnt erstmal gar nicht das da überhaupt was verschlüsseltes drin ist ....
Da nicht jeder Pixel verändert werden muss (wenn er gerade ist und das auch sein soll, bleibt er unverändert). D.h niemand
weiss was genau zum Code gehört und was nicht ...
Auch durch ausprobieren nicht zu knacken... (denk ich mal.... ?????)
- Warum es Project1.exe heisst
Weil mir, man glaubt es kaum, tatsächlich noch kein Name eingefallen ist ..
- Weiterentwicklung (Reihenfolge nach abgeschätztem Schwierigkeitsgrad und pers. Priorität)
- Einbau von Lücken um den Text über das gesamte Bild zu verteilen, dann wird auch kein Müll mehr am Ende decoded...
- Ableiten einer Klasse
TGenuineImage = class(TImage), die über Authentifizierungsmethoden verfügt und dies autonom
erledigt.
- Die Wasserzeichen Variante "beständig" machen, d.h. Das Wasserzeichen darf beim resamplen nicht verlorengehen..
- Mehrstufige Wasserzeichen dürfen sich nicht beeinflussen... (Evtl anderer Ansatz nötig?)
- "Multi-Volume"- Archivierung. über mehrere Bilder hinweg... Krönung wäre: Inhalte in AVI-frames zu speichern.....
- Das ganze für Audiodateien benutzen
Catweasel
Pommes werden schneller fertig wenn man sie vor dem Frittieren einige Minuten in siedendes Fett legt.