**LSB : Least Significant Bit**
Le but du LSB est de cacher des informations dans une image.
Les données sont insérées à la place des bits les moins importants.
Pour chaque composante RGB nous faisons varier uniquement le bit de poids faible.
Ainsi, la transformation est la suivante pour un pixel blanc :
(R, G, B) = (11111111, 11111111, 11111111)
Ce qui nous donne la couleur blanche
Prenons la lettre 'a' en ascii qui vaut en binaire = 0110 0001
Nous allons la découper en deux fois 4 bits soit :
- un premier pack : 0110
- un second pack : 0001
Maintenant nous allons l'inserer dans notre pixel dans les couleurs Rouge et Bleu.
Rouge qui était : 11111111
Devient : 11110110
Le vert ne change pas
Le bleu qui était : 11111111
Devient : 11110001
Notre pixel est maintenant (R, G, B) = (11110110, 11111111, 11110001)
Ce qui nous donne une couleur claire proche du blanc.
La modification du bit de poids faible a peu d'impact sur la valeur d'une composante.
Plus la modification sera mineure plus elle passera inaperçue.
Nous avons fait passer une lettre sur un pixel mais il est possible de faire passer une lettre sur 4 pixels en modifiant uniquement le dernier bit de deux des trois couleurs.
__Outil__
LSB-Steganography est un outil python permettant de gérer le LSB dans une image.
Vous pouvez le récupérer ici : [[https://github.com/RobinDavid/LSB-Steganography|LSB-Steganography]]
L'outil utilisant la librairie opencv, il faudra l'installer avec la commande suivante :
apt-get install python-opencv
__1.Cacher un message dans une image__
Voici un petit exemple de code python pour cacher un message avec la technique du LSB dans une image :
Il vous faut une image et un message à cacher.
from LSBSteg import LSBSteg
import cv2.cv as cv
str = "Message cache de wikisecu.fr" #Message a cacher
carrier = cv.LoadImage("image.jpg") #Image dans laquel on va cacher le message
steg = LSBSteg(carrier)
steg.hideText(str)
steg.saveImage("res.png") #Image qui contient le message
En sortie vous obtenez une image nommée res.png qui contient votre message caché.
__2.Retrouver un message dans une image__
Voici un petit exemple de code python pour retrouver un message avec la technique du LSB dans une image :
from LSBSteg import LSBSteg
import cv2.cv as cv
im = cv.LoadImage("res.png") #image contenant le message cache
steg = LSBSteg(im)
print "Text value:",steg.unhideText()
En sortie vous obtenez le message caché.