Skip to content

A simple, in CLI tool that can be used for stenography

License

Notifications You must be signed in to change notification settings

SaadSaid158/Steno-CLI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 

Repository files navigation


Steno-CLI: Advanced Steganography Tool

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.

Features

  • 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 and Gregg shorthand systems for transcription.
  • Efficient CLI: Built for fast and flexible command-line interaction, perfect for security and penetration testing.

Installation

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

Usage

1. Encode a Message into an Image

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.

2. Decode a Message from an Image

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

3. Using Multi-threading for Speed

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

CLI Options

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).

Encryption (AES)

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"

Multi-threading

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.

Licence

This project is licensed under the MIT Licence - see the LICENSE file for details.

Contributing

Feel free to open issues or submit pull requests if you'd like to contribute. All contributions are welcome.


About

A simple, in CLI tool that can be used for stenography

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages