mirror of
https://github.com/cedricbonhomme/Stegano.git
synced 2025-05-12 00:58:32 +02:00
Update documentation
This commit is contained in:
parent
82b59f73db
commit
076a5d447f
4 changed files with 63 additions and 77 deletions
|
@ -68,7 +68,7 @@ Secret Message
|
||||||
### Hide the message with the Sieve of Eratosthenes
|
### Hide the message with the Sieve of Eratosthenes
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ stegano-lsb-set hide -i ./tests/sample-files/Lenna.png -m 'Secret Message' --generator eratosthenes -o Lena2.png
|
$ stegano-lsb hide -i ./tests/sample-files/Lenna.png -m 'Secret Message' --generator eratosthenes -o Lena2.png
|
||||||
```
|
```
|
||||||
|
|
||||||
The message will be scattered in the picture, following a set described by the
|
The message will be scattered in the picture, following a set described by the
|
||||||
|
|
|
@ -28,26 +28,31 @@ Sets are used in order to select the pixels where the message will be hidden.
|
||||||
|
|
||||||
Python 3.10.0 (default, Oct 17 2021, 09:02:57) [GCC 11.2.0] on linux
|
Python 3.10.0 (default, Oct 17 2021, 09:02:57) [GCC 11.2.0] on linux
|
||||||
Type "help", "copyright", "credits" or "license" for more information.
|
Type "help", "copyright", "credits" or "license" for more information.
|
||||||
>>> from stegano import lsbset
|
>>> from stegano import lsb
|
||||||
>>> from stegano.lsbset import generators
|
>>> from stegano.lsb import generators
|
||||||
|
|
||||||
# Hide a secret with the Sieve of Eratosthenes
|
# Hide a secret with the Sieve of Eratosthenes
|
||||||
>>> secret_message = "Hello World!"
|
>>> secret_message = "Hello World!"
|
||||||
>>> secret_image = lsbset.hide("./tests/sample-files/Lenna.png",
|
>>> secret_image = lsb.hide("./tests/sample-files/Lenna.png", secret_message, generators.eratosthenes())
|
||||||
secret_message,
|
|
||||||
generators.eratosthenes())
|
|
||||||
>>> secret_image.save("./image.png")
|
>>> secret_image.save("./image.png")
|
||||||
|
|
||||||
# Try to decode with another generator
|
# Try to decode with another generator
|
||||||
>>> message = lsbset.reveal("./image.png", generators.fibonacci())
|
>>> message = lsb.reveal("./image.png", generators.fibonacci())
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
File "<stdin>", line 1, in <module>
|
File "/Users/flavien/.local/share/virtualenvs/Stegano-sY_cwr69/bin/stegano-lsb", line 6, in <module>
|
||||||
File "/home/cedric/projects/Stegano/stegano/lsbset/lsbset.py", line 111, in reveal
|
sys.exit(main())
|
||||||
for color in img_list[generated_number]:
|
File "/Users/flavien/Perso/dev/Stegano/bin/lsb.py", line 190, in main
|
||||||
IndexError: list index out of range
|
img_encoded = lsb.hide(
|
||||||
|
File "/Users/flavien/Perso/dev/Stegano/stegano/lsb/lsb.py", line 63, in hide
|
||||||
|
hider.encode_pixel((col, row))
|
||||||
|
File "/Users/flavien/Perso/dev/Stegano/stegano/tools.py", line 165, in encode_pixel
|
||||||
|
r, g, b, *a = self.encoded_image.getpixel(coordinate)
|
||||||
|
File "/Users/flavien/.local/share/virtualenvs/Stegano-sY_cwr69/lib/python3.10/site-packages/PIL/Image.py", line 1481, in getpixel
|
||||||
|
return self.im.getpixel(xy)
|
||||||
|
IndexError: image index out of range
|
||||||
|
|
||||||
# Decode with Eratosthenes
|
# Decode with Eratosthenes
|
||||||
>>> message = lsbset.reveal("./image.png", generators.eratosthenes())
|
>>> message = lsb.reveal("./image.png", generators.eratosthenes())
|
||||||
>>> message
|
>>> message
|
||||||
'Hello World!'
|
'Hello World!'
|
||||||
|
|
||||||
|
|
|
@ -12,52 +12,56 @@ Display help
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ stegano-lsb --help
|
$ stegano-lsb --help
|
||||||
usage: stegano-lsb [-h] {hide,reveal} ...
|
usage: stegano-lsb [-h] {hide,reveal,list-generators} ...
|
||||||
|
|
||||||
positional arguments:
|
positional arguments:
|
||||||
{hide,reveal} sub-command help
|
{hide,reveal,list-generators}
|
||||||
hide hide help
|
sub-command help
|
||||||
reveal reveal help
|
hide hide help
|
||||||
|
reveal reveal help
|
||||||
|
list-generators list-generators help
|
||||||
|
|
||||||
optional arguments:
|
options:
|
||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ stegano-lsb hide --help
|
$ stegano-lsb hide --help
|
||||||
usage: stegano-lsb hide [-h] -i INPUT_IMAGE_FILE [-e {UTF-8,UTF-32LE}]
|
usage: stegano-lsb hide [-h] -i INPUT_IMAGE_FILE [-e {UTF-8,UTF-32LE}] [-g [GENERATOR_FUNCTION ...]] [-s SHIFT] (-m SECRET_MESSAGE | -f SECRET_FILE) -o OUTPUT_IMAGE_FILE
|
||||||
(-m SECRET_MESSAGE | -f SECRET_FILE) -o
|
|
||||||
OUTPUT_IMAGE_FILE
|
|
||||||
|
|
||||||
optional arguments:
|
options:
|
||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
-i INPUT_IMAGE_FILE, --input INPUT_IMAGE_FILE
|
-i INPUT_IMAGE_FILE, --input INPUT_IMAGE_FILE
|
||||||
Input image file.
|
Input image file.
|
||||||
-e {UTF-8,UTF-32LE}, --encoding {UTF-8,UTF-32LE}
|
-e {UTF-8,UTF-32LE}, --encoding {UTF-8,UTF-32LE}
|
||||||
Specify the encoding of the message to hide. UTF-8
|
Specify the encoding of the message to hide. UTF-8 (default) or UTF-32LE.
|
||||||
(default) or UTF-32LE.
|
-g [GENERATOR_FUNCTION ...], --generator [GENERATOR_FUNCTION ...]
|
||||||
-m SECRET_MESSAGE Your secret message to hide (non binary).
|
Generator (with optional arguments)
|
||||||
-f SECRET_FILE Your secret to hide (Text or any binary file).
|
-s SHIFT, --shift SHIFT
|
||||||
-o OUTPUT_IMAGE_FILE, --output OUTPUT_IMAGE_FILE
|
Shift for the generator
|
||||||
|
-m SECRET_MESSAGE Your secret message to hide (non binary).
|
||||||
|
-f SECRET_FILE Your secret to hide (Text or any binary file).
|
||||||
|
-o OUTPUT_IMAGE_FILE, --output OUTPUT_IMAGE_FILE
|
||||||
Output image containing the secret.
|
Output image containing the secret.
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ stegano-lsb reveal --help
|
$ stegano-lsb reveal --help
|
||||||
usage: stegano-lsb reveal [-h] -i INPUT_IMAGE_FILE [-e {UTF-8,UTF-32LE}]
|
usage: stegano-lsb reveal [-h] -i INPUT_IMAGE_FILE [-e {UTF-8,UTF-32LE}] [-g [GENERATOR_FUNCTION ...]] [-s SHIFT] [-o SECRET_BINARY]
|
||||||
[-o SECRET_BINARY]
|
|
||||||
|
|
||||||
optional arguments:
|
options:
|
||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
-i INPUT_IMAGE_FILE, --input INPUT_IMAGE_FILE
|
-i INPUT_IMAGE_FILE, --input INPUT_IMAGE_FILE
|
||||||
Input image file.
|
Input image file.
|
||||||
-e {UTF-8,UTF-32LE}, --encoding {UTF-8,UTF-32LE}
|
-e {UTF-8,UTF-32LE}, --encoding {UTF-8,UTF-32LE}
|
||||||
Specify the encoding of the message to reveal. UTF-8
|
Specify the encoding of the message to reveal. UTF-8 (default) or UTF-32LE.
|
||||||
(default) or UTF-32LE.
|
-g [GENERATOR_FUNCTION ...], --generator [GENERATOR_FUNCTION ...]
|
||||||
-o SECRET_BINARY Output for the binary secret (Text or any binary
|
Generator (with optional arguments)
|
||||||
file).
|
-s SHIFT, --shift SHIFT
|
||||||
|
Shift for the generator
|
||||||
|
-o SECRET_BINARY Output for the binary secret (Text or any binary file).
|
||||||
|
|
||||||
|
|
||||||
Hide and reveal a text message
|
Hide and reveal a text message
|
||||||
|
@ -92,63 +96,40 @@ Hide and reveal a binary file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
The command ``stegano-lsb-set``
|
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
Sets are used in order to select the pixels where the message will be hidden.
|
Sets are used in order to select the pixels where the message will be hidden.
|
||||||
|
|
||||||
Hide and reveal a text message
|
Hide and reveal a text message with set
|
||||||
------------------------------
|
---------------------------------------
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Hide the message with the Sieve of Eratosthenes
|
# Hide the message with the Sieve of Eratosthenes
|
||||||
$ stegano-lsb-set hide -i ./tests/sample-files/Montenach.png --generator eratosthenes -m 'Joyeux Noël!' -o ./surprise.png
|
$ stegano-lsb hide -i ./tests/sample-files/Montenach.png --generator eratosthenes -m 'Joyeux Noël!' -o ./surprise.png
|
||||||
|
|
||||||
# Try to reveal with Mersenne numbers
|
# Try to reveal with Mersenne numbers
|
||||||
$ stegano-lsb-set reveal --generator mersenne -i ./surprise.png
|
$ stegano-lsb reveal --generator mersenne -i ./surprise.png
|
||||||
|
|
||||||
# Try to reveal with fermat numbers
|
# Try to reveal with fermat numbers
|
||||||
$ stegano-lsb-set reveal --generator fermat -i ./surprise.png
|
$ stegano-lsb reveal --generator fermat -i ./surprise.png
|
||||||
|
|
||||||
# Try to reveal with carmichael numbers
|
# Try to reveal with carmichael numbers
|
||||||
$ stegano-lsb-set reveal --generator carmichael -i ./surprise.png
|
$ stegano-lsb reveal --generator carmichael -i ./surprise.png
|
||||||
|
|
||||||
# Try to reveal with Sieve of Eratosthenes
|
# Try to reveal with Sieve of Eratosthenes
|
||||||
$ stegano-lsb-set reveal --generator eratosthenes -i ./surprise.png
|
$ stegano-lsb reveal --generator eratosthenes -i ./surprise.png
|
||||||
|
|
||||||
An other example:
|
|
||||||
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
# Hide the message - LSB with a set defined by the identity function (f(x) = x).
|
|
||||||
stegano-lsb-set hide -i ./tests/sample-files/Montenach.png --generator identity -m 'I like steganography.' -o ./enc-identity.png
|
|
||||||
|
|
||||||
# Hide the message - LSB only.
|
|
||||||
stegano-lsb hide -i ./tests/sample-files/Montenach.png -m 'I like steganography.' -o ./enc.png
|
|
||||||
|
|
||||||
# Check if the two generated files are the same.
|
|
||||||
sha1sum ./enc-identity.png ./enc.png
|
|
||||||
|
|
||||||
# The output of lsb is given to lsb-set.
|
|
||||||
stegano-lsb-set reveal -i ./enc.png --generator identity
|
|
||||||
|
|
||||||
# The output of lsb-set is given to lsb.
|
|
||||||
stegano-lsb reveal -i ./enc-identity.png
|
|
||||||
|
|
||||||
|
|
||||||
Sometimes it can be useful to skip the first values of a set. For example if you want
|
Sometimes it can be useful to skip the first values of a set. For example if you want
|
||||||
to hide several messages or because due to the selected generator
|
to hide several messages or because due to the selected generator
|
||||||
(Fibonacci starts with 0, 1, 1, etc.). Or maybe you just want to add more complexity.
|
(Fibonacci starts with 0, 1, 1, etc.). Or maybe you just want to add more complexity.
|
||||||
In this case, simply use the optional arguments ``--shift``:
|
In this case, simply use the optional arguments ``--shift`` or ``-s``:
|
||||||
|
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
stegano-lsb-set reveal -i ./tests/sample-files/Lenna.png --generator fibonacci --shift 7
|
$ stegano-lsb hide -i ./tests/sample-files/Lenna.png -m 'Shifted secret message' -o ~/Lenna1.png --shift 7
|
||||||
|
$ stegano-lsb reveal -i ~/Lenna1.png --shift 7
|
||||||
|
Shifted secret message
|
||||||
|
|
||||||
|
|
||||||
List all available generators
|
List all available generators
|
||||||
|
@ -156,7 +137,7 @@ List all available generators
|
||||||
|
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
$ stegano-lsb-set list-generators
|
$ stegano-lsb list-generators
|
||||||
Generator id:
|
Generator id:
|
||||||
ackermann
|
ackermann
|
||||||
Desciption:
|
Desciption:
|
||||||
|
|
|
@ -7,7 +7,7 @@ Parity
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
# Hide the message with Sieve of Eratosthenes
|
# Hide the message with Sieve of Eratosthenes
|
||||||
stegano-lsb-set hide -i ./tests/sample-files/20160505T130442.jpg -o ./surprise.png --generator eratosthenes -m 'Very important message.'
|
stegano-lsb hide -i ./tests/sample-files/20160505T130442.jpg -o ./surprise.png --generator eratosthenes -m 'Very important message.'
|
||||||
|
|
||||||
# Steganalysis of the original photo
|
# Steganalysis of the original photo
|
||||||
stegano-steganalysis-parity -i ./tests/sample-files/20160505T130442.jpg -o ./surprise_st_original.png
|
stegano-steganalysis-parity -i ./tests/sample-files/20160505T130442.jpg -o ./surprise_st_original.png
|
||||||
|
@ -16,4 +16,4 @@ Parity
|
||||||
stegano-steganalysis-parity -i ./surprise.png -o ./surprise_st_secret.png
|
stegano-steganalysis-parity -i ./surprise.png -o ./surprise_st_secret.png
|
||||||
|
|
||||||
# Reveal with Sieve of Eratosthenes
|
# Reveal with Sieve of Eratosthenes
|
||||||
stegano-lsb-set reveal -i ./surprise.png --generator eratosthenes
|
stegano-lsb reveal -i ./surprise.png --generator eratosthenes
|
||||||
|
|
Loading…
Add table
Reference in a new issue