A simple tool and library to conceal and reveal UTF-8 encoded data within PNG images.
This tool and/or library does not guarantee the confidentiality of the data concealed in the resulting carrier images. Use this crate under your own risk.
Consult the documentation for more information.
You must install Rust on your system for any of the next installation methods to work:
$ cargo install stega
$ cargo install --git https://github.com/septum/stega
$ git clone https://github.com/septum/stega.git
$ cd stega
$ cargo install --path .
STEGA has two subcommands available:
Using this subcommand will conceal UTF-8 encoded data into a PNG image:
$ stega conceal <IMAGE_PATH> [DATA]
On success, it will save the data-concealed PNG image in the same location as
the the original image with the filename carrier.png
, overwriting an already
existing file.
<IMAGE_PATH>
: Valid PNG image path[DATA]
: Optional UTF-8 encoded text argument (with a fallback through STDIN)
$ stega conceal ferris.png "🦀"
$ cat hello_world.txt | stega conceal image.png
Using this subcommand will reveal UTF-8 encoded data concealed in a PNG image:
$ stega reveal <IMAGE_PATH>
On success, it will print the data to STDOUT.
<IMAGE_PATH>
: Valid PNG image path
$ stega reveal carrier.png
$ stega reveal carrier.png > data.txt
This project is dual-licensed under either:
- MIT license (LICENSE-MIT or https://opensource.org/licenses/MIT)
- Apache License, Version 2.0, (LICENSE-APACHE or https://www.apache.org/licenses/LICENSE-2.0)
at your option.
Contributions are very much welcome! If you find a bug, want a new feature or see an improvement opportunity, please open an issue or submit a PR.