mirror of
https://github.com/cedricbonhomme/Stegano.git
synced 2025-05-14 17:58:32 +02:00
Everything in Markdown.
This commit is contained in:
parent
3de95517e9
commit
a9b9136141
8 changed files with 187 additions and 319 deletions
|
@ -1,8 +1,8 @@
|
||||||
Release History
|
# Release History
|
||||||
===============
|
|
||||||
|
|
||||||
|
## 0.9.4 (2019-06-05)
|
||||||
|
|
||||||
0.9.4 (2019-06-05)
|
|
||||||
------------------
|
|
||||||
|
|
||||||
* new: Implemented LFSR generator (with tests and CLI)
|
* new: Implemented LFSR generator (with tests and CLI)
|
||||||
(`PR #27 <https://github.com/cedricbonhomme/Stegano/pull/27>`_)
|
(`PR #27 <https://github.com/cedricbonhomme/Stegano/pull/27>`_)
|
||||||
|
@ -16,67 +16,67 @@ Release History
|
||||||
(`#23 <https://github.com/cedricbonhomme/Stegano/issues/23>`_)
|
(`#23 <https://github.com/cedricbonhomme/Stegano/issues/23>`_)
|
||||||
|
|
||||||
|
|
||||||
0.9.3 (2019-04-10)
|
## 0.9.3 (2019-04-10)
|
||||||
------------------
|
|
||||||
|
|
||||||
* it is now possible to either pass the location of an image or directly pass
|
* it is now possible to either pass the location of an image or directly pass
|
||||||
an already opened Image.Image to the hide and reveal methods;
|
an already opened Image.Image to the hide and reveal methods;
|
||||||
* code re-formatted a bit with black.
|
* code re-formatted a bit with black.
|
||||||
|
|
||||||
|
|
||||||
0.9.2 (2019-04-04)
|
## 0.9.2 (2019-04-04)
|
||||||
------------------
|
|
||||||
|
|
||||||
* updated Pillow dependency to version 6.0.0 in order to fix a bug when opening
|
* updated Pillow dependency to version 6.0.0 in order to fix a bug when opening
|
||||||
some PNG files (https://github.com/python-pillow/Pillow/issues/3557).
|
some PNG files (https://github.com/python-pillow/Pillow/issues/3557).
|
||||||
|
|
||||||
|
|
||||||
0.9.1 (2019-03-06)
|
## 0.9.1 (2019-03-06)
|
||||||
------------------
|
|
||||||
|
|
||||||
* updated Pillow dependency in order to fix a bug when opening some PNG files.
|
* updated Pillow dependency in order to fix a bug when opening some PNG files.
|
||||||
|
|
||||||
|
|
||||||
0.9.0 (2018-12-18)
|
## 0.9.0 (2018-12-18)
|
||||||
------------------
|
|
||||||
|
|
||||||
* added the possibility to shift the encoded bits when using the lsbset module.
|
* added the possibility to shift the encoded bits when using the lsbset module.
|
||||||
|
|
||||||
|
|
||||||
0.8.6 (2018-11-05)
|
## 0.8.6 (2018-11-05)
|
||||||
------------------
|
|
||||||
|
|
||||||
* fixed a potential security issue related to CVE-2018-18074.
|
* fixed a potential security issue related to CVE-2018-18074.
|
||||||
|
|
||||||
|
|
||||||
0.8.5 (2018-04-18)
|
## 0.8.5 (2018-04-18)
|
||||||
------------------
|
|
||||||
|
|
||||||
* Fixed an encoding problem which occured on Windows during the installation
|
* Fixed an encoding problem which occured on Windows during the installation
|
||||||
of the module.
|
of the module.
|
||||||
|
|
||||||
|
|
||||||
0.8.4 (2018-02-28)
|
## 0.8.4 (2018-02-28)
|
||||||
------------------
|
|
||||||
|
|
||||||
* Stegano is ready for use with pipenv and pipsi.
|
* Stegano is ready for use with pipenv and pipsi.
|
||||||
|
|
||||||
|
|
||||||
0.8.3 (2018-02-23)
|
## 0.8.3 (2018-02-23)
|
||||||
------------------
|
|
||||||
|
|
||||||
* the recommended way to install Stegano is now to use pipenv.
|
* the recommended way to install Stegano is now to use pipenv.
|
||||||
|
|
||||||
|
|
||||||
0.8.2 (2017-12-20)
|
## 0.8.2 (2017-12-20)
|
||||||
------------------
|
|
||||||
|
|
||||||
* Fixed a bug with the new 'encoding' function when using Stegano as a command
|
* Fixed a bug with the new 'encoding' function when using Stegano as a command
|
||||||
line tool. No default value was set. Default value is UTF-8.
|
line tool. No default value was set. Default value is UTF-8.
|
||||||
|
|
||||||
|
|
||||||
0.8.1 (2017-05-16)
|
## 0.8.1 (2017-05-16)
|
||||||
------------------
|
|
||||||
|
|
||||||
* it is now possible to specify the encoding (UTF-8 or UTF-32LE) of the message
|
* it is now possible to specify the encoding (UTF-8 or UTF-32LE) of the message
|
||||||
to hide/reveal through the command line;
|
to hide/reveal through the command line;
|
||||||
|
@ -87,7 +87,7 @@ Release History
|
||||||
* a script has been added in order to get proper exit code check for mypy.
|
* a script has been added in order to get proper exit code check for mypy.
|
||||||
|
|
||||||
|
|
||||||
0.8 (2017-05-06)
|
## 0.8 (2017-05-06)
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* updated command line. All commands are now prefixed with *stegano-*;
|
* updated command line. All commands are now prefixed with *stegano-*;
|
||||||
|
@ -96,15 +96,15 @@ Release History
|
||||||
* improved checks when revealing a message with the lsbset module fails.
|
* improved checks when revealing a message with the lsbset module fails.
|
||||||
|
|
||||||
|
|
||||||
0.7.1 (2017-05-05)
|
## 0.7.1 (2017-05-05)
|
||||||
------------------
|
|
||||||
|
|
||||||
* improved generators for the lsb-set module;
|
* improved generators for the lsb-set module;
|
||||||
* improved tests for the generators;
|
* improved tests for the generators;
|
||||||
* improved type hints.
|
* improved type hints.
|
||||||
|
|
||||||
|
|
||||||
0.7 (2017-05-04)
|
## 0.7 (2017-05-04)
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* unicode is now supported. By default UTF-8 encoding is used. UTF-32LE can also
|
* unicode is now supported. By default UTF-8 encoding is used. UTF-32LE can also
|
||||||
|
@ -113,8 +113,8 @@ Release History
|
||||||
* improved checks with type hints.
|
* improved checks with type hints.
|
||||||
|
|
||||||
|
|
||||||
0.6.9 (2017-03-10)
|
## 0.6.9 (2017-03-10)
|
||||||
------------------
|
|
||||||
|
|
||||||
* introduces some type hints (PEP 484);
|
* introduces some type hints (PEP 484);
|
||||||
* more tests for the generators and for the tools module;
|
* more tests for the generators and for the tools module;
|
||||||
|
@ -122,61 +122,61 @@ Release History
|
||||||
* fixed a bug with a generator that has been previously renamed.
|
* fixed a bug with a generator that has been previously renamed.
|
||||||
|
|
||||||
|
|
||||||
0.6.8 (2017-03-08)
|
## 0.6.8 (2017-03-08)
|
||||||
------------------
|
|
||||||
|
|
||||||
* bugfix: fixed #12: Error when revealing a hidden binary file in an image.
|
* bugfix: fixed #12: Error when revealing a hidden binary file in an image.
|
||||||
|
|
||||||
|
|
||||||
0.6.7 (2017-02-21)
|
## 0.6.7 (2017-02-21)
|
||||||
------------------
|
|
||||||
|
|
||||||
* bugfix: added missing dependency in the setup.py file.
|
* bugfix: added missing dependency in the setup.py file.
|
||||||
|
|
||||||
|
|
||||||
0.6.6 (2017-02-20)
|
## 0.6.6 (2017-02-20)
|
||||||
------------------
|
|
||||||
|
|
||||||
* improved docstrings for the desciption of the generators;
|
* improved docstrings for the desciption of the generators;
|
||||||
* improved the command which displays the list of generators.
|
* improved the command which displays the list of generators.
|
||||||
|
|
||||||
|
|
||||||
0.6.5 (2017-02-16)
|
## 0.6.5 (2017-02-16)
|
||||||
------------------
|
|
||||||
|
|
||||||
* added a command to list all available generators for the lsb-set module;
|
* added a command to list all available generators for the lsb-set module;
|
||||||
* test when the data image is coming via byte stream, for the lsb module.
|
* test when the data image is coming via byte stream, for the lsb module.
|
||||||
|
|
||||||
|
|
||||||
0.6.4 (2017-02-06)
|
## 0.6.4 (2017-02-06)
|
||||||
------------------
|
|
||||||
|
|
||||||
* a command line for the 'red' module has been added;
|
* a command line for the 'red' module has been added;
|
||||||
* bugfix: fixed a bug in the lsb-set command line when the generator wasn't
|
* bugfix: fixed a bug in the lsb-set command line when the generator wasn't
|
||||||
specified by the user.
|
specified by the user.
|
||||||
|
|
||||||
|
|
||||||
0.6.3 (2017-01-29)
|
## 0.6.3 (2017-01-29)
|
||||||
------------------
|
|
||||||
|
|
||||||
* Support for transparent PNG images has been added (lsb and lsbset modules).
|
* Support for transparent PNG images has been added (lsb and lsbset modules).
|
||||||
|
|
||||||
|
|
||||||
0.6.2 (2017-01-19)
|
## 0.6.2 (2017-01-19)
|
||||||
------------------
|
|
||||||
|
|
||||||
* bugfix: solved a bug when the image data is coming via byte streams (ByteIO),
|
* bugfix: solved a bug when the image data is coming via byte streams (ByteIO),
|
||||||
for the exifHeader hiding method.
|
for the exifHeader hiding method.
|
||||||
|
|
||||||
|
|
||||||
0.6.1 (2016-08-25)
|
## 0.6.1 (2016-08-25)
|
||||||
------------------
|
|
||||||
|
|
||||||
* reorganization of the steganalysis sub-module.
|
* reorganization of the steganalysis sub-module.
|
||||||
|
|
||||||
|
|
||||||
0.6 (2016-08-04)
|
## 0.6 (2016-08-04)
|
||||||
------------------
|
|
||||||
|
|
||||||
* improvements of the command line of Stéganô. The use of Stéganô through the
|
* improvements of the command line of Stéganô. The use of Stéganô through the
|
||||||
command line has slightly changed ('hide' and 'reveal' are now sub-parameters
|
command line has slightly changed ('hide' and 'reveal' are now sub-parameters
|
||||||
|
@ -184,14 +184,14 @@ Release History
|
||||||
software. The documentation has been updated accordingly.
|
software. The documentation has been updated accordingly.
|
||||||
|
|
||||||
|
|
||||||
0.5.5 (2016-08-03)
|
## 0.5.5 (2016-08-03)
|
||||||
------------------
|
|
||||||
|
|
||||||
* bugfix: Incorrect padding size in `base642string` in tools.base642binary().
|
* bugfix: Incorrect padding size in `base642string` in tools.base642binary().
|
||||||
|
|
||||||
|
|
||||||
0.5.4 (2016-05-22)
|
## 0.5.4 (2016-05-22)
|
||||||
------------------
|
|
||||||
|
|
||||||
* the generator provided to the functions lsbset.hide() and lsbset.reveal() is
|
* the generator provided to the functions lsbset.hide() and lsbset.reveal() is
|
||||||
now a function. This is more convenient for a user who wants to use a custom
|
now a function. This is more convenient for a user who wants to use a custom
|
||||||
|
@ -199,66 +199,66 @@ Release History
|
||||||
* performance improvements for the lsb and lsbset modules.
|
* performance improvements for the lsb and lsbset modules.
|
||||||
|
|
||||||
|
|
||||||
0.5.3 (2016-05-19)
|
## 0.5.3 (2016-05-19)
|
||||||
------------------
|
|
||||||
|
|
||||||
* reorganization of all modules. No impact for the users of Stegano.
|
* reorganization of all modules. No impact for the users of Stegano.
|
||||||
|
|
||||||
|
|
||||||
0.5.2 (2016-05-18)
|
## 0.5.2 (2016-05-18)
|
||||||
------------------
|
|
||||||
|
|
||||||
* improvements and bug fixes for the exifHeader module;
|
* improvements and bug fixes for the exifHeader module;
|
||||||
* added unit tests for the exifHeader module;
|
* added unit tests for the exifHeader module;
|
||||||
* improvements of the documentation.
|
* improvements of the documentation.
|
||||||
|
|
||||||
|
|
||||||
0.5.1 (2016-04-16)
|
## 0.5.1 (2016-04-16)
|
||||||
------------------
|
|
||||||
|
|
||||||
* minor improvements and bug fixes;
|
* minor improvements and bug fixes;
|
||||||
* added unit tests for the slsb and slsbset modules.
|
* added unit tests for the slsb and slsbset modules.
|
||||||
|
|
||||||
|
|
||||||
0.5 (2016-03-18)
|
## 0.5 (2016-03-18)
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* management of greyscale images.
|
* management of greyscale images.
|
||||||
|
|
||||||
|
|
||||||
0.4.6 (2016-03-12)
|
## 0.4.6 (2016-03-12)
|
||||||
------------------
|
|
||||||
|
|
||||||
* bugfix when the length of the message to hide is not divisible by 3,
|
* bugfix when the length of the message to hide is not divisible by 3,
|
||||||
for the slsb and slsbset module.
|
for the slsb and slsbset module.
|
||||||
|
|
||||||
|
|
||||||
0.4.5 (2015-12-23)
|
## 0.4.5 (2015-12-23)
|
||||||
------------------
|
|
||||||
* bugfix.
|
* bugfix.
|
||||||
|
|
||||||
|
|
||||||
0.4.4 (2015-12-23)
|
## 0.4.4 (2015-12-23)
|
||||||
------------------
|
|
||||||
|
|
||||||
* new project home page;
|
* new project home page;
|
||||||
* minor updated to the documentation.
|
* minor updated to the documentation.
|
||||||
|
|
||||||
|
|
||||||
0.4.3 (2015-10-06)
|
## 0.4.3 (2015-10-06)
|
||||||
------------------
|
|
||||||
|
|
||||||
* bug fixes for Python 3;
|
* bug fixes for Python 3;
|
||||||
* bug fixes in the scripts in *./bin*.
|
* bug fixes in the scripts in *./bin*.
|
||||||
|
|
||||||
|
|
||||||
0.4.2 (2015-10-05)
|
## 0.4.2 (2015-10-05)
|
||||||
------------------
|
|
||||||
|
|
||||||
* first stable release on PypI.
|
* first stable release on PypI.
|
||||||
|
|
||||||
|
|
||||||
0.4 (2012-01-02)
|
## 0.4 (2012-01-02)
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
This release introduces a more advanced LSB (Least Significant Bit) method
|
This release introduces a more advanced LSB (Least Significant Bit) method
|
||||||
|
@ -268,7 +268,7 @@ the pixels used to hide the information. You can use these new methods in your
|
||||||
Python codes as a Python module or as a program in your scripts.
|
Python codes as a Python module or as a program in your scripts.
|
||||||
|
|
||||||
|
|
||||||
0.3 (2011-04-15)
|
## 0.3 (2011-04-15)
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* you can now use Stéganô as a library in your Python program;
|
* you can now use Stéganô as a library in your Python program;
|
||||||
|
@ -277,7 +277,7 @@ Python codes as a Python module or as a program in your scripts.
|
||||||
* new documentation (reStructuredText) comes with Stéganô.
|
* new documentation (reStructuredText) comes with Stéganô.
|
||||||
|
|
||||||
|
|
||||||
0.2 (2011-03-24)
|
## 0.2 (2011-03-24)
|
||||||
----------------
|
----------------
|
||||||
|
|
||||||
* this release introduces some bugfixes and a major speed improvement of the
|
* this release introduces some bugfixes and a major speed improvement of the
|
104
CONTRIBUTING.rst
104
CONTRIBUTING.rst
|
@ -1,104 +0,0 @@
|
||||||
Contribution Guidelines
|
|
||||||
=======================
|
|
||||||
|
|
||||||
Before opening proposing any pull requests (about code or documentation),
|
|
||||||
please open an issue.
|
|
||||||
|
|
||||||
Code Contributions
|
|
||||||
------------------
|
|
||||||
|
|
||||||
When contributing code, you'll want to follow this checklist:
|
|
||||||
|
|
||||||
1. Fork the repository on GitHub.
|
|
||||||
2. Run the tests to confirm they all pass on your system. If they don't, you'll
|
|
||||||
need to investigate why they fail.
|
|
||||||
3. Write tests that demonstrate your bug or feature. Ensure that they fail.
|
|
||||||
4. Make your change.
|
|
||||||
5. Run the entire test suite again, confirming that all tests pass *including
|
|
||||||
the ones you just added*.
|
|
||||||
6. Send a GitHub Pull Request to the main repository's ``master`` branch.
|
|
||||||
GitHub Pull Requests are the expected method of code collaboration on this
|
|
||||||
project.
|
|
||||||
|
|
||||||
Code Style
|
|
||||||
~~~~~~~~~~
|
|
||||||
|
|
||||||
Please try to respect the `PEP 8`_ code style.
|
|
||||||
|
|
||||||
|
|
||||||
To get the greatest chance of helpful responses, please also observe the
|
|
||||||
following additional notes.
|
|
||||||
|
|
||||||
.. _PEP 8: http://pep8.org
|
|
||||||
|
|
||||||
|
|
||||||
Documentation Contributions
|
|
||||||
---------------------------
|
|
||||||
|
|
||||||
Documentation improvements are always welcome! The documentation files live in
|
|
||||||
the ``docs/`` directory of the codebase. They're written in
|
|
||||||
`reStructuredText`_, and use `Sphinx`_ to generate the full suite of
|
|
||||||
documentation.
|
|
||||||
|
|
||||||
When contributing documentation, please do your best to follow the style of the
|
|
||||||
documentation files. This means a soft-limit of 79 characters wide in your text
|
|
||||||
files and a semi-formal, yet friendly and approachable, prose style.
|
|
||||||
|
|
||||||
When presenting Python code, use single-quoted strings (``'hello'`` instead of
|
|
||||||
``"hello"``).
|
|
||||||
|
|
||||||
.. _reStructuredText: http://docutils.sourceforge.net/rst.html
|
|
||||||
.. _Sphinx: http://sphinx-doc.org/index.html
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Good Bug Reports
|
|
||||||
----------------
|
|
||||||
|
|
||||||
Please be aware of the following things when filing bug reports:
|
|
||||||
|
|
||||||
1. Avoid raising duplicate issues. *Please* use the GitHub issue search feature
|
|
||||||
to check whether your bug report or feature request has been mentioned in
|
|
||||||
the past. Duplicate bug reports and feature requests are a huge maintenance
|
|
||||||
burden on the limited resources of the project. If it is clear from your
|
|
||||||
report that you would have struggled to find the original, that's ok, but
|
|
||||||
if searching for a selection of words in your issue title would have found
|
|
||||||
the duplicate then the issue will likely be closed extremely abruptly.
|
|
||||||
2. When filing bug reports about exceptions or tracebacks, please include the
|
|
||||||
*complete* traceback. Partial tracebacks, or just the exception text, are
|
|
||||||
not helpful. Issues that do not contain complete tracebacks may be closed
|
|
||||||
without warning.
|
|
||||||
3. Make sure you provide a suitable amount of information to work with. This
|
|
||||||
means you should provide:
|
|
||||||
|
|
||||||
- Guidance on **how to reproduce the issue**. Ideally, this should be a
|
|
||||||
*small* code sample that can be run immediately by the maintainers.
|
|
||||||
Failing that, let us know what you're doing, how often it happens, what
|
|
||||||
environment you're using, etc. Be thorough: it prevents us needing to ask
|
|
||||||
further questions.
|
|
||||||
- Tell us **what you expected to happen**. When we run your example code,
|
|
||||||
what are we expecting to happen? What does "success" look like for your
|
|
||||||
code?
|
|
||||||
- Tell us **what actually happens**. It's not helpful for you to say "it
|
|
||||||
doesn't work" or "it fails". Tell us *how* it fails: do you get an
|
|
||||||
exception? A hang? A non-200 status code? How was the actual result
|
|
||||||
different from your expected result?
|
|
||||||
- Tell us **what version of Stegano you're using**, and
|
|
||||||
**how you installed it**. Different versions of Stegano behave
|
|
||||||
differently and have different bugs.
|
|
||||||
|
|
||||||
If you do not provide all of these things, it will take us much longer to
|
|
||||||
fix your problem. If we ask you to clarify these and you never respond, we
|
|
||||||
will close your issue without fixing it.
|
|
||||||
|
|
||||||
|
|
||||||
Questions
|
|
||||||
=========
|
|
||||||
|
|
||||||
The GitHub issue tracker is for *bug reports* and *feature requests*. Please do
|
|
||||||
not use it to ask questions about how to use Stegano. These questions should
|
|
||||||
instead be directed to Stack Overflow. Make sure
|
|
||||||
that your question is tagged with the `python-stegano` tag when asking it on
|
|
||||||
Stack Overflow, to ensure that it is answered promptly and accurately.
|
|
||||||
You can search for questions with
|
|
||||||
`these tags <http://stackoverflow.com/questions/tagged/python+steganography>`_.
|
|
|
@ -1,10 +1,11 @@
|
||||||
Owner
|
## Owner
|
||||||
=====
|
|
||||||
|
|
||||||
- Cédric Bonhomme <cedric@cedricbonhomme.org>
|
- Cédric Bonhomme <cedric@cedricbonhomme.org>
|
||||||
|
|
||||||
Contributors
|
|
||||||
============
|
## Contributors
|
||||||
|
|
||||||
|
|
||||||
- Adrien Cosson <https://github.com/AdrienCos>
|
- Adrien Cosson <https://github.com/AdrienCos>
|
||||||
- Andrew Roberts <andy.roberts.uk@gmail.com>
|
- Andrew Roberts <andy.roberts.uk@gmail.com>
|
|
@ -6,5 +6,5 @@ recursive-include bin *
|
||||||
|
|
||||||
#Misc
|
#Misc
|
||||||
include COPYING
|
include COPYING
|
||||||
include README.rst
|
include README.md
|
||||||
include CHANGELOG.rst
|
include CHANGELOG.md
|
||||||
|
|
104
README.md
Normal file
104
README.md
Normal file
|
@ -0,0 +1,104 @@
|
||||||
|
Stegano
|
||||||
|
-------
|
||||||
|
|
||||||
|
[](https://builds.sr.ht/~cedric/Stegano?)
|
||||||
|
|
||||||
|
|
||||||
|
[Stegano](https://github.com/cedricbonhomme/Stegano), a pure Python
|
||||||
|
Steganography module.
|
||||||
|
|
||||||
|
Steganography is the art and science of writing hidden messages in such a way
|
||||||
|
that no one, apart from the sender and intended recipient, suspects the
|
||||||
|
existence of the message, a form of security through obscurity. Consequently,
|
||||||
|
functions provided by Stegano only hide messages, without encryption.
|
||||||
|
Steganography is often used with cryptography.
|
||||||
|
|
||||||
|
# Installation
|
||||||
|
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ pipenv install Stegano
|
||||||
|
```
|
||||||
|
|
||||||
|
You will be able to use Stegano in your Python programs.
|
||||||
|
|
||||||
|
If you only want to install Stegano as a command line tool:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ pipx install Stegano
|
||||||
|
```
|
||||||
|
|
||||||
|
pipx installs scripts (system wide available) provided by Python packages into
|
||||||
|
separate virtualenvs to shield them from your system and each other.
|
||||||
|
|
||||||
|
|
||||||
|
# Usage
|
||||||
|
|
||||||
|
A [tutorial](https://stegano.readthedocs.io) is available.
|
||||||
|
|
||||||
|
|
||||||
|
## Use Stegano as a library in your Python program
|
||||||
|
|
||||||
|
If you want to use Stegano in your Python program you just have to import the
|
||||||
|
appropriate steganography technique. For example:
|
||||||
|
|
||||||
|
```python
|
||||||
|
>>> from stegano import lsb
|
||||||
|
>>> secret = lsb.hide("./tests/sample-files/Lenna.png", "Hello World")
|
||||||
|
>>> secret.save("./Lenna-secret.png")
|
||||||
|
>>>
|
||||||
|
>>> clear_message = lsb.reveal("./Lenna-secret.png")
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Use Stegano as a command line tool
|
||||||
|
|
||||||
|
### Hide and reveal a message
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ stegano-lsb hide -i ./tests/sample-files/Lenna.png -m "Secret Message" -o Lena1.png
|
||||||
|
$ stegano-lsb reveal -i Lena1.png
|
||||||
|
Secret Message
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
### Hide the message with the Sieve of Eratosthenes
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ stegano-lsb-set 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
|
||||||
|
Sieve of Eratosthenes. Other sets are available. You can also use your own
|
||||||
|
generators.
|
||||||
|
|
||||||
|
This will make a steganalysis more complicated.
|
||||||
|
|
||||||
|
|
||||||
|
## Running the tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ python -m unittest discover -v
|
||||||
|
```
|
||||||
|
|
||||||
|
Running the static type checker:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ python tools/run_mypy.py
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
# Contributions
|
||||||
|
|
||||||
|
Contributions are welcome. If you want to contribute to Stegano I highly
|
||||||
|
recommend you to install it in a Python virtual environment with pipenv.
|
||||||
|
|
||||||
|
|
||||||
|
# License
|
||||||
|
|
||||||
|
This software is licensed under
|
||||||
|
[GNU General Public License version 3](https://www.gnu.org/licenses/gpl-3.0.html)
|
||||||
|
|
||||||
|
Copyright (C) 2010-2019 [Cédric Bonhomme](https://www.cedricbonhomme.org)
|
||||||
|
|
||||||
|
For more information, [the list of authors and contributors](CONTRIBUTORS.rst) is available.
|
133
README.rst
133
README.rst
|
@ -1,133 +0,0 @@
|
||||||
Stegano
|
|
||||||
=======
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/pyversions/Stegano.svg?style=flat-square
|
|
||||||
:target: https://pypi.python.org/pypi/Stegano
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/v/Stegano.svg?style=flat-square
|
|
||||||
:target: https://github.com/cedricbonhomme/Stegano/releases/latest
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/pypi/l/Stegano.svg?style=flat-square
|
|
||||||
:target: https://www.gnu.org/licenses/gpl-3.0.html
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/travis/cedricbonhomme/Stegano/master.svg?style=flat-square
|
|
||||||
:target: https://travis-ci.org/cedricbonhomme/Stegano
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/coveralls/cedricbonhomme/Stegano/master.svg?style=flat-square
|
|
||||||
:target: https://coveralls.io/github/cedricbonhomme/Stegano?branch=master
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/github/stars/cedricbonhomme/Stegano.svg?style=flat-square
|
|
||||||
:target: https://github.com/cedricbonhomme/Stegano/stargazers
|
|
||||||
|
|
||||||
.. image:: https://img.shields.io/badge/SayThanks.io-%E2%98%BC-1EAEDB.svg?style=flat-square
|
|
||||||
:target: https://saythanks.io/to/cedricbonhomme
|
|
||||||
|
|
||||||
|
|
||||||
`Stegano <https://github.com/cedricbonhomme/Stegano>`_, a pure Python
|
|
||||||
Steganography module.
|
|
||||||
|
|
||||||
Steganography is the art and science of writing hidden messages in such a way
|
|
||||||
that no one, apart from the sender and intended recipient, suspects the
|
|
||||||
existence of the message, a form of security through obscurity. Consequently,
|
|
||||||
functions provided by Stegano only hide messages, without encryption.
|
|
||||||
Steganography is often used with cryptography.
|
|
||||||
|
|
||||||
Installation
|
|
||||||
------------
|
|
||||||
|
|
||||||
.. code:: bash
|
|
||||||
|
|
||||||
$ pipenv install Stegano
|
|
||||||
✨🐍✨
|
|
||||||
|
|
||||||
You will be able to use Stegano in your Python programs.
|
|
||||||
|
|
||||||
If you only want to install Stegano as a command line tool:
|
|
||||||
|
|
||||||
.. code:: bash
|
|
||||||
|
|
||||||
$ pipx install Stegano
|
|
||||||
✨🍰✨
|
|
||||||
|
|
||||||
pipx installs scripts (system wide available) provided by Python packages into
|
|
||||||
separate virtualenvs to shield them from your system and each other.
|
|
||||||
|
|
||||||
|
|
||||||
Usage
|
|
||||||
-----
|
|
||||||
|
|
||||||
A `tutorial <https://stegano.readthedocs.io>`_ is available.
|
|
||||||
|
|
||||||
|
|
||||||
Use Stegano as a library in your Python program
|
|
||||||
'''''''''''''''''''''''''''''''''''''''''''''''
|
|
||||||
|
|
||||||
If you want to use Stegano in your Python program you just have to import the
|
|
||||||
appropriate steganography technique. For example:
|
|
||||||
|
|
||||||
.. code:: python
|
|
||||||
|
|
||||||
>>> from stegano import lsb
|
|
||||||
>>> secret = lsb.hide("./tests/sample-files/Lenna.png", "Hello World")
|
|
||||||
>>> secret.save("./Lenna-secret.png")
|
|
||||||
>>>
|
|
||||||
>>> clear_message = lsb.reveal("./Lenna-secret.png")
|
|
||||||
|
|
||||||
|
|
||||||
Use Stegano as a command line tool
|
|
||||||
''''''''''''''''''''''''''''''''''
|
|
||||||
|
|
||||||
Hide and reveal a message
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. code:: bash
|
|
||||||
|
|
||||||
$ stegano-lsb hide -i ./tests/sample-files/Lenna.png -m "Secret Message" -o Lena1.png
|
|
||||||
$ stegano-lsb reveal -i Lena1.png
|
|
||||||
Secret Message
|
|
||||||
|
|
||||||
|
|
||||||
Hide the message with the Sieve of Eratosthenes
|
|
||||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
|
|
||||||
.. code:: bash
|
|
||||||
|
|
||||||
$ stegano-lsb-set 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
|
|
||||||
Sieve of Eratosthenes. Other sets are available. You can also use your own
|
|
||||||
generators.
|
|
||||||
|
|
||||||
This will make a steganalysis more complicated.
|
|
||||||
|
|
||||||
|
|
||||||
Running the tests
|
|
||||||
-----------------
|
|
||||||
|
|
||||||
.. code:: bash
|
|
||||||
|
|
||||||
$ python -m unittest discover -v
|
|
||||||
|
|
||||||
Running the static type checker:
|
|
||||||
|
|
||||||
.. code:: bash
|
|
||||||
|
|
||||||
$ python tools/run_mypy.py
|
|
||||||
|
|
||||||
|
|
||||||
Contributions
|
|
||||||
-------------
|
|
||||||
|
|
||||||
Contributions are welcome. If you want to contribute to Stegano I highly
|
|
||||||
recommend you to install it in a Python virtual environment with pipenv.
|
|
||||||
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
|
|
||||||
This software is licensed under
|
|
||||||
`GNU General Public License version 3 <https://www.gnu.org/licenses/gpl-3.0.html>`_
|
|
||||||
|
|
||||||
Copyright (C) 2010-2019 `Cédric Bonhomme <https://www.cedricbonhomme.org>`_
|
|
||||||
|
|
||||||
For more information, `the list of authors and contributors <CONTRIBUTORS.rst>`_ is available.
|
|
|
@ -1,2 +1,2 @@
|
||||||
[metadata]
|
[metadata]
|
||||||
description-file = README.rst
|
description-file = README.md
|
||||||
|
|
6
setup.py
6
setup.py
|
@ -26,9 +26,9 @@ scripts = [
|
||||||
|
|
||||||
requires = ['pillow', 'piexif', 'crayons']
|
requires = ['pillow', 'piexif', 'crayons']
|
||||||
|
|
||||||
with codecs.open(os.path.join(here, 'README.rst'), encoding='utf-8') as f:
|
with codecs.open(os.path.join(here, 'README.md'), encoding='utf-8') as f:
|
||||||
readme = f.read()
|
readme = f.read()
|
||||||
with codecs.open(os.path.join(here, 'CHANGELOG.rst'), encoding='utf-8') as f:
|
with codecs.open(os.path.join(here, 'CHANGELOG.md'), encoding='utf-8') as f:
|
||||||
changelog = f.read()
|
changelog = f.read()
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
|
@ -41,7 +41,7 @@ setup(
|
||||||
scripts=scripts,
|
scripts=scripts,
|
||||||
url='https://github.com/cedricbonhomme/Stegano',
|
url='https://github.com/cedricbonhomme/Stegano',
|
||||||
description='A pure Python Steganography module.',
|
description='A pure Python Steganography module.',
|
||||||
long_description=readme + '\n|\n\n' + changelog,
|
long_description=readme + '\n\n' + changelog,
|
||||||
platforms = ['Linux'],
|
platforms = ['Linux'],
|
||||||
license='GPLv3',
|
license='GPLv3',
|
||||||
install_requires=requires,
|
install_requires=requires,
|
||||||
|
|
Loading…
Add table
Reference in a new issue