Text Steganography
Text steganography hides information within seemingly ordinary pieces of text.
Instead of modifying pixels or sound waves, data is concealed using spaces, tabs, or invisible Unicode characters.
Common encoding tricks:
- Whitespace or tab padding after lines (Stegsnow classic method).
- Zero-width characters in Unicode (e.g., U+200B or U+200C).
- Encoding binary patterns in typesetting, punctuation, or character order.
- Extract hidden text:
stegsnow input.txt - Extract compressed hidden data:
stegsnow -C input.txt - Check for zero-width Unicode characters:
cat -A input.txt - Inspect hex dump for anomalies:
xxd input.txt - Show hidden spaces/tabs in VS Code: View -> Render Whitespace
| Tool | Purpose |
|---|---|
stegsnow |
CLI tool that extracts (and encodes) hidden messages in text using spacing and tabs. |
| Unicode Steganography with Zero-Width Characters | Browser-based tool that hides or reveals data encoded with zero-width joiners (ZWSP, ZWNJ). |
| Stegcloak | Modern stego tool using zero-width Unicode to conceal text inside other messages (supports encryption). |
cat -A, xxd |
Terminal utilities to detect control characters, spacing, or non-printable Unicode anomalies. |
stegsnow hides or extracts data using trailing whitespace at the end of lines or within text blocks.
Whitespace is invisible in most editors, making it ideal for subtle steganography.
Usage:
# Extract hidden content
stegsnow input.txt
# Extract compressed hidden content
stegsnow -C input.txt
Zero-width Unicode characters include:
- U+200B (Zero Width Space)
- U+200C (Zero Width Non-Joiner)
- U+200D (Zero Width Joiner)
These cannot be seen directly but can be revealed using:
cat -A input.txt
xxd input.txt