
🔍 Strumento Go per la steganografia LSB, in grado di nascondere qualsiasi file all'interno di un'immagine.
stegify è un semplice strumento da riga di comando in grado di nascondere in modo completamente trasparente qualsiasi file all'interno di un'immagine o di un insieme di immagini. Questa tecnica è nota come LSB (Least Significant Bit) steganografia
| Supporto | Dati | Risultato |
|---|---|---|
![]() | ![]() | ![]() |
Il file Result contiene il file Data nascosto al suo interno. E come puoi vedere, è completamente trasparente.
Se vengono forniti più file Carrier, il file Data verrà suddiviso in pezzi e ogni pezzo viene codificato nel rispettivo supporto.
| Supporto1 | Supporto2 | Dati | Risultato1 | Risultato2 |
|---|---|---|---|---|
![]() |
Il file Result1 contiene una metà del file Data nascosto al suo interno e Result2 l'altra. Come sempre totalmente trasparente.
go install github.com/DimitarPetrov/stegify@latest
brew tap DimitarPetrov/stegify
brew install stegify
Oppure puoi scaricare un binario per il tuo sistema qui.
stegify encode --carrier <file-name> --data <file-name> --result <file-name>
stegify decode --carrier <file-name> --result <file-name>
Durante la codifica, il file con il nome specificato con il flag --data viene nascosto all'interno del file con il nome specificato con il flag --carrier e il file risultante viene salvato in un nuovo file nella directory di lavoro corrente con il nome specificato con il flag --result.
NOTA: Il file risultante non avrà alcuna estensione di file e pertanto deve essere specificato esplicitamente nel flag
--result.
Durante la decodifica, dato il nome di un file supporto con dati precedentemente codificati, i dati vengono estratti e salvati in un nuovo file nella directory di lavoro corrente con il nome specificato con il flag --result.
NOTA: Il file risultante non avrà alcuna estensione di file e pertanto deve essere specificato esplicitamente nel flag
--result.
In entrambi i casi il flag --result può essere omesso e verranno utilizzati i valori predefiniti.
stegify encode --carriers "<file-names...>" --data <file-name> --results "<file-names...>"
OR
stegify encode --carrier <file-name> --carrier <file-name> ... --data <file-name> --result <file-name> --result <file-name> ...
stegify decode --carriers "<file-names...>" --result <file-name>
OR
stegify decode --carrier <file-name> --carrier <file-name> ... --result <file-name>
Quando si codifica un file dati in più di un supporto, il file dati viene suddiviso in N parti, dove N è il numero di supporti forniti. Ogni parte viene quindi codificata nel rispettivo supporto.
NOTA: Durante la decodifica, i supporti devono essere forniti nello stesso ordine esatto affinché il risultato venga estratto correttamente.
Questo tipo di codifica fornisce un ulteriore livello di sicurezza e maggiore flessibilità per quanto riguarda i limiti di dimensione.
In entrambi i casi il flag --result/--results può essere omesso e verranno utilizzati i valori predefiniti.
NOTA: Durante la codifica, il numero dei file risultato (se forniti) deve essere uguale al numero dei file supporto. Durante la decodifica, ci si aspetta esattamente un risultato.
Quando vengono forniti più supporti con tipi di flag misti, i nomi forniti tramite il flag carrier vengono presi per primi e quelli con i flag carriers/c per secondi. Lo stesso vale per il flag result/results.
stegify può essere utilizzato anche a livello di codice e fornisce funzioni facili da usare che lavorano con nomi di file o Reader e Writer grezzi. Puoi visitare godoc sotto il pacchetto steg per i dettagli.
Se il file supporto è in formato jpeg o jpg, dopo la codifica l'immagine del file risultato sarà codificata in png (quindi potrebbe essere più grande in dimensione) nonostante l'estensione del file specificata nel flag risultato.
stegify è stato utilizzato per una delle sfide Capture The Flag in Codefest’19.
Ai partecipanti è stata data una foto di un gruppo di gatti "innocenti". Niente di sospetto, vero? Ripensaci!
![]() |
![]() |
![]() |
![]() |