piss icon indicating copy to clipboard operation
piss copied to clipboard

Picture secret steganography encoder/decoder written in Rust

PISS

Rust Crates Docs Codecov License

PISS (Picture Secret Steganography) is a command line tool to encode/decode secrets into/from image files using LSB steganography.

Run piss --help for usage.

Installation

cargo install piss

Usage examples

Encode a secret into an image

piss encode samples/the-matrix.jpg samples/secret.txt samples/the-matrix-reloaded.png

Original image:

alt text

Image with secret:

alt text

Recover secret from image:

piss decode samples/the-matrix-reloaded.png samples/secret-reloaded.txt

Miscelaneous

By default, PISS uses 2 bits per image byte to encode the secret, you can change this value if desired:

piss -b 4 encode samples/the-matrix.jpg samples/secret.txt samples/the-matrix-reloaded.png

Just remember to decode using the same number of bits, otherwise the output will be garbage:

piss -b 4 decode samples/the-matrix-reloaded.png samples/secret-reloaded.txt

Important note

It is not recommended to encode secrets and save the output as .jpg as compression is performed and the secret is lost.

Features

Supports from 1 to 8 bits secret encoding

The user can specify the number of bits of the secret to use per image byte

Change between image formats

It is possible to convert the image format during encoding, just set a different extension for the output.

Contributing

If you find a vulnerability, bug or would like a new feature, open a new issue.

To introduce your changes into the codebase, submit a Pull Request.

Many thanks!

License

PISS is distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT, and COPYRIGHT for details.