
Esteganografía JPEG
go get lukechampine.com/jsteg
jsteg es un paquete para ocultar datos dentro de archivos jpeg, una técnica conocida como esteganografía. Esto se logra copiando cada bit de los datos en los bits menos significativos de la imagen. La cantidad de datos que se pueden ocultar depende del tamaño del archivo jpeg; se necesitan aproximadamente de 10 a 14 bytes de jpeg para almacenar cada byte de los datos ocultos.
// 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)
Tenga en cuenta que los datos no están delimitados de ninguna manera; el llamante es responsable de determinar qué bytes de hidden le interesan. La forma más sencilla de hacerlo es anteponer a los datos su longitud.
Se incluye un comando jsteg, que proporciona un envoltorio simple alrededor de las funciones de este paquete. Puede ocultar y revelar datos en archivos jpeg y admite redirección de entrada/salida. Maneja automáticamente los prefijos de longitud y utiliza un encabezado mágico para identificar jpegs producidos por jsteg.
También se incluye un comando más específico llamado slink. slink incrusta una clave pública en un jpeg, y facilita la firma de datos y la verificación de firmas utilizando pares de claves derivados de cadenas de contraseña. Consulte cmd/slink para una descripción completa.
Los binarios para ambos comandos se pueden encontrar aquí.
Este paquete reutiliza una cantidad significativa de código del paquete image/jpeg. La licencia de estilo BSD que rige el uso de ese código se puede encontrar en el archivo go_LICENSE.