Stéganographie - Python
Bonjour,
Je suis débutant en algorithmie, depuis septembre dernier.
Je suis actuellement en école d'ingénieurs, où mes premiers cours furent sur de la programmation impérative et de la programmation avec python.
Je suis en train d'étudier en TP, dans lequel j'ai pas mal avancé, mais la dernière partie me bloque beaucoup.
Cela concerne la stéganographie. Je dois écrire un programme qui charge une image de taille suffisante dans une matrice de pixels et "cache" les caractères d'une chaîne de caractères (de moins de 50 caractères) .
Les programmes que j'ai fais précédemment furent moins complexes, j'ai donc facilement trouvé l'approche et donc l'algorithme a utilisé.
Ici, je ne sais pas par quoi démarrer.
A noter que je ne dois pas utiliser des fonctions toutes faites, hormis quelques exceptions telles que la taille d'une image (hauteur, largeur) et l'écriture d'une image.
Est-il possible d'avoir de l'aide ? Notamment sur l'algorithme que je pourrais utiliser pour démarrer ma réflexion sur le problème.
Je suis débutant en algorithmie, depuis septembre dernier.
Je suis actuellement en école d'ingénieurs, où mes premiers cours furent sur de la programmation impérative et de la programmation avec python.
Je suis en train d'étudier en TP, dans lequel j'ai pas mal avancé, mais la dernière partie me bloque beaucoup.
Cela concerne la stéganographie. Je dois écrire un programme qui charge une image de taille suffisante dans une matrice de pixels et "cache" les caractères d'une chaîne de caractères (de moins de 50 caractères) .
Les programmes que j'ai fais précédemment furent moins complexes, j'ai donc facilement trouvé l'approche et donc l'algorithme a utilisé.
Ici, je ne sais pas par quoi démarrer.
A noter que je ne dois pas utiliser des fonctions toutes faites, hormis quelques exceptions telles que la taille d'une image (hauteur, largeur) et l'écriture d'une image.
Est-il possible d'avoir de l'aide ? Notamment sur l'algorithme que je pourrais utiliser pour démarrer ma réflexion sur le problème.
1 réponse
-
Contributeurbonjour,
as-tu essayé de faire une recherche sur internet, à partir de "stéganographie"?-
Oui, je commence à avoir un peu d'idée pour mon programme. J'ai d'ailleurs commencé quelques lignes de codes, notamment pour tester la convertion chaîne/binaire ou décimal/binaire.
Voici le code :
def Steganographie(texte="S"): Image1 = Image.read_img("TUX.png") #on recupere les dimensions de l'image : hauteur = Image.get_height(Image1) largeur = Image.get_width(Image1) #on separe l'image en trois couleurs : rouge, vert et bleu : # Parcours des colonnes de la matrice for j in range (hauteur): #Parcours des lignes de la matrice for i in range(largeur): RED = Image1[i][j][0] GREEN = Image1[i][j][1] BLUE = Image1[i][j][2] #on trasnforme la partie rouge en liste liste_rouge = list(RED) # on calcul la longueur de la chaîne et la transforme en binaire longueur_texte = len(texte) binaire_texte = bin(longueur_texte)[2:].rjust(8,"0") #on transforme la chaîne en une liste de 0 et de 1 for x in texte: ascii = bin(ord(x))[2:].rjust(8,"0") Steganographie()
C'est un morceau de code, donc non compilé.
Ensuite, il faut que je remplace les 0 et 1 dans les pixels rouges par exemple, mais pour l'instant je ne vois pas trop comment faire. -
Contributeur@TelnazDonne quelques exemples de ce que tu penses faire avec les pixels rouges.
-
@yg_beLes pixels rouges sont codés en binaire par 11111011. Je me suis donc dis que je pourrais remplacer les 3 bits de poids faibles (011) par les 3 bits de poids fort du texte envoyé et converti en binaire. Qu'en pensez-vous ?
-
Contributeur@Telnazcela vaut la peine de tester cela, je pense.
-
@yg_bePar contre, je ne vois pas du tout comment récupérer et modifier ces pixels.
-