
Stéganographie JPEG
go get lukechampine.com/jsteg
jsteg est un paquet pour cacher des données dans des fichiers jpeg, une technique connue sous le nom de stéganographie. Cela est accompli en copiant chaque bit des données dans les bits de poids faible de l'image. La quantité de données pouvant être cachée dépend de la taille du fichier jpeg ; il faut environ 10 à 14 octets de jpeg pour stocker chaque octet de données cachées.
// 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)
Notez que les données ne sont pas délimitées d'une quelconque manière ; l'appelant est responsable de déterminer quels octets de hidden l'intéressent. La manière la plus simple de faire cela est de préfixer les données par leur longueur.
Une commande jsteg est incluse, fournissant un simple encapsuleur autour des fonctions de ce paquet. Elle peut cacher et révéler des données dans des fichiers jpeg et supporte la redirection d'entrée/sortie. Elle gère automatiquement les préfixes de longueur et utilise un en-tête magique pour identifier les jpeg produits par jsteg.
Une commande plus spécifique nommée slink est également incluse. slink intègre une clé publique dans un jpeg, et facilite la signature de données et la vérification de signatures en utilisant des paires de clés dérivées de chaînes de mots de passe. Voir cmd/slink pour une description complète.
Les binaires pour les deux commandes peuvent être trouvés ici.
Ce paquet réutilise une quantité significative de code du paquet image/jpeg. La licence de style BSD qui régit l'utilisation de ce code peut être trouvée dans le fichier go_LICENSE.