stegsnow
Outil de stéganographie par espaces blancs. Cache des données dans des fichiers texte en ajoutant des caractères d'espacement invisibles (espaces et tabulations) en fin de ligne : détectable uniquement en examinant les octets bruts. Whitespace steganography tool. Hides data in text files by appending invisible whitespace characters (spaces and tabs) to the end of lines — detectable only by examining raw bytes.
↗ https://github.com/mattkwan/snowdropOverview
stegsnow hides messages in ASCII text by appending spaces and tabs to end of lines. The data is invisible to casual inspection but can be extracted by anyone with stegsnow and the password. Useful in CTF challenges where a text file seems to contain nothing, but has hidden whitespace data.
Basic Usage
Hide a message in a text file
stegsnow -C -m "secret message" original.txt output.txt
Hide with password protection
stegsnow -C -p password -m "secret message" original.txt output.txt
Extract hidden message
stegsnow -C output.txt
Extract with password
stegsnow -C -p password output.txt
Hiding Data
Hide a short message
stegsnow -C -m "FLAG{hidden_message}" cover.txt stego.txt
Hide with compression + encryption
stegsnow -C -p secretpass -m "sensitive data" cover.txt hidden.txt
Hide contents of a file
stegsnow -C -p pass $(cat message.txt) cover.txt stego.txt
Extraction
Extract without password
stegsnow stego.txt
Extract with password
stegsnow -C -p password stego.txt
View raw whitespace
cat -A stego.txt | grep " $\| $"
→ Shows lines ending in spaces (^I = tab, space before $)
CTF Detection
Check if a text file has stegsnow hidden data Look for trailing whitespace patterns
cat -A suspicious.txt | grep -E " +\$| +\$" | head -5
Check file size — stego version will be slightly larger
ls -la original.txt stego.txt
Try extraction without password first
stegsnow suspicious.txt
# Then try common passwords
for pass in "password" "secret" "flag" "stego" "snow"; do
result=$(stegsnow -p "$pass" suspicious.txt 2>/dev/null)
[ -n "$result" ] && echo "Pass: $pass → $result"
done
Options
-C Compress the data (recommended)
-Q Quiet mode
-S Maximum amount of data to hide
-m MSG Message to hide
-p PASS Password for encryption
-l N Line length (default: 80)
Show capacity of cover file
stegsnow -S cover.txt
Tips
- The
-Cflag enables LZSS compression — always use it for larger messages - Whitespace steganography is a classic CTF technique — always check text files
cat -Areveals hidden whitespace: spaces show as spaces before$, tabs as^I- No password usually means no encryption but possibly still compressed
- The data is hidden in the trailing whitespace of text lines — any tool that strips trailing whitespace will destroy the hidden data
Help / Man page
stegsnow [options] [infile] [outfile]
Hide: stegsnow -C -m MESSAGE [-p PASS] infile outfile
Extract: stegsnow -C [-p PASS] infile
-C Compress
-Q Quiet
-S Show capacity
-m MSG Message to hide
-p PASS Password
-l N Line length
Vue d’ensemble
stegsnow cache des messages dans du texte ASCII en ajoutant des espaces et tabulations en fin de ligne. Les données sont invisibles à une inspection superficielle mais peuvent être extraites par quiconque possède stegsnow et le mot de passe. Utile dans les challenges CTF où un fichier texte semble ne contenir rien, mais dissimule en réalité des données dans les espaces blancs.
Utilisation de base
# Cacher un message dans un fichier texte
stegsnow -C -m "secret message" original.txt output.txt
# Cacher avec protection par mot de passe
stegsnow -C -p password -m "secret message" original.txt output.txt
# Extraire le message caché
stegsnow -C output.txt
# Extraire avec mot de passe
stegsnow -C -p password output.txt
Cacher des données
# Cacher un message court
stegsnow -C -m "FLAG{hidden_message}" cover.txt stego.txt
# Cacher avec compression + chiffrement
stegsnow -C -p secretpass -m "sensitive data" cover.txt hidden.txt
# Cacher le contenu d'un fichier
stegsnow -C -p pass $(cat message.txt) cover.txt stego.txt
Extraction
# Extraire sans mot de passe
stegsnow stego.txt
# Extraire avec mot de passe
stegsnow -C -p password stego.txt
# Visualiser les espaces bruts
cat -A stego.txt | grep " $\| $"
→ Montre les lignes se terminant par des espaces (^I = tabulation, espace avant $)
Détection CTF
# Vérifier si un fichier texte contient des données cachées par stegsnow
# Chercher des motifs d'espaces en fin de ligne
cat -A suspicious.txt | grep -E " +\$| +\$" | head -5
# Vérifier la taille du fichier : la version stéganographiée sera légèrement plus grande
ls -la original.txt stego.txt
# Essayer d'abord une extraction sans mot de passe
stegsnow suspicious.txt
# Puis essayer des mots de passe courants
for pass in "password" "secret" "flag" "stego" "snow"; do
result=$(stegsnow -p "$pass" suspicious.txt 2>/dev/null)
[ -n "$result" ] && echo "Pass: $pass → $result"
done
Options
-C Compresser les données (recommandé)
-Q Mode silencieux
-S Quantité maximale de données à cacher
-m MSG Message à cacher
-p PASS Mot de passe pour le chiffrement
-l N Longueur de ligne (par défaut : 80)
Afficher la capacité du fichier porteur
stegsnow -S cover.txt
Conseils
- Le flag
-Cactive la compression LZSS : toujours l’utiliser pour des messages plus longs - La stéganographie par espaces blancs est une technique CTF classique : toujours vérifier les fichiers texte
cat -Arévèle les espaces cachés : les espaces s’affichent comme des espaces avant$, les tabulations comme^I- L’absence de mot de passe signifie généralement pas de chiffrement mais possiblement encore compressé
- Les données sont cachées dans les espaces en fin de ligne : tout outil qui supprime les espaces de fin détruira les données cachées
Aide / Page de manuel
stegsnow [options] [infile] [outfile]
Hide: stegsnow -C -m MESSAGE [-p PASS] infile outfile
Extract: stegsnow -C [-p PASS] infile
-C Compress
-Q Quiet
-S Show capacity
-m MSG Message to hide
-p PASS Password
-l N Line length