
JPEG-Steganographie
go get lukechampine.com/jsteg
jsteg ist ein Paket zum Verstecken von Daten in JPEG-Dateien, eine Technik, die als
Steganografie bekannt ist. Dies wird erreicht,
indem jedes Bit der Daten in die niederwertigsten Bits des Bildes kopiert wird.
Die Menge der versteckbaren Daten hängt von der Dateigröße des JPEG ab; es werden
etwa 10-14 Byte JPEG benötigt, um jedes Byte der versteckten Daten zu speichern.
// open an existing jpeg
f, _ := os.Open(filename)
img, _ := jpeg.Decode(f)
// add hidden data to it
out, _ := os.Create(outfilename)
data := []byte("my secret data")
jsteg.Hide(out, img, data, nil)
// read hidden data:
hidden, _ := jsteg.Reveal(out)
Beachten Sie, dass die Daten nicht abgegrenzt sind; der Aufrufer ist dafür verantwortlich,
zu bestimmen, welche Bytes von hidden für ihn relevant sind. Der einfachste Weg, dies zu tun,
besteht darin, die Daten mit ihrer Länge zu versehen.
Ein Befehl jsteg ist enthalten, der einen einfachen Wrapper um die Funktionen
dieses Pakets bereitstellt. Er kann Daten in JPEG-Dateien verstecken und auslesen und
unterstützt Ein-/Ausgabeumleitung. Er behandelt automatisch Längenpräfixe
und verwendet einen magischen Header, um JPEGs zu identifizieren, die von jsteg erzeugt wurden.
Ein spezialisierterer Befehl namens slink ist ebenfalls enthalten. slink bettet
einen öffentlichen Schlüssel in ein JPEG ein und ermöglicht es, Daten zu signieren und Signaturen
mit aus Passwortstrings abgeleiteten Schlüsselpaaren zu verifizieren. Siehe cmd/slink für eine
vollständige Beschreibung.
Binärdateien für beide Befehle finden Sie hier.
Dieses Paket verwendet eine erhebliche Menge an Code aus dem image/jpeg-Paket.
Die BSD-ähnliche Lizenz, die die Nutzung dieses Codes regelt, finden Sie in der
Datei go_LICENSE.