Der Kryptograph

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Antworten
MichaH
User
Beiträge: 4
Registriert: Montag 7. Januar 2013, 06:08

Hallo liebe Pythonfreunde,

ich programmiere seit ca. einem halben Jahr an meinem kleinen Privatprojekt. Es geht eben darum Sachen zu verschlüsseln, wie der Name erraten lässt.
Da ich dieses Programm im Rahmen einer zu absolvierenden Prüfung geschrieben habe und nun immer mal wieder in der Woche 4-8 Stunden dran sitze ist es noch nicht gerade sehr sehr gut ^^. Dafür ist alles was ich benutze selber geschrieben und Kommentare der Art ... es gibt ein Modul dafür, möchte ich bitte vermeiden ^^. Es geht eben darum, dass ich einfach alles selber gemacht habe ;)

Ich habe bei Texten schon viel herausgeholt in sachen verschlüsseln und entschlüsseln (DES und AES Entschlüsselungen sind noch nicht in der Oberfläche bzw. funktioniert noch nicht zu 100 %)

Ich habe mich nun hier angemeldet und mich dazu durchgerungen zu posten, weil: Ich komme einfach nicht weiter. Ich möchte gerne Checksummen generieren. Nun habe ich mit diesem Anliegen angefangen zu lesen und zu lesen und habe bei Wikipedia einen Artikel gefunden der einen Tux Pinguin zeigt, das gleiche Bild verschlüsselt mit dem ECB-Mode und dann mit dem OFB-Mode glaube ich.
Da ich diese beiden Verschlüsselungsmodis ja schon komplett implementiert habe, dachte ich mir: Toll, das willst du auch können.

Ich habe also angefangen daten aus jpg Bildern auszulesen. Ich habe es sogar geschaft diese als einen riiiieeesigen Binären String in ein Textfile zu schreiben und daraus dann wieder ein Bild zu erstellen. Ebend eine Kopie ^^
Wenn ich jetzt aber die Verschlüsselung auf das Originalfile loslasse. Dann bekomme ich aus dem daraus erzeugten Text kein jgp Bild mehr hin.

Ich denke mal es liegt einfach daran, dass ich auch die Informationen vernichte, die sagen, dass es sich um ein Bild handelt.

Daher meine Frage, hat jmd. Erfahrungen damit? Weiss jemand welche kryptischen Textblöcke ich verschlüsseln kann damit ich wieder ein Bild erhalte? Ich stehe seit einer Woche auf dem Schlauch. Mittlerweile hat das bestimmt 20 Stunden gefressen in 5 Tagen dran arbeiten. Da ich im Moment auch meine Diplomarbeit schreibe ist das suboptimal, weil das eigentlich eine Ablenkung sein soll die Erfolg verspricht. Da der Erfolg nicht kommt, ist es eine frustrierende Ablenkung von frustierenden Analysen der Kommunikation von Differentialgleichungen untereinander ^^

Also ich freue mich über jede Antwort. Mein Programm würde ich als Installer verschicken, welcher den gesamten Code und auch eine kompilierte EXE beinhaltet. Wenn man mir nicht vertraut, so mhm kann ich niemanden zwingen mir zu vertrauen aber wenn man mich anschreibt, dann findet man bestimmt eine Möglichkeit ^^ Ich meine ich will das echt weitertreiben und nunja ... ich baue auf ein paar Tipps von euch.
BlackJack

@MichaH: Ich denke nicht das die Leute hier jeder einzeln Code von Dir zugeschickt haben möchten. Wenn Du Quelltext hast, den Du zur Diskussion stellen möchtest, dann solltest Du ihn besser einfach jedem zugänglich machen. Kürzere Quelltexte hier im Forum und ein ganzes Projekt am besten bei einem der üblichen Hoster (Bitbucket, Github, SourceForge, …) je nach dem welche Versionsverwaltung Du verwendest. Mit einer EXE ist das übrigens nicht nur eine Vertrauenssache — Leute mit Mac oder Linux können damit auch nicht so viel anfangen.

Ansonsten ist die Problembeschreibung irgendwie wirr. Ver- und Entschlüsseln tut man binäre Daten. Wenn man die in einer ”lesbaren” Textdatei haben möchte, dann wandelt man die verschlüsselten Binärdaten in Text um, üblicherweise wird dafür heutzutage Base64 als Kodierung verwendet. Das ist aber ein unabhängiger Schritt der mit der eigentlichen Ver- und Entschlüsselung nichts zu tun hat. Wo da jetzt Checksummen ins Spiel kommen, habe ich nicht so ganz verstanden.
lunar

@MichaH Dieses Forum ist keine private Review-Agentur. Wenn Du Hilfe möchtest, dann zeige Deinen Quelltext öffentlich, und stelle Deine Fragen, damit jeder etwas davon hat.

Ich verstehe nicht, warum Dir die Verschlüsselung von Text gelingt, die von Binärdaten nicht. Eigentlich ist letzteres unbedingte Vorraussetzung für ersteres. Man kann auch nicht einfach so ECB auf Binärdaten loslassen. Erst einmal muss man diese auf ein vielfaches der Blockgröße auffüllen (aka padden).
MichaH
User
Beiträge: 4
Registriert: Montag 7. Januar 2013, 06:08

Nagut ich habe mich zwar gerade durch das SourceForge gekämpft und mal alles ein bisschen eingepflegt, aber ich habe trotzdem das Gefühl. Das ich mich noch nicht vollkommen mitgeteilt habe.

Ich werde jetzt auch hier den Link posten, damit es sich vielleicht mal irgenwann jmd. anguckt ^^

https://sourceforge.net/projects/kryptograph/

Ansonsten wäre ein anderer Ansatz meiner Frage:

Kann ich die Daten aus der JPG-Datei irgendwie deuten? Sprich wenn ich die in der binären Form vor mir liegen habe, wo kann ich dort etwas verschlüsseln, damit ich nicht die Grundinformation zerstören, dass es sich um ein Bild handelt.

Gibts dazu irgendwelche Tipps vielleicht?

#######################################################
Um die Bildverschlüsselung zu testen muss man ein Bild in den Ordner Checksum kopieren und das Bild Tux.jpg nennen, wenn sich jmd. die Freude machen möchte. Dann werden in einem Unterordner 'data' in 'Checksum' Text und JPG dateien erstellt, wenn man MD5.py aus dem Ordner Checksum ausführt.
#######################################################
Ich danke schonmal für die Antworten und muss nun erstmal schlafen!
Zuletzt geändert von MichaH am Donnerstag 11. April 2013, 00:01, insgesamt 1-mal geändert.
MichaH
User
Beiträge: 4
Registriert: Montag 7. Januar 2013, 06:08

lunar hat geschrieben:@MichaH Dieses Forum ist keine private Review-Agentur. Wenn Du Hilfe möchtest, dann zeige Deinen Quelltext öffentlich, und stelle Deine Fragen, damit jeder etwas davon hat.

Ich verstehe nicht, warum Dir die Verschlüsselung von Text gelingt, die von Binärdaten nicht. Eigentlich ist letzteres unbedingte Vorraussetzung für ersteres. Man kann auch nicht einfach so ECB auf Binärdaten loslassen. Erst einmal muss man diese auf ein vielfaches der Blockgröße auffüllen (aka padden).

Ich wandel mir jeden Text, den ich verschlüsseln will eben in eine Binär Darstellung um. Diese hat 8 Bits und dann kann ich alles verschlüsseln. Wenn ich allerdings aus dem Bild die Binär Daten auslese und dann wieder umwandel in Text, möchte mir die Windows-Foto-Vorschau kein Bild anzeigen, sondern sagt es wäre beschädigt. Sprich ich habe die Vermutung, dass ich die Information verschlüssel, dass es sich um ein Bild handelt. Ganz stumpf ausgedrückt:

Erste Zeile in einer "echten" JPG Datei: "Dies ist ein Bild" -> Windows zeigt es in der Vorschau
Erste Zeile in meiner erzeugten JPG Datei: "Dies ist kein Bild" -> Windows zeigt es nicht in der Vorschau
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Hallo MichaH,
jpeg ist ein verlustbehaftetes Komprimierverfahren, da verkompliziert sich die Sache noch etwas.
Nehmen wir also eine ganz einfache pgm-Datei:

Code: Alles auswählen

P5
500 500
256
[bilddaten]
Der Bildbetrachter, der pgm-Dateien darstellen kann, liest also erst den Header, erfährt die Höhe und Breite des Bildes und kann dieses Darstellen.
Verschlüselt sieht das ganze dann so aus:

Code: Alles auswählen

^ˇ¸Ó˝‰„¸„˝§$„¸Efadsd∂‚‰ª‚gG„
Ich hoffe Du siehst das Problem.
Jetzt kannst Du bei einem verlustfreien Verfahren natürlich den Header lesen, dann die Bilddaten, nur die Bilddaten verschlüsseln und beides wieder zusammensetzen. So wurde das beim Wiki-Artikel gemacht.
Bei jpeg geht das wegen dem Verlustbehafteten nicht.
MichaH
User
Beiträge: 4
Registriert: Montag 7. Januar 2013, 06:08

Vielen Dank für diese Antwort @Sirius3.

Das hat mich jetzt erstmal weitergebracht, dass ich mir anderen Bilddateien vornehme. Danke :)
Antworten