• STATISTIQUES
  • Il y a eu un total de 1 membres et 919 visiteurs sur le site dans les dernières 24h pour un total de 920 personnes!


    Membres: 2 097
    Discussions: 3 554
    Messages: 32 736
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [EN] phrack
    Lot's of stuff !
    Hacking
    [FR] Root-me
    Script: 5, Système: 20, Cracking: 16, Cryptanalyse: 17, Programmation: 8, Réaliste: 11, Réseau: 10, Stéganog...
    Challenges
    [EN] osix
    Site de challenge qui utilise un système de level on chaque épreuve doit être réussie avant d'accéd...
    Challenges
    [FR] Le top web
    Nous offrons une sélection la plus large possible de resources webmaster gratuites, hébergement gratuit...
    Webmaster
    [EN] HackQuest
    Logic: 12, JavaScript: 14, Applet: 6, CrackIt: 13, Crypto: 11, Internet: 3, Exploit: 7, Stegano: 12, Flash: 1, Programmi...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




[Pratique] Bit de poids faible (LSB)

Bonjour à tous et bienvenue dans mon second tutoriel qui complète le précédent sur les bits de poids faible !

On a vu précédemment qu'on pouvais extraire les bits de poids faible d'une image, mais on peut même le faire pour un fichier audio, donc comme je vous ai expliqué comment ça fonctionnais pour les images on va continuer avec cette base Rolleyes

Mais avant de commencer, vous avez du vous poser une question du genre

Comment peut on savoir s'il y a des informations cachées dans le LSB?
Peut-on faire une analyse?

Hé bien évidemment c'est possible !

Je vais vous décrire d'abord une méthode qui consiste à savoir si oui ou non qu'une information soit cachée dans ces bits Big Grin

Et je vous donnerais un petit script en PHP qui pourra extraire les bits de poids faible d'une image BMP, avec une méthode simple Wink

Sans oublier de faire une démonstration d'un script écrit en python capable de faire une analyse pour savoir si des informations sont cachées ou non dans les bits de poids faible d'une image Smile

On doit savoir que toutes les méthodes de stéganographie à base de LSB altèrent le contenu de l'image, et que même si ce n'est pas visible à l'œil nu, il existe des techniques bien efficaces pour la détection

Le truc c'est que même si les bits de poids faibles sont porteurs de très peu d'informations, ça ne veut pas dire qu'il sont porteurs d'aucune information.

Alors pour commencer on doit séparer les bits de poids faible et les bits de poids fort, pour cela on va vider chaque bit des informations inutiles (bit de poids fort MSB), et seules les bits susceptibles de cacher des informations seront gardés.

Code :
compos = compos & 1; // On supprime les informations inutiles
compos = compos << 7; // On augmente le poids du bit

Ex:

[Image: 311600tableau3.png]


Pour cela j'utilise le script python dont je vous ai parlé en haut:
Code :
itcef# ./lsb.py -h
lsb.py [options] -i input_img -o output_img : le nom de l'image d'entrée et le nom de l'image de sortie
--colors|-c r|g|b : la couleur que l'on veut garder ex: -c r pour garder le Rouge
--bit|-b bit : Le bit qu'on va utiliser
--help|-h : affiche l'aide
--hide|-f : pour cacher des données, ex: -f hide.txt input.png -o output.png

Faisons un test sur cette image:
[Image: 881170toxico.png]

Code :
itcef# ./lsb.py toxico.png -o toxico_lsb.png

[Image: 494330toxicolsb.png]

La structure de l'image n'a pas changé, il y va de même pour les bits de poids faible Wink

Essayons de cacher des données dans l'image d'origine:

Code :
itcef# ./lsb.py -f hidden.txt toxico.png -o toxico_hidden.png
itcef# ./lsb.py toxico_hidden.png -o toxico_hidden_lsb.png

[Image: 573865toxico.png]

[Image: 448358toxicolsbhidden.png]

On vois très bien qu'en haut de l'image que quelque chose a changé, mais pas en bas de l'image, c'est parce que ça suffisait pour cacher ce qu'il y avait dans le fichier texte, et donc le bas n'a pas été touché.

C'est vraiment une des méthodes les plus intéressantes dans la stegano LSB.

Astuce: Vous pouvez tout de même voir si une image contient des données cachées dans le LSB en baissant la correction gamma, avec Photoshop par exemple, CTRL + L et on bouge le point gris vert la droite Wink

Exemple d'extraction
Maintenant je vais vous montrer un petit script PHP pouvant extraire le LSB d'une image BMP:

Code :
<?php
    $contents = str_split(substr(file_get_contents('lsb_hidden.bmp'), 54),4);
for($i = 0; $i < count($contents); $i++){

  $base10value = ord($contents[$i]{0});
  echo substr(decbin($base10value), -1);
  $base10value = ord($contents[$i]{1});
  echo substr(decbin($base10value), -1);
  $base10value = ord($contents[$i]{2});
  echo substr(decbin($base10value), -1);

}
?>

Cependant si on arrive a altérer une image BMP en mettant des données cachées, on pourra les extraire avec ce script, mais c'est pas toujours gagné, il y a une infinité de méthodes pour cacher des informations dans le LSB et celle qu'utilise ce dernier est une méthode assez simple.

Alors voilà pour vous montrer, j'ai extrait les données LSB d'une image et on obtient ceci:
Veuillez vous enregistrer pour visualiser l'ensemble du forum en cliquant ici.
Je le mets sur pastebin vu que ça prends toute la largeur de la page, ce qui peut vous gêner.

Essayez de convertir du Binaire -> ASCII
Bien évidemment c'est moi qui a caché ce petit texte dans une image, vous ne trouverez pas le même texte dans toutes les images hein Tongue

J'espère que ce tutoriel vous a plu, et si vous avez d'autres idées ou suggestions n’hésitez pas a me les remettre Smile

-------------------------
Tutoriel écrit par Itcef.
Libre à vous d'en faire ce que vous voulez Smile
01-11-2011, 19h39
Message : #1
CyberSee Hors ligne
Admin fondateur de N-PN
*******



Messages : 1,717
Points: 156
Inscription : Jan 2012
[Pratique] Bit de poids faible (LSB)
Très bon tuto bravo :-)
11-11-2011, 17h10
Message : #2
Luxerails Hors ligne
Bon membre
*



Messages : 267
Points: 67
Inscription : Aug 2011
[Pratique] Bit de poids faible (LSB)
A noter que le code php à la fin pour extraire les bits de poids faible ne marche que dans un BMP. Pourquoi ? Le bmp code ses couleurs en clair dans le raw byte, contrairement au PNG par exemple. Il est tout à fait possible de cacher des bits de poids faible dans du PNG de cette façon, mais il va falloir passer par une lib d'image (sous PHP gd par exemple.).
11-11-2011, 19h12
Message : #3
itcef Hors ligne
Membre actif
*



Messages : 77
Points: 2
Inscription : Oct 2011
[Pratique] Bit de poids faible (LSB)
Effectivement, merci de la précision Wink

Mieux vaut être faux que vrai.
13-11-2011, 11h43
Message : #4
supersnail Hors ligne
Éleveur d'ornithorynques
*****



Messages : 1,588
Points: 465
Inscription : Jan 2012
[Pratique] Bit de poids faible (LSB)
Bon tuto, continue comme ça, dude
30-11-2011, 00h47
Message : #5
oxoo Hors ligne
Newbie
*



Messages : 11
Points: 0
Inscription : Nov 2011
[Pratique] Bit de poids faible (LSB)
En fin de compte, mieux vaut faire ton XOR sur les octets, vu que si y'a une analyse sur le fichier, au moins le mec trouvera pas l'original sur images google Big Grin. Après, j'suis sûr que certains formats de fichiers utilisent des paddings qui pourraient se révéler bien utiles en fin de compte...
30-11-2011, 08h35
Message : #6
itcef Hors ligne
Membre actif
*



Messages : 77
Points: 2
Inscription : Oct 2011
[Pratique] Bit de poids faible (LSB)
Le format BMP par exemple.

Mieux vaut être faux que vrai.
30-11-2011, 11h45
Message : #7
Luxerails Hors ligne
Bon membre
*



Messages : 267
Points: 67
Inscription : Aug 2011
[Pratique] Bit de poids faible (LSB)
Oui, d'ailleurs on utilise souvent le padding bmp pour cacher des informations aussi (voir même des octets réservés inutilisés dans un pixel, en sachant qu'un pixel = 4 octets dont un qui devrait toujours être nul), mais bon là l'information cachée est un peu en clair dans le fichier, c'est pour ça que je préfère le lsb personnellement Tongue (par exemple, si on veut cacher un png dans du padding bmp, si le padding bmp restant d'une ligne est de quatre caractères, on peut voir directement par exemple en clair le début d'un PNG, soit ‰PNG)
01-12-2011, 19h23
Message : #8
oxoo Hors ligne
Newbie
*



Messages : 11
Points: 0
Inscription : Nov 2011
[Pratique] Bit de poids faible (LSB)
Oui, mais pour moi, l'intérêt de la ségano n'est pas de cacher de l'info en clair, mais de l'info chiffrée Smile. Après, modifier un padding c'est assez grillé (lsb aussi apparemment). Le mieux c'est sûrement de modifier un binaire, c'est moins "flag", je pense.
01-12-2011, 20h10
Message : #9
Luxerails Hors ligne
Bon membre
*



Messages : 267
Points: 67
Inscription : Aug 2011
[Pratique] Bit de poids faible (LSB)
Oui, le mieux c'est de combiner la crypto et la stégano Big Grin

New Project News White Hat Hacker V2.3
Accueil | Challenges | Tutoriels | Téléchargements | Forum