user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 18-02-2019 20:44:23

petitegirafe
Membre

Cacher une image dans une autre

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  stone

Dernière modification par petitegirafe (22-02-2019 01:29:31)

Hors ligne

#2 18-02-2019 21:14:09

Viperr
Modérateur

Re : Cacher une image dans une autre

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 big_smile ).

Cthulhu


vi est mon ami pour la vie
Viperr
Ph'nglui nglw-nafh Cthulhu R'lyeh wgah-nagl fhtagn

Hors ligne

Pied de page des forums