← retour aux outils back to tools

# 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/snowdrop

## Overview

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 `-C` flag enables LZSS compression — always use it for larger messages
- Whitespace steganography is a classic CTF technique — always check text files
- `cat -A` reveals 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 `-C` active 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 -A` ré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