begin process at 2012 05 31 17:28:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive PHP

 > 

Archives

 > 

Trucs et astuces

 > 

STEGANOGRAPHIE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

STEGANOGRAPHIE

jeudi 24 février 2005 à 17:33:20 | STEGANOGRAPHIE

malik7934

J'ai bricolé le code qui suit. J'ai pas voulu le poster comme une source (pas dans cet état, il n'est pas abouti!), alors je le mets là si ça peut intéresser l'un ou l'autre!

C'est de la stéganographie: je cache un text dans une image. Une démo est, provisoirement, visible sur http://noisy.ch/images/stegano.php

Le principe est simplissime: on enlève un bit de couleur à chaque pixel et on utilise ce bit pour mettre notre message

<?php
function transformPlainText($plain){

    $trans = array(
        " " => "00000",
        "A" => "00001",
        "B" => "00010",
        "C" => "00011",
        "D" => "00100",
        "E" => "00101",
        "F" => "00110",
        "G" => "00111",
        "H" => "01000",
        "I" => "01001",
        "J" => "01010",
        "K" => "01011",
        "L" => "01100",
        "M" => "01101",
        "N" => "01110",
        "O" => "01111",
        "P" => "10000",
        "Q" => "10001",
        "R" => "10010",
        "S" => "10011",
        "T" => "10100",
        "U" => "10101",
        "V" => "10110",
        "W" => "10111",
        "X" => "11000",
        "Y" => "11001",
        "Z" => "11010"
    );
    $plain = strtr($plain,$trans);
    return $plain;
    }

$src = "cathedrale2.JPG";
echo '<table border="0" width="100%">  <tr>    <td width="25%">';
echo "IMAGE D'ORIGINE:<br /><img src='$src' border=1><br />";
echo '</td>';

$im  = ImageCreateFromJpeg($src);

list($width, $height) = getimagesize($src);
$im2 = ImageCreateTrueColor($width, $height);

for($i=0;$i<$width;$i++){
    for ($j=0;$j<$height;$j++){
       
        $rgb = imagecolorat($im, $i, $j);
        $pix[$j][$i*$height][0] = ($rgb >> 16) & 255;
        $pix[$j][$i*$height][1] = ($rgb >> 8) & 255;
        $pix[$j][$i*$height][2] = $rgb & 255;
        imagesetpixel($im2,$i,$j,65536*$pix[$j][$i*$height][0]+256*$pix[$j][$i*$height][1]+$pix[$j][$i*$height][2]-1);
   
    }
}

imagejpeg($im2, "file2.jpg");

echo '<td width="25%">';
echo "IMAGE MODIFIEE:<br /><img src=file2.jpg border=1><br />";
echo '</td>';
// Le message ne peut être plus grand que $width"height bits!
$plain = "BONJOUR TOUT LE MONDE CECI EST UN MESSAGE ULTRA SECRET";

echo '<td width="25%">';
echo "<br />MESSAGE A CODER: <br />".$plain;
echo '</td>';
$binPlain = transformPlainText($plain);
$im3 = ImageCreateTrueColor($width, $height);

for ($i=0;$i<$width;$i++){
    for ($j=0;$j<$height;$j++){
       
        if(strlen($binPlain) <= ($j+$i*$height))
            $hidetext = $binPlain[$j+$i*$height];
        else    $hidetext = 0;
       
        $rgb = imagecolorat($im2, $i, $j);
        $pix[$j][$i*$height][0] = ($rgb >> 16) & 255;
        $pix[$j][$i*$height][1] = ($rgb >> 8) & 255;
        $pix[$j][$i*$height][2] = $rgb & 255;
        imagesetpixel($im3,$i,$j,65536*$pix[$j][$i*$height][0]+256*$pix[$j][$i*$height][1]+$pix[$j][$i*$height][2]+$hidetext);
   
    }
}
imagejpeg($im3, "file3.jpg");

echo '<td width="25%">';
echo "IMAGE AVEC MESSAGE:<br /><img src=file3.jpg border=1><br />";
echo '</td></tr><tr><td>';

// on va checker qu'il y a bien une différence entre les 2 images:
echo 'Couleurs de l\'originale:<br />';
$im4 = ImageCreateFromJPEG($src);

for ($i=0;$i<$width;$i++){
    for ($j=0;$j<$height;$j++){
        if(($j+$height*$i) <= 20){
            $rgb = ImageColorAt($im4, $i, $j);
            $r = ($rgb >> 16) & 255;
            $g = ($rgb >> 8) & 255;
            $b = $rgb & 255;
            echo (65536*$r+256*$g+$b)." ";
        }
    }
}


echo '...</td><td>';

echo 'Couleurs de l\'image porteuse:<br />';
$im5 = ImageCreateFromJPEG("file3.jpg");

for ($i=0;$i<$width;$i++){
    for ($j=0;$j<$height;$j++){
        if(($j+$height*$i) <= 20){
            $rgb = ImageColorAt($im5, $i, $j);
            $r = ($rgb >> 16) & 255;
            $g = ($rgb >> 8) & 255;
            $b = $rgb & 255;
            echo (65536*$r+256*$g+$b)." ";
        }
    }
}

echo '...</td></tr>';
echo '</table>';

?>

++ Malik7934
jeudi 24 février 2005 à 17:39:04 | Re : STEGANOGRAPHIE

davwart

pas mal :)
tu devrais faire un codeur, decodeur en ligne.
du genre je code mon image, je l'envoie à X, X vient sur ton site, uplaod son image, mon message secret apparait.

-------------------------------------
Les ordinateurs, plus on s'en sert moins, moins ça a de chance de mal marcher. [Les Shadoks]
jeudi 24 février 2005 à 17:42:23 | Re : STEGANOGRAPHIE

malik7934

ouais, je prends note... ce code, c'est juste un essai et comme je vais pas avoir trop le temps de bosser dessus ces prochaines semaines, je l'ai mis là au cas où ça inspirerait quelqu'un... mais je vais y penser


Cette discussion est classée dans : for, echo, rgb, height, pix


Répondre à ce message

Sujets en rapport avec ce message

variables...$$ [ par xabivalencia ] Bonjour,partez pas, c juste un petit souci.... J ai refait mon script, vous pouvez faire un copier-coller pour le tester....l unique probleme est que recuperation de données [ par abdelmajid_daosabah ] bonjour tout le monde bon j'ai un projet en php/mysql et j'ai trouvé une difféculté pr la récuperation de certaines données a partir d'une boucle for; aide [ par lioyan ] salut à tous, je suis débutant en php alors pour ma formation j'ai trouvé un exo sur le net qui dit:    Faites un script qui affiche la liste des étud Algorithme [ par kyript ] Bonjour à vous,je suis actuelleent sur un code qui doit me renvoyer toutes les valeurs possible d'un tableau contenant l'alphabetVoicile code:$tableau le joli sapin de noel [ par Buzio ] Bonjour, salut les gars. je dois realiser un script qui affiche un joli sapin de noel a l'ecran en fonction de la taille donnee. je suis deja assez av sos problem de modification de donnee dans un formulaire [ par beloufa26 ] bonjour http://www.phpcs.com/infomsg.aspx?ajout=1 j'ai un problem dans la modification le problem il affiche la fiche modification mais au lieu de mo récupérer variable aprés réactualisation [ par animallecter ] Je m'explique:j'ai 2 calendriers qui lorsque l'on clique sur 1 jour,1 mois ou 1 année réactualise ma page pour ce placer sur la bonne date.Jusque là p formulaire et variables (pb de transmission) [ par djnos ] Bonjour à tous,Je vous décris mon pb : je créé une interface d'administration de mon site dynamique. Il y a dans une base de nombreuses tables notamme pb de new page apres validation de mail() [ par mattaz ] Bonjour à vous qui m'avez déja bien aidé !Voila, je me suis fait un petit formulaire qui marche tres bien et j'envoie les réponses à une adresse mail pret à me jeter par la fenetre (delete mysql) [ par sniperts ] voila je veux supprimer des champs via un formulaire dynamiquele formulaire se charge bien , mais la suppression ne fonctionne pas, qqn peut m aider!v


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales