Steganographie ist eine in Pure go geschriebene Bibliothek, die eine einfache LSB-Steganographie auf Bildern ermöglicht. Es ist in der Lage, Bilder sowohl zu kodieren als auch zu dekodieren. Es kann Dateien jedes Formats speichern. Diese Bibliothek ist von Stego von EthanWelsh inspiriert, einem Befehlszeilenprogramm mit demselben Zweck.
go get - u github . com / auyer / steganography
Original | Codiert |
---|---|
Das zweite Bild enthält den ersten Absatz der Beschreibung eines Stegosaurus auf Wikipedia, der als Beispiel auch in examples/message.txt verfügbar ist.
package main
import (
"bufio"
"image/png"
"io/ioutil"
"github.com/auyer/steganography"
)
Der Schreibmodus wird verwendet, um eine Nachricht aufzunehmen und sie mithilfe der LSB-Steganographie in eine Bilddatei einzubetten, um eine geheime Bilddatei zu erstellen, die Ihre Nachricht enthält.
Beachten Sie, dass die Mindestbildgröße 24 Pixel pro Byte beträgt. Für jedes zusätzliche Byte sind 3 weitere Pixel erforderlich.
inFile , _ := os . Open ( "input_file.png" ) // opening file
reader := bufio . NewReader ( inFile ) // buffer reader
img , _ := png . Decode ( reader ) // decoding to golang's image.Image
w := new (bytes. Buffer ) // buffer that will recieve the results
err := steganography . Encode ( w , img , [] byte ( "message" )) // Encode the message into the image
if err != nil {
log . Printf ( "Error Encoding file %v" , err )
return
}
outFile , _ := os . Create ( "out_file.png" ) // create file
w . WriteTo ( outFile ) // write buffer to it
outFile . Close ()
Hinweis: Der Kürze halber wurden alle Fehlerprüfungen entfernt, sie sollten jedoch einbezogen werden.
Der Längenmodus kann verwendet werden, um eine vorläufige Prüfung des Trägerbilds durchzuführen und daraus abzuleiten, wie groß eine Datei sein kann.
sizeOfMessage := steganography . GetMessageSizeFromImage ( img ) // retrieves the size of the encoded message
Der Lesemodus wird verwendet, um ein Bild zu lesen, das mithilfe der LSB-Steganographie codiert wurde, und die verborgene Nachricht aus diesem Bild zu extrahieren.
inFile , _ := os . Open ( encodedInputFile ) // opening file
defer inFile . Close ()
reader := bufio . NewReader ( inFile ) // buffer reader
img , _ := png . Decode ( reader ) // decoding to golang's image.Image
sizeOfMessage := steganography . GetMessageSizeFromImage ( img ) // retrieving message size to decode in the next line
msg := steganography . Decode ( sizeOfMessage , img ) // decoding the message from the file
fmt . Println ( string ( msg ))
Hinweis: Der Kürze halber wurden alle Fehlerprüfungen entfernt, sie sollten jedoch einbezogen werden.
Ein vollständiges Beispiel finden Sie in der Datei „examples/stego.go“. Es handelt sich um eine Befehlszeilen-App, die auf dem Originalzweig dieses Repositorys basiert, jedoch für die Verwendung der Steganography-Bibliothek modifiziert wurde.