[[Vorlage(Getestet, bionic, jammy)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(logo.png, 48, align=left)]] [sourceforge2:steghide:Steghide] {en} ist ein [wikipedia:Steganographie:]-Programm, mit dem sich Daten bzw. Dateien in anderen Dateien "verstecken" lassen und somit unbemerkt transportiert werden können. Als "Trägerdatei" sind dabei die Formate '''.bmp''', '''.jpg''', '''.wav''' und '''.au''' möglich. In Dateien dieser Typen können mit Hilfe von Steghide beliebige andere Dateien bzw. Dateitypen versteckt werden. Eine andere mögliche Anwendung von Steghide ist das Einfügen eines unsichtbaren "Wasserzeichens" in Bilder, einfach indem man einen kurzen Text im Bild versteckt. Über diesen Text ist das Bild dann identifizierbar. = Installation = Steghide wird über folgendes Paket installiert [1]: {{{#!vorlage Paketinstallation steghide,universe }}} = Benutzung = Steghide funktioniert nach folgendem Prinzip: Eine Datei wird komprimiert, verschlüsselt und anschließend in einer Trägerdatei versteckt. Zum Entpacken der Trägerdatei benötigt man ebenfalls Steghide sowie ein Passwort, welches beim Verstecken einer Datei in der Trägerdatei festgelegt wird. Details zur Funktionsweise sind den [:man:Manpages] zu Steghide enthalten. Die Benutzung von Steghide erfolgt vollständig über den Terminal [2]. Die allgemeine Syntax von Steghide lautet: {{{#!vorlage Befehl steghide [Kommando] }}} Bei Steghide ist Pflicht, dass das Kommando vor den Optionen steht, diese können dafür in beliebiger Reihenfolge benutzt werden. Steghide kennt folgende Kommandos: ||<-2 rowclass="titel">Kommandos von Steghide|| ||Kommando||Beschreibung|| ||``embed``||Es sollten Daten in einer Datei versteckt werden.|| ||``extract``||Es sollten Daten aus einer Datei extrahiert werden.|| ||``info``||Information zur Trägerdatei ausgeben (z.B. maximal mögliche Größe der zu versteckenden Datei bei "neuen" Trägern oder Informationen zur versteckten Datei, sofern es sich um einen "benutzten" Träger handelt).|| ||``encinfo``||Auflistung aller möglichen Verschlüsselungsalgorithmen.|| Zum Verstecken einer Datei kennt Steghide folgende Optionen: ||<-2 rowclass="titel">Optionen zum Verstecken einer Datei|| ||Option||Beschreibung|| ||``-ef Name``||Die Datei "Name" soll versteckt werden. Der Dateiname wird dabei erhalten. Gibt man keine Datei an, liest Steghide von der Standardeingabe.|| ||``-cf Träger``||Die Datei "Träger" wird als Trägerdatei ausgewählt.|| ||``-sf Ziel``||Es wird aus der zu versteckenden Datei und Trägerdatei die Datei "Ziel" erzeugt. Wird diese Option nicht angegeben, so wird die Original-Trägerdatei überschrieben.|| ||``-e Algo Modus``||Es wird der Verschlüsselungsalgorithmus "Algo" im Verschlüsselungsmodus "Modus" genutzt. Voreinstellung ist rijndael-128 (AES) im cbc-Modus. Möchte man die Daten nicht verschlüsseln, so wählt man also Algorithmus "none" und gibt keinen Modus an.|| Zum Entschlüsseln einer Datei stehen folgende Optionen zur Verfügung: ||<-2 rowclass="titel">Optionen zum Entschlüsseln einer Datei|| ||Option||Beschreibung|| ||``-sf Name``||Die Datei "Name" soll entschlüsselt werden.|| ||``-xf Ziel``||Die Daten werden in der Datei "Ziel" gespeichert. Wird diese Option nicht angegeben, wird der Original Dateiname verwendet.|| Einige weitere Optionen sind in den [:man:Manpages] zu Steghide aufgeführt. = Beispiel = Als erstes wird geprüft, wie viele Daten in der Datei '''bild.jpg''' versteckt werden können: {{{#!vorlage Befehl steghide info bild.jpg }}} Folgende Ausgabe {{{"bild.jpg": Format: jpeg Kapazität: 117,0 Byte Soll versucht werden, Information über eingebettete Daten anzuzeigen ? (j/n) n }}} sagt, dass man max. 117 Bytes an Daten unterbringen kann (Anm.: Die Datei '''bild.jpg''' ist nur 2,2 kB groß). Jetzt wird die Datei (Daten) angelegt, die versteckt werden sollen. {{{#!vorlage Befehl echo "Geheimtext" > text.txt }}} Natürlich kann man hier auch jede andere beliebige, schon existierende Datei nehmen, sofern diese nicht zu groß ist. Dann wird die Datei '''text.txt''' in der Datei '''bild.jpg''' versteckt, die Zieldatei soll '''versteck.jpg''' heißen: {{{#!vorlage Befehl steghide embed -cf bild.jpg -ef text.txt -sf versteck.jpg }}} Man wird aufgefordert, ein Passwort (zweimal) einzugeben, dann wird die Datei in der anderen versteckt: {{{Passwort eingeben: Passwort wiederholen: Bette "text.txt" in "bild.jpg" ein... fertig Schreibe Stegodatei "versteck.jpg"... fertig }}} Im folgenden sollen Informationen über die die "versteck.jpg" ausgelesen werden: {{{#!vorlage Befehl steghide info versteck.jpg }}} Man erhält folgende Ausgabe: {{{"versteck.jpg": Format: jpeg Kapazität: 117,0 Byte Soll versucht werden, Information über eingebettete Daten anzuzeigen ? (j/n) j Passwort eingeben: Eingebettete Datei "text.txt": Größe: 11,0 Byte verschlüsselt: rijndael-128, cbc komprimiert: ja }}} Wie man sieht, kann man nur an die Informationen gelangen, wenn man das Passwort kennt. Eine Gegenüberstellung des Originalbildes und des Bildes mit der verschlüsselten Datei bringt in der Regel keine sichtbaren Unterschiede. Zum Schluss soll die Datei '''versteck.jpg''' wieder entschlüsselt werden: {{{#!vorlage Befehl steghide extract -sf versteck.jpg }}} {{{Passwort eingeben: Extrahierte Daten wurden nach "text.txt" geschrieben. }}} Man benötigt also das Passwort, dann wird die verschlüsselte Datei mit dem Originaldateinamen ins aktuelle Verzeichnis geschrieben. = Stapelverarbeitung = Bei hunderten von Dateien ist das Utility Steghide sehr zeitraubend, da man immer wieder den Dateinamen und das Passwort eingeben muss. Mit dem folgenden kleinen Bash-Skript kann man in alle JPEG-Bilder, die in dem Verzeichnis liegen, das selbe Wasserzeichen mit immer dem gleichen Passwort einbringen (gut zum Einbringen des Copyright). {{{#!bin/bash read -p "Bitte geben Sie den Wasserzeichentext ein: " wasserzeichenvariable echo $wasserzeichenvariable > wasserzeichen read -p "Bitte geben Sie das Passwort ein: " wasserzeichenpasswort ls -1 *.JPG *.jpg | while read file; do { steghide embed -p $wasserzeichenpasswort -cf "$file" -ef "wasserzeichen" -sf "$(basename Wasserzeichen_"$file")" } done rm -f wasserzeichen }}} == Beispielbild == Im folgenden noch als Beispiel eines Bildes im Original (Dateityp: jpg) und zum Vergleich mit darin versteckter Datei. Die versteckte Datei hat dabei annähernd die maximal erlaubte Größe für das Bild: ||<-2 rowclass="verlauf">Beispielbilder|| ||[[Bild(./LaptopUbuntu.jpg)]] || [[Bild(./LaptopUbuntu_versteck.jpg)]] || ||Original-Bild||Bild mit versteckter Datei|| Das Bild mit versteckter Datei kann man [attachment:Steghide/LaptopUbuntu_versteckt.jpg.tar.gz:hier] {dl} herunterladen. Das Passwort zum Entschlüsseln des Bildes ist "fast". = Links = * [sourceforge2:steghide:Projektseite] {en} * [packages:outguess:] - universelles Steganographie-Werkzeug * [https://stegosuite.org/ Stegosuite] {en} - Java-basierte Anwendung (siehe auch [packages:stegosuite:]) * [http://www.openstego.com/ OpenStego] {en} - weitere Java-basierte Anwendung * [:Daten_verschlüsseln:] {Übersicht} Übersichtsartikel # tag: Sicherheit, Server