|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Alexy TorresÉtudiant Inscription : décembre 2012 Messages : 4 ![]() |
Bonjour chers developpeurs !
Voilà j'ai un petit problème je suis sur un projet de cryptage pour le lycée mais je me heurte à un problème : J'ai cette image : ![]() Que je réussi a décrypter comme ceci : ![]() Mais je ne sais pas comment passer de celle ci à l'originale ci-dessous : ![]() Pourriez vous m'éclairer ? |
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() ![]() Inscription : décembre 2007 Messages : 1 797 ![]() |
Bonjour,
Sans rien connaitre du format BMP, la figure du milieu représente 4 images de serpent, probablement fabriquées avec une ligne sur 4. Il faudrait donc regrouper ces lignes pour n'avoir plus qu'une seule image.
__________________
Ne rien ranger permet d'observer la loi universelle d'entropie: l'inévitable convergence vers le chaos... Mes recettes python: http://www.jpvweb.com |
|
|
00
|
|
|
#4 | ||||
|
Invité de passage
![]() Alexy TorresÉtudiant Inscription : décembre 2012 Messages : 4 ![]() |
Voila la fonction qui crypte :
Code :
et ma fonction qui décrypte : image0->image1 Code :
|
||||
|
|
00
|
|
|
#5 |
|
Membre à l'essai
![]() Inscription : décembre 2008 Messages : 32 ![]() |
Bonjour,
je pense que tu devrais commencer par bien comprendre le code de cryptage, le décryptage te viendra naturellement après. Le code de cryptage est écrit volontairement avec des variables Pour t'aider un peu plus, pim est une string qui représente l'image complète une fois le changement de couleur fait. newimage représente une string de l'image une fois le décalage fait. l'écriture permet de sélectionner les caractères de "pim" entre la position "colone*v*6" et "colonne*(v+1)*6" Donc il mélange les caractères et toi tu vas devoir les démêler. |
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Alexy TorresÉtudiant Inscription : décembre 2012 Messages : 4 ![]() |
Merci pour ta réponse justement je comprend à peut prêt le code donc j'arrive a décrypter mais je me retrouve avec les quatre image en une (dont deux violette) et là ben je sèche...
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Inscription : mars 2007 Messages : 858 ![]() |
Pour les parties en violet, il semble qu'il y ait une inversion des canaux verts et bleus; vu que la couleur normale est dans les tons jaunes (qui est du rouge + du vert) et la couleur erronée est proche du magenta (du rouge + du bleu).
Voir ici: http://fr.wikipedia.org/wiki/Fichier:Synthese%2B.svg |
|
|
00
|
|
|
#8 | ||||
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
Bonjour,
Déjà je ne comprends pas très bien si tu es, ou non, l'auteur d'un ou des deux bouts de code que tu as postés. Ou est-ce du code qu'on t'a fourni pour en faire un troisième en étudiant la méthode de [dé]chiffrage ? Tu peux retoucher les fonctions que tu as postées ou pas ? Ensuite, la "fonction de chiffrage" lève systématiquement une exception (je l'ai essayée sur plusieurs images dont celle que tu as postée - en png ... étant donné le sujet, c'est balot !) Code :
Après, il y aurait beaucoup de choses à dire sur le code, et pas seulement sur les noms de variables, évoqués dans un post précédent. Autre chose : quel est l'intérêt de cette image intermédiaire que tu sembles vouloir "finir" de décrypter ? C'est un partage à la Salomon d'un travail global à faire à plusieurs ? Bref, on peut continuer longtemps à émettre des hypothèses mais, le mieux, serait que tu fournisses des indications précises, des éléments de contexte et les vrais bouts de code - qui fonctionnent ! - afin qu'on puisse t'aider efficacement. Tout est affaire de détails ici alors, avec des entrées approximatives, "ça va pas le faire". [EDIT] le décryptage (partiel) ne fonctionne pas mieux ... Code :
|
||||
|
|
00
|
|
|
#9 |
|
Membre à l'essai
![]() Inscription : décembre 2008 Messages : 32 ![]() |
Yop,
Peux tu nous donner ta version de Python ? (ça peut toujours être utile) Ensuite j'avoue que je ne comprend pas non plus ce que tu ne comprend pas Tu ne vois pas pourquoi il y a quatre images ? Tu ne vois pas comment refaire ta chaine pour avoir une seule image ? ... ton problème est ailleurs ? |
|
|
00
|
|
|
#10 | ||||||||||||||||
|
Membre Expert
![]() ![]() Inscription : octobre 2008 Messages : 972 ![]() |
Le code n'est utilisable qu'avec Python 3.
Ceci exclus Python 2: Code :
Le bug remarqué par plxpy: Code :
Code :
La largeur: Code :
Code :
Code :
Comme l'a dit Alliaël, les noms ne sont pas très judicieux, entre autres ici ligne désigne le nombre de colonnes et colone désigne le nombre de lignes. Le re-codage des composantes couleur est fait ainsi: Chaque pixels originel est composé des six octets RRVVBB chaque composant nécessitant deux octets parce qu'il doivent être signés. Lors du re-codage chaque paire est transformée en un entier Ensuite le décallage consiste à combiner des suites d'octets (d'une longueur égale au nombre de lignes) en les doublant pour retrouver un nombre total d'octets, ce qui permet de réenregistrer l'image sans modification des dimensions dans le header. Exemple avec une image de 5 lignes le re-codage donne ceci Citation:
Citation:
L'ordre initial peut être récupéré avec ceci: Code :
Pour le décodage des couleurs par contre, je suis encore dans le brouillard. |
||||||||||||||||
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Alexy TorresÉtudiant Inscription : décembre 2012 Messages : 4 ![]() |
Merci pour vos réponses !
Notre prof s'est enfin rendu compte que le code était bien trop horrible à déchirer du coup il n'est plus question de finir cet exercice que même lui ne semblait pas bien comprendre. Cependant je vais clarifier le code et essayer de décrypter l'image merci à tout le monde pour vos indications qui vont m'aider pour la suite ! PS : Alliaël je ne vois pas comment reconstruire l'image qui est diviser en quatre pour en faire une seule. Désolé pour les format poster mais je ne trouve pas d'hébergeur qui garde les images en .bmp. Pour le format c'est du bitmap windows 24bit |
|
|
00
|
|
|
#12 | ||
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
Citation:
Si, par contre, c'est l'aspect manipulation d'un fichier .bmp qui t'intéresse, c'est autre chose. Mais faudrait alors revoir assez sérieusement le code : en l'état, c'est une horrible usine à gaz, mal foutue de surcroit ! Tu pourrais aussi, tout simplement, oublier ce code et t'essayer à des choses comme séparer les canaux (R,V,B), retourner l'image (miroir horizontal / vertical), etc... Citation:
|
||
|
|
00
|
|
|
#13 | ||
|
Membre régulier
![]() Inscription : juin 2007 Messages : 108 ![]() |
Citation:
Mais il te suffit de créer un compte et, avec la version de base, tu peux déjà déposer un paquet d'images. Citation:
|
||
|
|
00
|
|
|
#14 | ||||
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
Le code, en dehors des défauts déjà évoqués, est buggé, notamment la fonction qui fait un "décalage" dans le premier bout de code que tu as posté. Donc, toute tentative d'arriver à un résultat correct est voué à l'échec.
J'ai repris le bout de code qui fait le décalage, en ai fait une fonction (vu que ce n'était pas fait ... faute !) et l'ai appliqué à une "image" que j'ai construite à la mano : c'est une "chaine hexa" remplie de caractères 0. Lors de la copie de pim vers newimg, je marque aussi les caractères utilisés dans pim avec des '1' qui viennent remplacer les '0' : Code :
et patatras ... Code :
et encore, je ne suis pas allé voir si les 6 caractères associés à un même pixel restaient groupés, mais à vue de nez je pense que oui Alors pour revenir à un beau python tout propre et tout pareil à celui d'origine ... c'est tout simplement impossible vu que l'on perd de l'information dans cette partie (au moins celle-là ...) [EDIT] j'ai laissé le plus possible le code d'origine, donc dans un état ..., pour ne pas pouvoir imputer aux instructions ajoutées le problème soulevé. |
||||
|
|
00
|
|
|
#15 |
|
Membre émérite
![]() Ingénieur Inscription : janvier 2009 Messages : 505 ![]() |
J'ai modifié légèrement mon code en laissant, dans pim, des pixels rouges là où ils ont été transférés à la nouvelle image puis sauvegardé pim et la nouvelle image :
pim après utilisation : ![]() et l'image résultat du décalage : ![]() Sur l'image résultat, on voit bien où est mise l'information en double (d'où les 4 pythons aplatis dans la deuxième image du début de la discussioon : les deux du milieu sont la moitié des vraies informations/pixels, ceux du bas et du haut une redite). Et sur l'image origine, on voit très bien aussi que tous les pixels n'ont pas été transférés (on reconnait bien le bestiau !) |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com