mirror of
https://github.com/cedricbonhomme/Stegano.git
synced 2025-05-12 09:08:31 +02:00
112 lines
3.3 KiB
ReStructuredText
112 lines
3.3 KiB
ReStructuredText
Using Stegano as a Python module
|
|
================================
|
|
|
|
You can find more examples in the
|
|
`unit tests directory <https://git.sr.ht/~cedric/stegano/tree/master/tests>`_.
|
|
|
|
LSB method
|
|
----------
|
|
|
|
.. code-block:: python
|
|
|
|
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 lsb
|
|
>>> secret = lsb.hide("./tests/sample-files/Lenna.png", "Hello world!")
|
|
>>> secret.save("./Lenna-secret.png")
|
|
>>> print(lsb.reveal("./Lenna-secret.png"))
|
|
Hello world!
|
|
|
|
|
|
|
|
LSB method with sets
|
|
--------------------
|
|
|
|
Sets are used in order to select the pixels where the message will be hidden.
|
|
|
|
.. code-block:: python
|
|
|
|
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 lsbset
|
|
>>> from stegano.lsbset import generators
|
|
|
|
# Hide a secret with the Sieve of Eratosthenes
|
|
>>> secret_message = "Hello World!"
|
|
>>> secret_image = lsbset.hide("./tests/sample-files/Lenna.png",
|
|
secret_message,
|
|
generators.eratosthenes())
|
|
>>> secret_image.save("./image.png")
|
|
|
|
# Try to decode with another generator
|
|
>>> message = lsbset.reveal("./image.png", generators.fibonacci())
|
|
Traceback (most recent call last):
|
|
File "<stdin>", line 1, in <module>
|
|
File "/home/cedric/projects/Stegano/stegano/lsbset/lsbset.py", line 111, in reveal
|
|
for color in img_list[generated_number]:
|
|
IndexError: list index out of range
|
|
|
|
# Decode with Eratosthenes
|
|
>>> message = lsbset.reveal("./image.png", generators.eratosthenes())
|
|
>>> message
|
|
'Hello World!'
|
|
|
|
>>> # Generators available
|
|
>>> import inspect
|
|
>>> all_generators = inspect.getmembers(generators, inspect.isfunction)
|
|
>>> for generator in all_generators:
|
|
... print(generator[0], generator[1].__doc__)
|
|
...
|
|
Dead_Man_Walking None
|
|
OEIS_A000217
|
|
http://oeis.org/A000217
|
|
Triangular numbers: a(n) = C(n+1,2) = n(n+1)/2 = 0+1+2+...+n.
|
|
|
|
ackermann
|
|
Ackermann number.
|
|
|
|
carmichael None
|
|
eratosthenes
|
|
Generate the prime numbers with the sieve of Eratosthenes.
|
|
|
|
eratosthenes_composite
|
|
Generate the composite numbers with the sieve of Eratosthenes.
|
|
|
|
fermat
|
|
Generate the n-th Fermat Number.
|
|
|
|
fibonacci
|
|
A generator for Fibonacci numbers, goes to next number in series on each call.
|
|
This generator start at 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, ...
|
|
See: http://oeis.org/A000045
|
|
|
|
identity
|
|
f(x) = x
|
|
|
|
log_gen
|
|
Logarithmic generator.
|
|
|
|
mersenne
|
|
Generate 2^n-1.
|
|
|
|
syracuse
|
|
Generate the sequence of Syracuse.
|
|
|
|
|
|
|
|
Description field of the image
|
|
------------------------------
|
|
|
|
For JPEG and TIFF images.
|
|
|
|
.. code-block:: python
|
|
|
|
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"))
|