Everything in Markdown.

This commit is contained in:
Cédric Bonhomme 2019-10-27 22:03:36 +01:00
parent 3de95517e9
commit a9b9136141
No known key found for this signature in database
GPG key ID: A1CB94DE57B7A70D
8 changed files with 187 additions and 319 deletions

View file

@ -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)
(`PR #27 <https://github.com/cedricbonhomme/Stegano/pull/27>`_)
@ -16,67 +16,67 @@ Release History
(`#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
an already opened Image.Image to the hide and reveal methods;
* 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
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.
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.
0.8.6 (2018-11-05)
------------------
## 0.8.6 (2018-11-05)
* 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
of the module.
0.8.4 (2018-02-28)
------------------
## 0.8.4 (2018-02-28)
* 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.
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
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
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.
0.8 (2017-05-06)
## 0.8 (2017-05-06)
----------------
* 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.
0.7.1 (2017-05-05)
------------------
## 0.7.1 (2017-05-05)
* improved generators for the lsb-set module;
* improved tests for the generators;
* 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
@ -113,8 +113,8 @@ Release History
* improved checks with type hints.
0.6.9 (2017-03-10)
------------------
## 0.6.9 (2017-03-10)
* introduces some type hints (PEP 484);
* 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.
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.
0.6.7 (2017-02-21)
------------------
## 0.6.7 (2017-02-21)
* 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 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;
* 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;
* bugfix: fixed a bug in the lsb-set command line when the generator wasn't
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).
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),
for the exifHeader hiding method.
0.6.1 (2016-08-25)
------------------
## 0.6.1 (2016-08-25)
* 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
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.
0.5.5 (2016-08-03)
------------------
## 0.5.5 (2016-08-03)
* 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
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.
0.5.3 (2016-05-19)
------------------
## 0.5.3 (2016-05-19)
* 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;
* added unit tests for the exifHeader module;
* improvements of the documentation.
0.5.1 (2016-04-16)
------------------
## 0.5.1 (2016-04-16)
* minor improvements and bug fixes;
* added unit tests for the slsb and slsbset modules.
0.5 (2016-03-18)
## 0.5 (2016-03-18)
----------------
* 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,
for the slsb and slsbset module.
0.4.5 (2015-12-23)
------------------
## 0.4.5 (2015-12-23)
* bugfix.
0.4.4 (2015-12-23)
------------------
## 0.4.4 (2015-12-23)
* new project home page;
* minor updated to the documentation.
0.4.3 (2015-10-06)
------------------
## 0.4.3 (2015-10-06)
* bug fixes for Python 3;
* bug fixes in the scripts in *./bin*.
0.4.2 (2015-10-05)
------------------
## 0.4.2 (2015-10-05)
* 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
@ -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.
0.3 (2011-04-15)
## 0.3 (2011-04-15)
----------------
* 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ô.
0.2 (2011-03-24)
## 0.2 (2011-03-24)
----------------
* this release introduces some bugfixes and a major speed improvement of the

View file

@ -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>`_.

View file

@ -1,10 +1,11 @@
Owner
=====
## Owner
- Cédric Bonhomme <cedric@cedricbonhomme.org>
Contributors
============
## Contributors
- Adrien Cosson <https://github.com/AdrienCos>
- Andrew Roberts <andy.roberts.uk@gmail.com>

View file

@ -6,5 +6,5 @@ recursive-include bin *
#Misc
include COPYING
include README.rst
include CHANGELOG.rst
include README.md
include CHANGELOG.md

104
README.md Normal file
View file

@ -0,0 +1,104 @@
Stegano
-------
[![builds.sr.ht status](https://builds.sr.ht/~cedric/Stegano.svg)](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.

View file

@ -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.

View file

@ -1,2 +1,2 @@
[metadata]
description-file = README.rst
description-file = README.md

View file

@ -26,9 +26,9 @@ scripts = [
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()
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()
setup(
@ -41,7 +41,7 @@ setup(
scripts=scripts,
url='https://github.com/cedricbonhomme/Stegano',
description='A pure Python Steganography module.',
long_description=readme + '\n|\n\n' + changelog,
long_description=readme + '\n\n' + changelog,
platforms = ['Linux'],
license='GPLv3',
install_requires=requires,