Steno-CLI is a high-performance steganography tool for encoding and decoding hidden messages in image files. Designed with security, speed, and flexibility in mind, it offers optional AES encryption, multi-threading for fast image processing, and compatibility with common image formats such as JPEG and PNG.
- AES Encryption: Secure your hidden messages with AES encryption (optional).
- Multi-threading: Fast processing of large images using parallel threads.
- Flexible Formats: Supports
.jpg
,.jpeg
, and.png
files. - Binary Data Support: Encode/decode raw binary data (not just text).
- Steganography Transcription: Choose between
Pitman
andGregg
shorthand systems for transcription. - Efficient CLI: Built for fast and flexible command-line interaction, perfect for security and penetration testing.
To use Steno-CLI, first ensure you have Python 3.x installed, then install the required dependencies:
pip install -r requirements.txt
requirements.txt:
Pillow
pycryptodome
To hide a message inside an image, use the encode
action. Optionally, encrypt the message using AES for additional security.
python steno-cli.py image.png -a encode -m "Your secret message" --key my16bytekey123456
This will generate a new image file (encoded_image.png
) with the hidden message embedded using Least Significant Bit (LSB) steganography.
To retrieve and transcribe the hidden message from an image, use the decode
action. If the message was encrypted, provide the same key used during encoding.
python steno-cli.py encoded_image.png -a decode --key my16bytekey123456
To speed up the process, especially when working with large images, you can enable multi-threading by specifying the number of threads:
python steno-cli.py image.png -a encode -m "Your secret message" --threads 4
Option | Description |
---|---|
files |
One or more image files to encode/decode (.jpg , .jpeg , .png ). |
-a , --action |
encode or decode to specify whether to hide or extract a message. |
-m , --message |
The message to encode into the image (for encode action only). |
-s , --system |
Transcription system for decoding (pitman or gregg ). Default: pitman . |
-k , --key |
16, 24, or 32-byte key for AES encryption (optional but recommended for encoding). |
-t , --threads |
Number of threads to use for parallel processing (default is 1 for single-threaded). |
Steno-CLI offers the option to encrypt your message before embedding it in the image. This is particularly useful in scenarios where additional security is needed (e.g., security testing or sensitive data protection).
To use encryption, provide a 16, 24, or 32-byte key with the --key
option. Ensure you use the same key when decoding the message.
Example:
python steno-cli.py image.png -a encode -m "Your secret message" --key "my16bytekey123456"
For decoding:
python steno-cli.py encoded_image.png -a decode --key "my16bytekey123456"
Processing large images can be time-consuming. To improve performance, you can specify the number of threads to use when encoding or decoding:
python steno-cli.py image.png -a encode -m "Your secret message" --threads 4
This significantly speeds up the process, especially for high-resolution images or large datasets.
This project is licensed under the MIT Licence - see the LICENSE file for details.
Feel free to open issues or submit pull requests if you'd like to contribute. All contributions are welcome.