La esteganografía es una biblioteca escrita en Pure go para permitir la esteganografía LSB simple en imágenes. Es capaz tanto de codificar como decodificar imágenes. Puede almacenar archivos de cualquier formato. Esta biblioteca está inspirada en Stego de EthanWelsh, una utilidad de línea de comandos con el mismo propósito.
go get - u github . com / auyer / steganography
Original | Codificado |
---|---|
La segunda imagen contiene el primer párrafo de la descripción de un estegosaurio en Wikipedia, también disponible en ejemplos/message.txt como ejemplo.
package main
import (
"bufio"
"image/png"
"io/ioutil"
"github.com/auyer/steganography"
)
El modo de escritura se utiliza para tomar un mensaje e incrustarlo en un archivo de imagen usando esteganografía LSB para producir un archivo de imagen secreto que contendrá su mensaje.
Tenga en cuenta que el tamaño mínimo de la imagen es de 24 píxeles por byte. Por cada byte adicional, se necesitan 3 píxeles más.
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 ()
nota: todas las comprobaciones de errores se eliminaron por motivos de brevedad, pero deben incluirse.
El modo de longitud se puede utilizar para realizar una verificación preliminar de la imagen del soporte para deducir el tamaño del archivo que puede almacenar.
sizeOfMessage := steganography . GetMessageSizeFromImage ( img ) // retrieves the size of the encoded message
El modo de lectura se utiliza para leer una imagen que ha sido codificada mediante esteganografía LSB y extraer el mensaje oculto de esa imagen.
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 ))
nota: todas las comprobaciones de errores se eliminaron por motivos de brevedad, pero deben incluirse.
Para ver un ejemplo completo, consulte el archivo ejemplos/stego.go. Es una aplicación de línea de comandos basada en la bifurcación original de este repositorio, pero modificada para usar la biblioteca Steganography.