Steganografie für Bild- und Sounddateien

  • Hallo allerseits,

    wie der Titel bereits andeutet habe ich ein kleines Steganografie-Skript geschrieben.

    Gestartet bin ich mit der Inspiration aus diesem Thread und habe dann versucht, das ganze mit Inline-Assembler (AssembleIt) umzusetzen. Für die Hilfe bei einigen Schwierigkeiten und der Optimierung des ASM-Codes möchte ich mich herzlich bei Andy bedanken! ^^

    Nun zu den Funktionen des Programms:

    • Verstecken von Text oder beliebigen Dateien in Bild- und Sounddateien (.bmp, .png, .tif und .wav werden als Trägerdateien unterstützt)
    • Auslesen des geheimen Inhalts :P

    Weiterhin sei angemerkt, dass die Geschwindigkeit des Programms im Vergleich zum gleichen Programm ohne Assembler extrem hoch ist. Dies war auch der Grund dafür, dass ich mich an die Umsetzung mit ASM gewagt habe. Ich zitiere dazu einfach mal Andy:

    Zitat

    Btw. wird mit ca. 500MB/Sekunde kodiert/dekodiert! Was bedeutet, dass 500KB Text in einer Millisekunde in einem Bild verschlüsselt/entschlüsselt werden! Das entspricht ca. 6 Prozessortakten pro verschlüsseltem Buchstaben!

    Im Anhang befindet sich das Programm als ZIP-Archiv. Im Archiv befindet sich die .au3-Datei, eine kleine DLL mit Icons für die Buttons des Programms sowie die Datei "Zip.au3", die im Skript genutzt wird, um Ordner direkt zu komprimieren.

    Download: autoit.de/wcf/attachment/25218/

    Changelog
    • Nun werden neben .bmp weitere Datentypen für Bilder unterstützt.
    • Es ist Drag&Drop möglich und der gesamte Dateiname der Geheimdatei wird gespeichert.
    • Ordner werden automatisch als Zip-Archiv gepackt, wenn man sie als Geheimdatei verwendet.


    Ich wünsche viel Spaß beim Ausprobieren und bitte um Kritik am Programm (positiv und negativ).

    LG Xenon :)

    6 Mal editiert, zuletzt von Xenon (3. März 2015 um 18:55)

  • Gefällt mir ganz gut, und wenn ich die Bitmap mit dem Geheimtext in einem anderen Programm speichere, bleibt sogar die Geheimschrift intakt.

    Lehrreiche ASM Codes! :thumbup:

    Nur sind die Links in deinem Post kaum erkennbar.


    Gruß,
    UEZ

    Auch am Arsch geht ein Weg vorbei...

    ¯\_(ツ)_/¯

  • Für die Kodierungsrate lest ihr die Datei dann doch sicherlich aber komplett in den RAM ein oder nicht?


    Ja, die Datei wird komplett in den RAM eingelesen und dann der ASM-Code damit ausgeführt.

    UEZ:
    Freut mich, dass es dir gefällt ^^
    Die Links habe ich nun besser hervorgehoben.

  • Hi,

    autoit.de/wcf/attachment/25205/<--tststs, ihr habt es nicht verstanden, DA gehört der post rein!

  • Coole Idee und Umsetzung!

    Könnte man eine Datei auch in einem Video verstecken??? Also die Funktion weiter Erweitern ^^

    Grüsse!

    P.S: Andy, wieso kannst du ein .png verwenden?? Krieg es nicht geladen :whistling:

  • hehe, du hast die Links nicht verfolgt.... ;)
    insbesondere den mit der Optimierung des ASM-codes, 4.-letzter Abschnitt Post Nr. 7

    //EDIT
    PNG ist ein verlustlos komprimiertes Dateiformat. Wenn du das einliest, "entsteht" im Speicher wieder eine Bitmap. Genauso funktioniert das beim Speichern.
    Letztendlich ist JEDE von GDI als Bild dargestellte Datei nur eine unkomprimierte Bitmap im Video-RAM!
    Man muss unterscheiden zwischen DATEIFORMAT und dargestellter Grafik (Bitmap).
    Daher ist es völlig unerheblich, mit welchem verlustfreien Kompressor gearbeitet wird, beim Speichern wird die Bitmap in ein beliebiges Dateiformat geschrieben, beim Einlesen daraus erhält man wieder die Bitmap.

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    2 Mal editiert, zuletzt von Andy (28. Februar 2015 um 12:31)

  • Zitat von Andy

    Allerdings hätte ich noch einige Anregungen. Nimm *.PNG (idR eignen sich alle verlustlos komprimierenden Grafikformate, auch jpg! ) mit in die Bildauswahl, Icondateien und Smilies eignen sich besonders gut zum Verschicken.


    Das Programm unterstützt jetzt folgende Dateitypen: png, bmp, jpg, tif. (Download in Post #1)

    Einzige Einschränkung: Die Trägerdatei kann zwar als jpg geladen werden, gespeichert werden (mit Geheiminhalt) muss aber unter einem anderen Format. Beim Speichern als jpg ging nämlich der geheime Inhalt verloren, was vermutlich an der verlustbehafteten Kompression liegt?

    Andy: --> autoit.de/wcf/attachment/25207/ <--

  • @Xenon, die Dateiendung nützt einem aber nicht sonderlich viel, besser wäre der komplette Dateiname!

    Dann könnte man auch ganze zip-archive verstecken ;)
    Sehr fein wäre auch, Grafiken per DragnDrop direkt in ein Fenster ziehen zu können, damit könntest du die smilies hier aus dem Forum einfach auf das Stegano-Programmicon ziehen und weiterverarbeiten.

    *hust* jetzt fangen alle an, die smilies zu untersuchen, ob nicht irgendwelche anderen Daten darin sind, dabei hinterlasse ich schon seit Jahren Bilder mit "Inhalt" 8o

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    2 Mal editiert, zuletzt von Andy (28. Februar 2015 um 21:22)

  • @Xenon, die Dateiendung nützt einem aber nicht sonderlich viel, besser wäre der komplette Dateiname!


    Ich hatte ein bisschen Zeit und hab das Skript angepasst, dass jetzt der gesamte Dateiname gespeichert wird. Download wie immer in Post #1. Aber Achtung: Durch diese Änderung können die mit der alten Version erstellten Geheiminhalte leider nicht mehr entschlüsselt werden!

    //Edit: Das war Quatsch - verschlüsselte Geheimdateien mit einer bis zu 3 Buchstaben langen Endung werden normal entschlüsselt, Geheimtext wird lediglich als Datei mit der Endung "..." angezeigt und muss bloß gespeichert werden und dann im Editor angeguckt.

    Sehr fein wäre auch, Grafiken per DragnDrop direkt in ein Fenster ziehen zu können, damit könntest du die smilies hier aus dem Forum einfach auf das Stegano-Programmicon ziehen und weiterverarbeiten.


    Wurde hinzugefügt. ;)

    Es gibt jetzt zwei Möglichkeiten:

    • Man zieht eine Datei auf das kompilierte Skript (die .exe)

      • handelt es sich um eine Bilddatei, wird sie automatisch als Trägerdatei bei Ver- und Entschlüsselung eingetragen
      • handelt es sich um eine beliebige andere Datei, so wird sie als Geheimdatei eingetragen
    • Man kann auch direkt eine Datei in die entsprechende Gruppe (Trägerdatei/Geheimdatei) auf der geöffneten GUI ziehen

      • Vorteil: diese Methode geht auch mit Grafiken aus dem Browser (zumindest geht es bei Firefox ^^)
        -> Aber leider speichert Firefox die Grafiken als .bmp ab, und so erhalten die Smileys hier aus dem Forum einen schwarzen Hintergrund...


    To-Do
    : Man kann Ordner direkt auf die GUI ziehen und diese werden dann automatisch als .zip komprimiert.

    Einmal editiert, zuletzt von Xenon (1. März 2015 um 19:06)

  • Super :thumbup: Und ein Lob fürs Design :)
    Würde mir vllt noch eine Verschlüsselung mit einem Passwort wünschen 8o

    LG

    [Blockierte Grafik: http://stefan.blagojevic.at/loading.gif]

    Design, Modellbau, CAD <3
    AutoCAD, ArchiCAD, REVIT (ist ein Scheiss, habe aber das Zertifikat)

    Cinema 4D, RuckZuck Statik Programm

    Michael Bay als Architekt


    Da eine Glasfassade! Booom Sichtbeton! Laminiertes Bild auf Mosaiksteinchen! Granit! Granit! Granit! Sichtbetonwand mit 50° Neigung!
    Holzverkleidung erscheint da! Boooooom!

  • Würde mir vllt noch eine Verschlüsselung mit einem Passwort wünschen

    omfg....von was redest du?
    Schreib dir die ASM-Funktion um, so dass diese die Bits durcheinanderwürfelt, das ist sicherer als jedes Passwort.
    Passwörter sind dafür da, um geknackt zu werden, einen anderen Sinn haben die nicht!
    Die gesamte Steganographie baut darauf auf, eben genau KEINE Passwörter benutzen zu müssen.
    In den oben verlinkten Threads sind einige Ideen vorgestellt.

    Xenons Script ist ein BEISPIEL, wie man steganographieren KANN, die vorgestellten Methoden sind wirklich nur rudimentär!
    Aber wie bereits oben erwähnt, verteile ich seit Jahren simpelst steganografierte Grafiken, bisher hat sich allerdings auf meine Nachrichten noch niemand gemeldet^^