Traduction d'un programme en PHP sur le logiciel Processing.
Fermé
LennyBarre
Messages postés5Date d'inscriptionlundi 7 avril 2014StatutMembreDernière intervention 7 avril 2014
-
7 avril 2014 à 17:19
Bonjour,
Nous avons pour un de nos différents projets d'informatique un programme permettant de cacher un message dans une image (Stéganographie) et un autre programme permettant de le décrypter.
Petit problème, ces programmes sont en PHP et nous n'avons pas de serveur par chez nous.
On nous à donc conseillé de les traduire en "Processing" il me semble que c'est du javascript mais nous n'avons pas vraiment de compétences sur ce fameux logiciel ...
Pourriez-vous nous apporter une "grande" aide S.V.P ?
// Là, ça commence à devenir intéressant.
$f_image = fopen($lien, 'r+b'); // On ouvre le fichier image, tout simplement.
fseek($f_image, 54); // On se place après le header.
$octet_image = fread($f_image, 1); // On récupère un seul octet, sous forme de caractère.
$octet_image = ord($octet_image); // On le convertit en nombre grâce à la table ASCII.
$octet_image -= $octet_image%4; // On rend les deux bits de poids faible égaux à zéro. La ligne suivante est équivalente mais utilise les opérateurs de bit.
//$octet_image = $octet_image & 252;
$partie_octet = bindec($partie_octet); // On reconvertit en base 10 pour pouvoir faire une addition.
$octet_image += $partie_octet; // La deuxième étape
fseek($f_image, -1, SEEK_CUR); // TRÈS IMPORTANT
fputs($f_image, chr($octet_image)); // On écrit tout simplement dans le fichier, en écrasant l'octet suivant.
$f_image = fopen($lien, 'rb'); // On ne modifie pas le fichier cette fois-ci, donc le mode r suffit.
fseek($f_image, 54); // On saute le header.
while(!feof($f_image)){ // En théorie, on pourrait faire une boucle infinie que l'on ira « breaker » mais on ne va quand même pas tenter le diable, hein...
$octet_image = fread($f_image, 1);
$octet_image = ord($octet_image); // On lit la valeur du "charactère" lu.
$bits_pf = $octet_image%4;
$bits_pf = decbin($bits_pf); // On récupère les deux bits de poids faible sous forme binaire.
$bits_pf = str_pad($bits_pf, 2, '0', STR_PAD_LEFT); // On ajoute un zéro si nécessaire.
$tampon .= $bits_pf; // On rajoute ce qu'on a trouvé au tampon.
if(strlen($tampon) == 8)
{
// Une fois qu'on a la valeur du caractère du message en base 2.
$tampon = bindec($tampon); //conversion en base 10
if($tampon == 26)
{
// Fin du message
echo $message;
return;
}
$message .= chr($tampon); // Si l'on n'est pas arrivé à la fin du message, on ajoute le caractère trouvé et on réinitialise le tampon.
$tampon = "";
}