Installation — Stéganô 0.5.4 documentation

# Installation

    $ sudo pip install Stegano

You will be able to use Stéganô in your Python programs or as a command line tool.

If you want to retrieve the source code (with the unit tests):

    $ git clone https://github.com/cedricbonhomme/Stegano.git

# Using Stéganô as a Python module

## LSB method

    Python 3.5.1 (default, Dec  7 2015, 11:33:57)
    [GCC 4.9.2] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from stegano import slsb
    >>> secret = slsb.hide("./tests/sample-files/Lenna.png", "Hello world!")
    >>> secret.save("./Lenna-secret.png")
    >>> print(slsb.reveal("./Lenna-secret.png"))
    Hello world!

## Description field of the image

For JPEG and TIFF images.

    Python 3.5.1 (default, Dec  7 2015, 11:33:57)
    [GCC 4.9.2] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from stegano import exifHeader
    >>> secret = exifHeader.hide("./tests/sample-files/20160505T130442.jpg",
                            "./image.jpg", secret_message="Hello world!")
    >>> print(exifHeader.reveal("./image.jpg"))

More examples are available in the tests.

# Using Stéganô in command line for your scripts

## Display help

    $ slsb --help
    Usage: slsb [options]

    Options:
    --version             show program's version number and exit
    -h, --help            show this help message and exit
    --hide                Hides a message in an image.
    --reveal              Reveals the message hided in an image.
    -i INPUT_IMAGE_FILE, --input=INPUT_IMAGE_FILE
                            Input image file.
    -o OUTPUT_IMAGE_FILE, --output=OUTPUT_IMAGE_FILE
                            Output image containing the secret.
    -m SECRET_MESSAGE, --secret-message=SECRET_MESSAGE
                            Your secret message to hide (non binary).
    -f SECRET_FILE, --secret-file=SECRET_FILE
                            Your secret to hide (Text or any binary file).
    -b SECRET_BINARY, --binary=SECRET_BINARY
                            Output for the binary secret (Text or any binary
                            file).

## Hide and reveal a text message with the LSB method

    $ lsb --hide -i ./tests/sample-files/Lenna.png -o ./Lenna_enc.png -m HelloWorld!
    $ lsb --reveal -i ./Lenna_enc.png
    HelloWorld!

## Hide and reveal a binary file

    $ wget http://www.gnu.org/music/free-software-song.ogg
    $ lsb --hide -i ./tests/sample-files/Montenach.png -o ./Montenach_enc.png -f ./free-software-song.ogg
    $ rm free-software-song.ogg
    $ lsb --reveal -i ./Montenach_enc.png -b ./song.ogg

## Hide and reveal a text message with the LSB method and generated sets

Sets are used in order to select the pixels where the message will be hidden.

    echo "Hide the message  with the Sieve of Eratosthenes..."
    lsb-set --hide -i ./tests/sample-files/Montenach.png -o ./surprise.png --generator eratosthenes -m 'Joyeux Noël!'
    echo ""

    echo "Try to reveal with Mersenne numbers..."
    lsb-set --reveal --generator mersenne -i ./surprise.png
    echo ""

    echo "Try to reveal with fermat numbers..."
    lsb-set --reveal --generator fermat -i ./surprise.png
    echo ""

    echo "Try to reveal with carmichael numbers..."
    lsb-set --reveal --generator carmichael -i ./surprise.png
    echo ""

    echo "Try to reveal with Sieve of Eratosthenes..."
    lsb-set --reveal --generator eratosthenes -i ./surprise.png

An other example:

    # Hide the message - LSB with a set defined by the identity function (f(x) = x).
    lsb-set --hide -i ./tests/sample-files/Montenach.png -o ./enc-identity.png --generator identity -m 'I like steganography.'

    # Hide the message - LSB only.
    lsb --hide -i ./tests/sample-files/Montenach.png -o ./enc.png -m 'I like steganography.'

    # Check if the two generated files are the same.
    sha1sum ./enc-identity.png ./enc.png

    # The output of lsb is given to lsb-set.
    lsb-set --reveal -i ./enc.png --generator identity

    # The output of lsb-set is given to lsb.
    lsb --reveal -i ./enc-identity.png

# Steganalysis

    # Hide the message  with Sieve of Eratosthenes
    lsb-set --hide -i ./tests/sample-files/Ginnifer-Goodwin.png -o ./surprise.png --generator eratosthenes -m 'Very important message.'

    # Steganalysis of the original photo
    steganalysis-parity -i ./tests/sample-files/Ginnifer-Goodwin.png -o ./surprise_st_original.png

    # Steganalysis of the secret photo
    steganalysis-parity -i ./surprise.png -o ./surprise_st_secret.png

    # Reveal with Sieve of Eratosthenes
    lsb-set --reveal --generator eratosthenes -i ./surprise.png