Vous n'êtes pas identifié(e).
Pages : 1
Bonjour , suite à un sujet astuce steganography images
Je vous donne la solution en python , pour le moment la taille des 2 images doit être indentique . je n'ai actuellement pas python 3 avec pillow fork de PIL pour python 3 .
Je pense changer de distro debut du mois prochain (mars) et faire une mise au jours ou complement pour python 3.
Le script est grandement ameliorable , chemin pour les images , choix de nom , sur combien de bits chiffrer, ... mais les bases sont là :
joindre une image dans une autre :
#!/usr/bin/env python
# -*-coding:utf-8-*
from PIL.Image import *
img = open("image.jpg")#image visible
img2 = open("image2.png")#image à cacher
largeur, hauteur = img.size # recuperation taille image
img3 = new("RGB", (largeur, hauteur)) # creation de la nouvelle image ( celle chiffrer )
for y in range(hauteur): # double boucle for pour parcourir tout les pixels
for x in range(largeur):
p = img.getpixel((x,y)) # recuperation de la valeur du pixel de l'image qui restera visible
# modification pixel premier image
r, v, b = p[0]&240, p[1]&240, p[2]&240 # on supprime les bits faible
p2 = img2.getpixel((x,y)) # recuperation valeur du pixel de l'image a cacher
#modification du pixel de la deuxieme image
r2, v2, b2 = p2[0]>>4, p2[1]>>4, p2[2]>>4 # ON decale ses bits fort vers ses bites faible ( modifier valeur 4)
r3, v3, b3 = r|r2, v|v2, b|b2 #on joint les valeur du pixel de la premiere image a la deuxieme pour creer le nouvelle image chiffrée
#, bits fort et faible inversé
img3.putpixel((x,y),(r3,v3,b3)) # creation du nouveau pixel pour l'image chiffrer
img3.show()# on affiche l'image
img3.save("c4.png", "PNG") #on sauvegarde l'image
Recuperer l'image cachee :
#!/usr/bin/env python
#!/usr/bin/env python
# -*-coding:utf-8-*
from PIL.Image import *
img = open("irina.png")# l'image à dechiffrer
largeur, hauteur = img.size # on recupere la taille de l'image
img2 = new("RGB", (largeur, hauteur))# creation d'une nouvelle image c'elle qui sera dechiffree
for y in range(hauteur): # Double boucle for pour parcourrir tout les pixels
for x in range(largeur):
pixel = img.getpixel((x,y))# recuperation de la valeur du pixel
r,v,b = pixel[0], pixel[1], pixel[2]
r = r << 4# On decale les bits faible vers les bits fort
v = v << 4#
b = b << 4# Changer le nombre par raport au chiffrage
r = r&240 #on efface les bits faible
v = v&240
b = b&240
img2.putpixel((x,y),(r,v,b)) # on creer le pixel de l'image dechiffree
img2.show() # on affiche l'image
img2.save("image_cache.png", "PNG")# on sauvegarde l'image dechiffrer
enjoy
Dernière modification par petitegirafe (22-02-2019 01:29:31)
Hors ligne
GG ! merci du partage.
et tes commentaires sont top tip pour comprendre le python quand on ne sait pas le lire ( comme moi,enfin si un peu mais pas trop ).
vi est mon ami pour la vie
Ph'nglui nglw-nafh Cthulhu R'lyeh wgah-nagl fhtagn
Hors ligne
Pages : 1