Journal Stéganographie en Python avec Stegano

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
Étiquettes :
23
30
jan.
2017

Stegano est encore un module de stéganographie écrit en Python.

Ce journal a pour but de faire connaître un peu plus le projet mais surtout d'avoir des retours et tests.

Il est possible d'utiliser Stegano dans vos applications en tant que librairie ou en ligne de commande.
Différentes techniques sont utilisées. La classique technique LSB est implémentée.

Une variation de la technique LSB est également disponible. Il s'agit de décrire des ensembles afin de sélectionner les pixels qui seront utilisés pour cacher l'information. Voici un exemple:

Python 3.5.2 (default, Oct 20 2016, 10:10:10) 
[GCC 6.2.0 20161005] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from stegano import lsbset
>>> from stegano.lsbset import generators
>>> secret_message = "Hello World!"
>>> secret_image = lsbset.hide("./tests/sample-files/Lenna.png", secret_message, generators.eratosthenes())
>>> secret_image.save("./image.png")
>>> 
>>> message = lsbset.reveal("./image.png", generators.fibonacci())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/cedric/git/Stegano/stegano/lsbset/lsbset.py", line 115, in reveal
    for color in img_list[generated_number]:
IndexError: list index out of range
>>> 
>>> message = lsbset.reveal("./image.png", generators.eratosthenes())
>>> message
'Hello World!'

Cette technique limite la stéganalyse par parité (exemple).

Vous trouverez plus de détails dans la documentation.
Quelques générateurs d'ensemble sont disponibles. Vous pouvez évidemment en définir de nouveaux.

Pour l'usage en ligne de commande, vous trouverez des exemples ici. En plus du texte, vous pouvez également cacher des binaires dans une image.

J'accepte les contributions via GitHub si vous avez des générateurs intéressants (il est donc préférable d'utiliser des ensembles définis par des fonctions injectives). Pour les nouvelles fonctionnalités ou idées, il faut d'abord créer une issue avant de faire une pull request. Je n'accepte pas forcément tout, étant donné que j'ai encore quelques idées en têtes à tester.

Actuellement Stegano fonctionne avec Python 2.7 et Python 3.5. Cependant, je n'assure pas que Python 2 sera encore longtemps supporté. Je ne pense pas que ce soit aujourd'hui un gros problème.

  • # Image

    Posté par  . Évalué à 3.

    De ce que je déduis du journal, tu te limite à la steganographie sur les images. Tu n'envisage pas d'autres media?

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Image

      Posté par  (site web personnel, Mastodon) . Évalué à 2.

      Pas dans l'immédiat. Je pourrai assez facilement faire un module générique qui permettrait de cacher des informations dans n'importe quel type de fichier. Mais ce serait avec une technique vraiment basique, qui ferait grossir la taille du fichier où se trouve le message caché.
      Je préférerai avoir une approche plus spécifique, par module, en fonction des différents types de media utilisés pour cacher de l'information. Mais ça, ce n'est pas pour tout de suite.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.