A simple web app that allows you to hide and reveal messages inside images using LSB steganography.
Supports optional password-based encryption for added security.
- Hide messages inside images (LSB technique)
- Reveal hidden messages from images
- Optional password-based encryption
- Image capacity validation
- Safe PNG export to avoid data corruption
- Simple UI built with Streamlit
git clone <repo-url>
cd <repo>
uv sync
To run the app:
uv run streamlit run app.py
git clone <repo-url>
cd <repo>
python -m venv .venv
Activate the environment:
source .venv/bin/activate
.venv\Scripts\activate
Install dependencies:
pip install -r requirements.txt
To run the app:
streamlit run app.py
- Use PNG images to avoid data loss
- Do not use "Save as" from the browser — use the download button
- JPEG compression will destroy hidden data
This project uses Least Significant Bit (LSB) steganography:
- Each pixel stores 1 bit of the hidden message
- The message is optionally encrypted before embedding
- A header is added to detect valid hidden data
- The message is reconstructed during decoding until a null byte is found
uv run pytest
pip install pytest
pytest
- Support for file embedding (not just text)
- Stronger encryption options
- Randomized pixel selection for better security
- Multi-channel encoding