
Steganografia JPEG
go get lukechampine.com/jsteg
jsteg è un pacchetto per nascondere dati all'interno di file jpeg, una tecnica nota come
steganografia. Questo viene realizzato
copiando ogni bit dei dati nei bit meno significativi dell'immagine.
La quantità di dati che può essere nascosta dipende dalla dimensione del file jpeg; servono
circa 10-14 byte di jpeg per memorizzare ogni byte dei dati nascosti.
// apri un jpeg esistente
f, _ := os.Open(filename)
img, _ := jpeg.Decode(f)
// aggiungi dati nascosti
out, _ := os.Create(outfilename)
data := []byte("my secret data")
jsteg.Hide(out, img, data, nil)
// leggi i dati nascosti:
hidden, _ := jsteg.Reveal(out)
Nota che i dati non sono delimitati in alcun modo; chi chiama deve determinare
quali byte di hidden gli interessano. Il modo più semplice per farlo
è anteporre ai dati la loro lunghezza.
È incluso un comando jsteg, che fornisce un semplice wrapper attorno alle
funzioni di questo pacchetto. Può nascondere e rivelare dati in file jpeg e
supporta la reindirizzazione dell'input/output. Gestisce automaticamente i prefissi di lunghezza
e utilizza un'intestazione magica per identificare i jpeg prodotti da jsteg.
È incluso anche un comando più mirato chiamato slink. slink incorpora
una chiave pubblica in un jpeg e semplifica la firma di dati e la verifica delle firme
utilizzando coppie di chiavi derivate da stringhe password. Vedi cmd/slink per una
descrizione completa.
I binari per entrambi i comandi si trovano qui.
Questo pacchetto riutilizza una quantità significativa di codice dal pacchetto image/jpeg.
La licenza in stile BSD che regola l'uso di tale codice si trova nel file
go_LICENSE.