A modular, extensible toolkit for hiding information across different data modalities—text, audio, and images—using both classical and deep-learning approaches.
This project evolves through three major phases:
- Classical Steganography (LSB-based)
- Deep Learning Steganography (CNN Encoder–Decoder)
- Implicit Neural Representations (INRs)
The goal is to provide a unified playground for research, experimentation, and demonstration of cross-modal steganographic systems.
Traditional bit-level embedding methods act as the baseline for evaluating more advanced models.
- Hide text inside images (PNG/JPG recommended)
- Extract hidden messages losslessly
- Optional zlib compression for payload reduction
- Optional XOR-based encryption for basic confidentiality
- Bit-level packing/unpacking routines for fine-grained control
- Hide WAV audio inside images using LSB manipulation
- Extract embedded audio with low reconstruction error
- Sample-accurate modifications to keep audio artifacts minimal
Learned steganography using convolutional neural networks.
- Encoder embeds a secret image into a cover image
- Decoder reconstructs the hidden secret from the stego output
- Lightweight CNN architecture optimized for:
- CPU-only machines
- Optional CUDA acceleration when available
- PSNR-based quality analysis for:
- Cover vs. Stego
- Secret vs. Recovered Secret
- Designed to run on low-end laptops using small resolutions (e.g. 128×128)
Next-generation steganography using Implicit Neural Representations (INRs), encoding information directly into the weights of a continuous neural field rather than manipulating discrete pixel grids.
- Shared SIREN backbone with two output heads — one for the cover, one for the secret
- Secret is encoded into a key-shifted coordinate space — without the correct integer key, extraction produces noise
- Supports all combinations of:
image,audio,text, andvideoas cover or secret - Supports
.png,.jpg,.wav,.mp3,.flac,.ogg,.aac,.m4a,.mp4,.avi,.txt - Five quality presets:
fast/low/medium/high/ultra— auto-selected based on hardware - Adaptive loss weighting per modality — text and audio secrets receive higher training priority
- PSNR-based quality evaluation with per-modality verdicts in
report.json(GOOD / OK / POOR / UNUSABLE) - Each run saves to a unique timestamped subfolder — no output files are ever overwritten
- Live console warning if secret PSNR falls below usable threshold after training
This phase is compute-intensive. A GPU is strongly recommended for usable results:
- On CPU, the
fastpreset (~1 min) is available to verify the pipeline works, but output quality will likely be poor - The minimum recommended preset for real results is
low(~15–45 min on CPU depending on machine) - Google Colab (free tier T4 GPU) is the recommended environment for students without a GPU —
mediumquality runs in ~3 minutes - Upload
inrCM.py+ your input files to Colab and run:
!pip install torch librosa soundfile Pillow
!python inrCM.py --modal1 cover.png --modal2 secret.txt --mode hide --key 42 --quality medium- Provide a unified framework for experimenting with multiple steganographic approaches
- Enable comparison between:
- Handcrafted LSB methods
- CNN-based deep learning methods
- INR-based implicit representations (cross-modal, weight-space encoding)
- Serve as a reference implementation for coursework, research projects, and demos
- Achieve truly cross-modal steganography, where different data types (image, audio, text, video) can be embedded into each other via learned INR models
steganalysis.py is a unified, blind steganalysis tool covering all three project phases (LSB, CNN, INR). Given a cover and stego image, it computes imperceptibility metrics (PSNR, SSIM, MSE, SNR, UQI, NCC, BER), runs classical detection tests (Chi-square, RS analysis), analyses entropy, bit-planes, and frequency-domain noise, and produces a rule-based detection verdict.
Currently supports image inputs only (LSB and CNN outputs, plus image-modality INR outputs). Audio/video/text steganalysis for the INR module is planned as a separate extension.
python steganalysis.py --cover cover.png --stego stego.png
python steganalysis.py --cover cover.png --stego stego.png --mode inr --secret secret.png
python steganalysis.py --cover cover.png --stego stego.png --plot results --output report.json| Flag | Description |
|---|---|
--cover / --stego |
Required input images |
--secret |
Optional payload image for cover-vs-secret comparison |
--mode |
lsb | cnn | inr | auto (default) |
--output |
Save full JSON metrics report |
--plot |
Save visual report PNG (prefix name) |
Full pipeline breakdown: steganalysis_architecture.md