Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Quick Start

This guide walks through the most common workflow: generating keys, embedding a payload into a cover image, and extracting it.

1. Generate Keys

# Generate an ML-KEM-1024 key pair for encryption
shadowforge keygen --algorithm kyber1024 --output ./keys

# Generate an ML-DSA-87 key pair for signing
shadowforge keygen --algorithm dilithium3 --output ./keys-sign

This creates public.key and secret.key inside each output directory.

2. Embed a Payload

# Hide a file inside a PNG cover image using LSB steganography
shadowforge embed \
  --input secret-document.txt \
  --cover photo.png \
  --output stego-photo.png \
  --technique lsb

The output file looks identical to the original photo but carries the hidden payload.

3. Extract a Payload

# Recover the hidden file
shadowforge extract \
  --input stego-photo.png \
  --output recovered-document.txt \
  --technique lsb

4. Analyse Cover Capacity

Before embedding, check how much data a cover can hold:

shadowforge analyse \
  --input photo.png \
  --technique lsb \
  --format json

Available Techniques

TechniqueCover TypeBest For
lsbPNG, BMPLarge payloads in lossless images
dctJPEGLossy images (survives recompression)
paletteGIF, indexed PNGSmall payloads in palette images
lsb-audioWAVAudio covers
phaseWAVPhase-encoded audio (more robust)
echoWAVEcho-hidden audio
zero-widthPlain textText covers (zero-width Unicode)
pdf-contentPDFPDF content-stream LSB
pdf-metadataPDFPDF metadata fields
corpusImage corpusZero-modification cover selection

Next Steps