Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

STEGANOGRAPHIE


Information sur la source

Catégorie :Sécurité & cryptage Classé sous : steganographie, cryptage, image, marnage Niveau : Débutant Date de création : 04/12/2007 Date de mise à jour : 04/12/2007 02:14:02 Vu : 2 534

Note :
Aucune note

Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

Description

Simple programme en mode console pour cacher du texte dans une image .bmp .
Avec le module PIL , pardonner le manque de commentaire
 

Source

  • #!/usr/bin/python
  • # -*- coding: iso8859-1 -*-
  • from Image import open,new
  • from sys import argv,exit
  • from os import access,F_OK
  • from string import split
  • def ConstrcutRGB(pixelR,pixelG,pixelB,lenP):
  • i = 0
  • pixel = []
  • while ( i < lenP ):
  • pixel.append((pixelR[i],pixelG[i],pixelB[i])) # (( )) Car on fait une liste de tuple
  • i += 1
  • print ("[*] Rassemble RGB -> liste -> tuple : ok .")
  • return pixel
  • def ConverCharInt():
  • txt = raw_input("Texte -> ")
  • txt += "FiNiEnD"
  • chiffreTexte,i = [],0
  • decimal = []
  • while ( i < len(txt) ):
  • chiffreTexte.append(ord(txt[i])+100)
  • i += 1
  • i = 0
  • i2 = 0
  • while ( i < len(chiffreTexte) ) :
  • i2 = 0
  • buff = str(chiffreTexte[i])
  • while ( i2 < len(buff) ):
  • decimal.append(buff[i2])
  • i2 += 1
  • i += 1
  • return decimal
  • def ModifValeurPixel(pixel,valeur):
  • if ( pixel > 245 ):
  • pixel[i] = 244
  • buff = str(pixel)
  • buff = buff[:len(buff)-1]
  • buff = buff+str(valeur)
  • pixel = buff
  • return pixel
  • def CacheTexte(pixelR,pixelG,pixelB,decimal,lenPixel,size,newImg):
  • i=0
  • i_d=0
  • while ( i < lenPixel ):
  • pixelR[i] = ModifValeurPixel(pixelR[i],decimal[i_d])
  • i_d += 1
  • if ( i_d == len(decimal) ):
  • break
  • pixelG[i] = ModifValeurPixel(pixelG[i],decimal[i_d])
  • i_d += 1
  • if ( i_d == len(decimal) ):
  • break
  • pixelB[i] = ModifValeurPixel(pixelB[i],decimal[i_d])
  • i_d += 1
  • if ( i_d == len(decimal) ):
  • break
  • i += 1
  • print("[*] Modifie valeur : ok ")
  • i = 0
  • while ( i < lenPixel ):
  • pixelR[i] = int(pixelR[i])
  • pixelG[i] = int(pixelG[i])
  • pixelB[i] = int(pixelB[i])
  • i += 1
  • newImage = new('RGB',size)
  • newImage.putdata(ConstrcutRGB(pixelR,pixelG,pixelB,lenPixel))
  • newImage.save(newImg)
  • print ("[*] Image <%s> cree : ok "%(newImg))
  • def RetrouveValeur(pixel):
  • buff = pixel[len(pixel)-1:]
  • return buff
  • def TrouveTexte(pixelR,pixelG,pixelB,lenPixel):
  • decimal = ""
  • i = 0
  • while ( i < lenPixel ):
  • decimal += RetrouveValeur(str(pixelR[i]))
  • decimal += RetrouveValeur(str(pixelG[i]))
  • decimal += RetrouveValeur(str(pixelB[i]))
  • i += 1
  • print ("[*] Decoupe valeur : ok .")
  • decimal = str(decimal)
  • i,compt = 0,0
  • bheu = ""
  • chiffreTxt = []
  • while ( i < len(decimal) ):
  • if ( compt == 3 ):
  • chiffreTxt.append(bheu)
  • bheu = ""
  • compt = 0
  • bheu += decimal[i]
  • i += 1
  • compt += 1
  • i=0
  • txt = ""
  • while ( i < len(chiffreTxt) ):
  • chiffre = int(chiffreTxt[i])
  • chiffre = chiffre - 100
  • txt += chr(chiffre)
  • if ( "FiNiEnD" in txt ):
  • break
  • i += 1
  • print ("Message -> %s"%(txt[:len(txt)-7]))
  • def Acceuil():
  • print """
  • coder par Marnage
  • Programme de steganogrphie ( lib : PIL )
  • Cacher du texte dans une image (.bmp)
  • Argument :
  • -cache = pour cacher du texte dans une nouvelle image
  • -i nomimage.bmp = l image de base ou sera cacher le texte
  • -n newimage.bmp = la nouvelle image qui sera cree avec le texte
  • -trouve = pour retrouver le texte
  • -i = image dans la qu elle chercher le texte
  • """
  • def main(arg):
  • Acceuil()
  • if ( len(arg) != 3 and len(arg) != 5 ):
  • print ("[!] Erreur : argument !")
  • exit()
  • i = 0
  • while ( i < len(arg) ):
  • if ( arg[i] == "cache" ):
  • mode = "cache"
  • elif ( arg[i] == "trouve"):
  • mode = "trouve"
  • elif ( arg[i] == "-i" ):
  • nomImage = arg[i+1]
  • elif ( arg[i] == "-n" ):
  • NI = arg[i+1]
  • i += 1
  • if ( mode != "cache" and mode != "trouve" ):
  • print ("[!] Erreur : argument !")
  • exit()
  • if not ".bmp" in nomImage :
  • print("[!] Erreur : extention image non .bmp !")
  • exit()
  • if ( mode == "cache") :
  • decimal = ConverCharInt()
  • if ( access(nomImage, F_OK) ):
  • image = open(nomImage)
  • size = image.size
  • print ("[*] Access/Ouverture image : ok .")
  • else :
  • print ("[!] Erreur : image innaccesible ! ")
  • exit()
  • pixelColor = list(image.getdata())
  • lenPixel = len(pixelColor)
  • i = 0
  • pixelR = []
  • pixelG = []
  • pixelB = []
  • lenPixel = len(pixelColor)
  • size = image.size
  • while ( i < lenPixel ):
  • iP = 0
  • pixelRGB = pixelColor[i]
  • while ( iP < 3 ):
  • if ( iP == 0 ):
  • pixelR.append(pixelRGB[iP])
  • elif ( iP == 1 ):
  • pixelG.append(pixelRGB[iP])
  • elif ( iP == 2 ):
  • pixelB.append(pixelRGB[iP])
  • iP += 1
  • i += 1
  • print ("[*] Separe RGB liste : ok .")
  • if ( mode == "cache" ):
  • CacheTexte(pixelR,pixelG,pixelB,decimal,lenPixel,size,NI)
  • elif ( mode == "trouve" ):
  • TrouveTexte(pixelR,pixelG,pixelB,lenPixel)
  • if ( __name__ == "__main__" ):
  • main(argv[1:])
#!/usr/bin/python
# -*- coding: iso8859-1 -*-

from Image import open,new
from sys import argv,exit
from os import access,F_OK
from string import split


def ConstrcutRGB(pixelR,pixelG,pixelB,lenP):
	i = 0
	pixel = []
	while ( i < lenP ):
		pixel.append((pixelR[i],pixelG[i],pixelB[i])) # (( )) Car on  fait une liste de tuple
		i += 1
	print ("[*] Rassemble RGB -> liste -> tuple : ok .")
	return pixel

def ConverCharInt():
	txt = raw_input("Texte -> ")
	txt += "FiNiEnD"
	chiffreTexte,i = [],0
	decimal = []
	while ( i < len(txt) ):
		chiffreTexte.append(ord(txt[i])+100)
		i += 1
	i = 0
	i2 = 0
	while ( i < len(chiffreTexte) ) :
		i2 = 0
		buff = str(chiffreTexte[i])
		while ( i2 < len(buff) ):
			decimal.append(buff[i2])
			i2 += 1
		i += 1
	return decimal

def ModifValeurPixel(pixel,valeur):
	if ( pixel > 245 ):
			pixel[i] = 244
	buff = str(pixel)
	buff = buff[:len(buff)-1]
	buff = buff+str(valeur)
	pixel = buff
	return pixel

def CacheTexte(pixelR,pixelG,pixelB,decimal,lenPixel,size,newImg):
	i=0
	i_d=0
	while ( i < lenPixel ):
		pixelR[i] = ModifValeurPixel(pixelR[i],decimal[i_d])
		i_d += 1
		if ( i_d == len(decimal) ):
			break
		pixelG[i] = ModifValeurPixel(pixelG[i],decimal[i_d])
		i_d += 1
		if ( i_d == len(decimal) ):
			break
		pixelB[i] = ModifValeurPixel(pixelB[i],decimal[i_d])
		i_d += 1
		if ( i_d == len(decimal) ):
			break
		i += 1
	print("[*] Modifie valeur : ok ")
	i = 0
	while ( i < lenPixel ):
		pixelR[i] = int(pixelR[i])
		pixelG[i] = int(pixelG[i])
		pixelB[i] = int(pixelB[i])
		i += 1

	newImage = new('RGB',size)
	newImage.putdata(ConstrcutRGB(pixelR,pixelG,pixelB,lenPixel))
	newImage.save(newImg)
	print ("[*] Image <%s> cree : ok "%(newImg))

def RetrouveValeur(pixel):
	buff = pixel[len(pixel)-1:]
	return buff

def TrouveTexte(pixelR,pixelG,pixelB,lenPixel):
	decimal = ""
	i = 0
	while ( i < lenPixel ):
		decimal += RetrouveValeur(str(pixelR[i]))
		decimal += RetrouveValeur(str(pixelG[i]))
		decimal += RetrouveValeur(str(pixelB[i]))
		i += 1
	print ("[*] Decoupe valeur : ok .")
	decimal = str(decimal)
	i,compt = 0,0
	bheu = ""
	chiffreTxt = []
	while ( i < len(decimal) ):
			if ( compt == 3 ):
				chiffreTxt.append(bheu)
				bheu = ""
				compt = 0
			bheu += decimal[i]
			i += 1
			compt += 1	
	i=0
	txt = ""
	while ( i < len(chiffreTxt) ):
		chiffre = int(chiffreTxt[i])
		chiffre = chiffre - 100
		txt += chr(chiffre)
		if ( "FiNiEnD" in txt ):
			break
		i += 1
	print ("Message -> %s"%(txt[:len(txt)-7]))

def Acceuil():
	print """ 
	coder par Marnage
	Programme de steganogrphie ( lib : PIL )
	Cacher du texte dans une image (.bmp)
	
	Argument :
		-cache = pour cacher du texte dans une nouvelle image
		-i nomimage.bmp = l image de base ou sera cacher le texte
		-n newimage.bmp = la nouvelle image qui sera cree avec le texte
		
		-trouve = pour retrouver le texte
		-i = image dans la qu elle chercher le texte
	
	"""

def main(arg):
	Acceuil()
	if ( len(arg) != 3 and len(arg) != 5 ):
		print ("[!] Erreur : argument !")
		exit()
	i = 0
	while ( i < len(arg) ):
		if ( arg[i] == "cache" ):
			mode = "cache"
		elif ( arg[i] == "trouve"):
			mode = "trouve"
		elif ( arg[i] == "-i" ):
			nomImage = arg[i+1]
		elif ( arg[i] == "-n" ):
			NI = arg[i+1]
		i += 1
	if ( mode != "cache" and mode != "trouve" ):
		print ("[!] Erreur : argument !")
		exit()
	if not ".bmp" in nomImage :
		print("[!] Erreur : extention image non .bmp !")
		exit()

	if ( mode == "cache") :
		decimal = ConverCharInt()

	if ( access(nomImage, F_OK) ):
		image = open(nomImage)
		size = image.size
		print ("[*] Access/Ouverture image : ok .")
	else :
		print ("[!] Erreur : image innaccesible ! ")
		exit()
	pixelColor = list(image.getdata())
	lenPixel = len(pixelColor)
	i = 0
	pixelR = []
	pixelG = []
	pixelB = []
	lenPixel = len(pixelColor)
	size = image.size

	while ( i < lenPixel ):
		iP = 0
		pixelRGB = pixelColor[i]
		while ( iP < 3 ):
			if ( iP == 0 ):
				pixelR.append(pixelRGB[iP])
			elif ( iP == 1 ):
				pixelG.append(pixelRGB[iP])
			elif ( iP == 2 ):
				pixelB.append(pixelRGB[iP])
			iP += 1
		i += 1
	print ("[*] Separe RGB liste : ok .")
	
	if ( mode == "cache" ):
		CacheTexte(pixelR,pixelG,pixelB,decimal,lenPixel,size,NI)
	
	elif ( mode == "trouve" ):
		TrouveTexte(pixelR,pixelG,pixelB,lenPixel)


if ( __name__ == "__main__" ):
	main(argv[1:])

Conclusion

... .
 

Historique

04 décembre 2007 02:14:03 :
*

Commentaires et avis

Aucun commentaire pour le moment.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Association d'image [ par DoudouBidou ] Bonjour, j'ai une application qui utilise Python (jusque l&#224; tout va bien) et wxPython je voudrais savoir s'il est possible (sans utiliser PIL) d Enregistrer une image [ par misteraoul ] Je suis d&#233;sol&#233; mais je ne trouve nul part comment faire pour enregistrer un caneva sous Tkinter en image bmp Est ce que c'est possible ? S modifier les metadonnées [ par airod ] Je cherche a etre mis sur la voie. Comment peut on editer les champs IPTC (m&#233;tadonn&#233;es) propre a une image? Faut il lire le fichier image c Importer une image dans Tkinter... [ par skools ] Bonjour à tous, Et pardon à ceux à qui j'ai envoyé des messages perso, je n'arrivais pas à poster un suget dans le forum... Voilà, après des heures d Cryptage DES [Python] [ par Kadaj676 ] Bonjour j'aimerais savoir si vous aviez de la documentation sur des algo's de cryptage. Principalement DES, et je voudrais vosu demander, si il est po Cryptage xor [ par sorcier0011 ] Bonjour,J'aimerais bien faire un petit crypteur de texte xor mais je n'arrive pas a trouver comment convertir des lettres en Ascii. Parce que apart fa envoie d image sur le réseau [ par amina22 ] bonjour,je veux savoir si on peut envoyer  des fichiers (audio,vidéo,image..) a travers le réseau en utilisant la communication client/serveur(socket) Créer une image à partir d'un canvas [ par gaulthier ] Salut,comment peut-on créer une image (jpg de préférence) a partir du contenu d'un canvas?J'utilise PIL.Merci d'avance pour vos réponses! Pop-up personnalisé [ par Lacro59 ] Bonjour, En regardant un peu les différentes documentations sur wx.TaskBarIcon et wx.Menu pour la création d'un menu pop-up, je me demandais si :- il Cacher une image [ par akkuciha ] Bonjour à tous, Le but de mon application est de trouver l'image "Question" parmis les images "réponses" possibles.J'ai une zone d'image faite avec gl


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,749 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.