Das verstecken einer Nachricht ist nicht auf Bilder als Trägerdatei reduziert, es können z.B. auch Audiodateien zur Verpackung dienen. Dieses Beispiel ist eine Kommandozeilenversion zum verstecken und zurückholen einer Textnachricht aus einer WAV-Datei. Analog zu den Bildern (dort im PNG-Format) verwenden wir auch hier ein verlustfreies Dateiformat, nämlich WAV.
Solltet Ihr größere Testdateien benötigen, stehen diese auf der Webseite https://file-examples.com/index.php/sample-audio-files/sample-wav-download/ zur Verfügung.
Das Programm besteht im Wesentlichen aus 2 Teilen, nämlich einer k05_Encoder.java- und k05_Decoder.java-Datei. Den Quelltext werde ich hier nicht zeigen, da neben den genannten Dateien noch ein paar mehr Hilfsklassen benötigt werden. Ebenso wird für die Musikbearbeitung eine Bibliothek namens „JMusic.1.6.4.jar“ benötigt – alle Dateien findet Ihr in meinem Github-Archiv https://github.com/java-crypto/K-Steganographie.
Ich habe das Programm minimal verändert (Informationen zum Programm hinzugefügt). Nach der Bearbeitung erzeugt das Programm eine Datei mit dem Namenszusatz „-Encoded“.
Das Programm macht genau was es soll und ich konnte bei der Hörprobe keinen Änderung gegenüber der Originaldatei „erhören“. Ein Analyseprogramm zur Erkennung von eingebetteten Nachrichten in eine Audiodatei ist mir derzeit nicht bekannt.
Noch ein Hinweis: im Programmpaket enthalten sind auch 2 Programm zur Einbettung von Bildern in eine Audiodatei, diesen Teil habe ich aber nicht getestet.
So sehen die beiden Konsolen aus – hier der Encoder-Teil:
1 2 3 4 |
File 'f:\k05_flowing-water_freewavesamples_com.wav' read in. Details: Channels = 2 Samples per channel = 121985 Sample rate = 44100 Bit depth = 16 ------------------------------------------------------------- Successfully encoded "123" into f://k05_flowing-water_freewavesamples_com-Encoded.wav |
Die Decoder-Ausgabe:
1 |
The hidden message was: 123 |
Das gesamte Programm steht unter der Apache 2.0 Lizenz, deren Wortlaut dem Paket beiliegt und den ich hier noch einmal wiedergebe: Apache 2.0-Lizenz.
Alle Quellcodes zur Steganographie findet Ihr zum Download in meinem Github-Repository, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/K-Steganographie. Alle Programme sind sowohl unter Java 8 als auch unter Java 11 lauffähig.
Letzte Aktualisierung: 06.11.2019