Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Cryptage d'un texte Ascii en image bmp | |
| | Auteur | Message |
---|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Cryptage d'un texte Ascii en image bmp Ven 16 Déc 2022 - 20:38 | |
| Un peu comme un QR code, mais très simplifié. L'image résultat est en noir et blanc, chaque bit à 1 du texte est représenté par un pixel noir dans l'image. On choisit la largeur de l'image (quelconque) en pixels, sa hauteur sera fonction de la taille du texte. Deux Subs: codage et décodage. Ici le codage est élémentaire, mais on pourrait facilement compliquer la chose (pour les pirates éventuels !), en ajustant évidemment le décodage en conséquence. Ci-dessous l'image et son décodage: - Code:
-
DIM rc$,a$,f1$,f2$,fb$,w,y rc$ = CHR$(13)+CHR$(10) f1$ = "Z:\Ch1.txt": ' Path à ajuster f2$ = "Z:\Ch2.txt": ' idem fb$ = "Z:\Test.bmp": ' idem a$ = "Au clair de la lune"+rc$+"Mon ami Pierrot." a$ = a$+rc$+"Prête-moi ta plume"+rc$+"Pour écrire un mot." BORDER_SMALL 0: FONT_SIZE 0,12 file_open_write 1,f1$: FILE_WRITELN 1,a$: file_close 1 w = 32: ' largeur de l'image résultat, à choisir (pas de contrainte) ' (hauteur fonction de la taille du texte) AscToBmp(f1$,w,fb$): ' codage du texte en image PICTURE 1: TOP 1,10: LEFT 1,10: WIDTH 1,w: HEIGHT 1,VAL(CLIPBOARD_STRING_PASTE$) FILE_LOAD 1,fb$: ' image résultat ' BmpToAsc(fb$,f2$): ' décodage de l'image en texte FILE_OPEN_READ 1,f2$ y = TOP(1)+HEIGHT(1)+10 WHILE FILE_EOF(1) = 0 FILE_READLN 1,a$: PRINT_LOCATE 10,y: PRINT a$: y = y+TEXT_HEIGHT(a$,0) END_WHILE END ' ============================================================================= SUB AscToBmp(f$,w,fr$) ' Conversion d'un fichier texte ascii f$ en image bmp fr$ binaire (N/B) ' Largeur de l'image w pixels, la hauteur sera fonction de la taille du texte ' (décodage par la sub BmpToAsc) DIM_LOCAL n2,p,tx$,a$,b$,c$,bi(8),x,y,i,j,v bi(1)=128: bi(2)=64: bi(3)=32: bi(4)=16: bi(5)=8: bi(6)=4: bi(7)=2: bi(8)=1 n2 = NUMBER_2D_TARGET p = 450: MEMO p: HIDE p: WIDTH p,2000: FILE_LOAD p,f$ tx$ = TEXT$(p): DELETE p: ' (lecture de la totalité de f$ dans la variable tx$) b$ = "" FOR j = 1 TO LEN(tx$) a$ = MID$(tx$,j,1) v = ASC(a$) FOR i = 1 TO 8 IF BIN_AND(v,bi(i)) > 0 THEN b$ = b$+"1": ELSE: b$ = b$+"0" NEXT i NEXT j PICTURE p: WIDTH p,w: HEIGHT p,2000: 2D_TARGET_IS p x = 0: y = 0 FOR i = 1 TO LEN(b$) c$ = MID$(b$,i,1) IF c$ = "1" THEN 2D_POINT x,y x = x+1: IF x = w THEN x = 0: y = y+1 NEXT i y = y+1: HEIGHT p,y: CLIPBOARD_STRING_COPY STR$(y): ' hauteur image FILE_SAVE p,fr$: 2D_TARGET_IS n2: DELETE p END_SUB ' ============================================================================= SUB BmpToAsc(f$,fr$) ' Décodage d'une image bmp f$ (créée par la sub AscToBmp) en fichier ' texte fr$ ascii. DIM_LOCAL w,h,x,y,p,b$,a$,tx$,bi(8),i,j,v bi(1)=128: bi(2)=64: bi(3)=32: bi(4)=16: bi(5)=8: bi(6)=4: bi(7)=2: bi(8)=1 FILEBIN_OPEN_READ 1,f$ FILEBIN_POSITION 1,18: w = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: h = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 p = 450: PICTURE p: HIDE p: WIDTH p,w: FILE_LOAD p,f$ b$ = "": x = 0: y = 0 FOR y = 0 TO h-1 FOR x = 0 TO w-1 a$ = "1": IF COLOR_PIXEL_RED(p,x,y) > 0 THEN a$ = "0" b$ = b$+a$ NEXT x NEXT y DELETE p tx$ = "" FOR j = 1 TO LEN(b$) STEP 8 a$ = MID$(b$,j,8): v = 0 FOR i = 1 TO 8 IF MID$(a$,i,1) = "1" THEN v = v+bi(i) NEXT i tx$ = tx$ + CHR$(v) NEXT j MEMO p: HIDE p: ITEM_ADD p,tx$: FILE_SAVE p,fr$: DELETE p END_SUB ' =============================================================================
Dernière édition par JL35 le Sam 17 Déc 2022 - 12:28, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Cryptage d'un texte Ascii en image bmp Ven 16 Déc 2022 - 21:28 | |
| Salut JL35 Merci pour le partage. C'est une idée comme une autre pour chatouiller les "pirates éventuels". A ce que je vois, il me semble que tu as oublié comment poster un code ! Tu n'as certainement pas remarqué les qui décorent ton code! NB : le forum remplace les deux caractères 8 suivi de la parenthèse en un smiley . Pour rémédier à ce désagrément, ajouter un caractère espace entre les deux. Bon, comme je n'ai rien d'autre à faire, je remets ton code en ordre tout en adaptant les chemins à ma convenance - Code:
-
DIM rc$,a$,f1$,f2$,fb$,w,y rc$ = CHR$(13)+CHR$(10) f1$ = "c:\temp\Ch1.txt": ' Path à ajuster f2$ = "c:\temp\Ch2.txt": ' idem fb$ = "c:\temp\Test.bmp": ' idem a$ = "Au clair de la lune"+rc$+"Mon ami Pierrot." a$ = a$+rc$+"Prête-moi ta plume"+rc$+"Pour écrire un mot." BORDER_SMALL 0: FONT_SIZE 0,12 file_open_write 1,f1$: FILE_WRITELN 1,a$: file_close 1 w = 32: ' largeur de l'image résultat, à choisir (pas de contrainte) ' (hauteur fonction de la taille du texte) AscToBmp(f1$,w,fb$): ' codage du texte en image PICTURE 1: TOP 1,10: LEFT 1,10: WIDTH 1,w: HEIGHT 1,VAL(CLIPBOARD_STRING_PASTE$) FILE_LOAD 1,fb$: ' image résultat ' BmpToAsc(fb$,f2$): ' décodage de l'image en texte FILE_OPEN_READ 1,f2$ y = TOP(1)+HEIGHT(1)+10 WHILE FILE_EOF(1) = 0 FILE_READLN 1,a$: PRINT_LOCATE 10,y: PRINT a$: y = y+TEXT_HEIGHT(a$,0) END_WHILE END ' ============================================================================= SUB AscToBmp(f$,w,fr$) ' Conversion d'un fichier texte ascii f$ en image bmp fr$ binaire (N/B) ' Largeur de l'image w pixels, la hauteur sera fonction de la taille du texte ' (décodage par la sub BmpToAsc) DIM_LOCAL n2,p,tx$,a$,b$,c$,bi( 8 ),x,y,i,j,v bi(1)=128: bi(2)=64: bi(3)=32: bi(4)=16: bi(5)=8: bi(6)=4: bi(7)=2: bi( 8 )=1 n2 = NUMBER_2D_TARGET p = 450: MEMO p: HIDE p: WIDTH p,2000: FILE_LOAD p,f$ tx$ = TEXT$(p): DELETE p: ' (lecture de la totalité de f$ dans la variable tx$) b$ = "" FOR j = 1 TO LEN(tx$) a$ = MID$(tx$,j,1) v = ASC(a$) FOR i = 1 TO 8 IF BIN_AND(v,bi(i)) > 0 THEN b$ = b$+"1": ELSE: b$ = b$+"0" NEXT i NEXT j PICTURE p: WIDTH p,w: HEIGHT p,2000: 2D_TARGET_IS p x = 0: y = 0 FOR i = 1 TO LEN(b$) c$ = MID$(b$,i,1) IF c$ = "1" THEN 2D_POINT x,y x = x+1: IF x = w THEN x = 0: y = y+1 NEXT i y = y+1: HEIGHT p,y: CLIPBOARD_STRING_COPY STR$(y): ' hauteur image FILE_SAVE p,fr$: 2D_TARGET_IS n2: DELETE p END_SUB ' ============================================================================= SUB BmpToAsc(f$,fr$) ' Décodage d'une image bmp f$ (créée par la sub AscToBmp) en fichier ' texte fr$ ascii. DIM_LOCAL w,h,x,y,p,b$,a$,tx$,bi( 8 ),i,j,v bi(1)=128: bi(2)=64: bi(3)=32: bi(4)=16: bi(5)=8: bi(6)=4: bi(7)=2: bi( 8 )=1 FILEBIN_OPEN_READ 1,f$ FILEBIN_POSITION 1,18: w = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: h = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 p = 450: PICTURE p: HIDE p: WIDTH p,w: FILE_LOAD p,f$ b$ = "": x = 0: y = 0 FOR y = 0 TO h-1 FOR x = 0 TO w-1 a$ = "1": IF COLOR_PIXEL_RED(p,x,y) > 0 THEN a$ = "0" b$ = b$+a$ NEXT x NEXT y DELETE p tx$ = "" FOR j = 1 TO LEN(b$) STEP 8 a$ = MID$(b$,j,8): v = 0 FOR i = 1 TO 8 IF MID$(a$,i,1) = "1" THEN v = v+bi(i) NEXT i tx$ = tx$ + CHR$(v) NEXT j MEMO p: HIDE p: ITEM_ADD p,tx$: FILE_SAVE p,fr$: DELETE p END_SUB ' ========================================================================
| |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Cryptage d'un texte Ascii en image bmp Ven 16 Déc 2022 - 22:10 | |
| Mince alors, je ne l'ai même pas remarqué au départ ! Merci mon ami papydall pour ta remarque judicieuse et ta correction ! J'ai dû le savoir, mais j'avais complètement oublié... Je regarde ta photo, tu n'as pas pris une ride... Je viens de comprendre pour les images intempestives dans le code, c'est tout simplement que j'avais oublié de mettre le code entre les balises <Code> ! c'est corrigé ci-dessus. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Cryptage d'un texte Ascii en image bmp Sam 17 Déc 2022 - 16:45 | |
| L'image résultat du cryptage peut être minuscule (1 pixel par bit). On peut l'agrandir à volonté pour le confort visuel, mais pour le décryptage il faudra utilise l'image originale (ou modifier la sub de décryptage en con séquence. Pour agrandir (ou réduite) une image bmp quelconque: - Code:
-
SUB ZoomBmp(f$,z,fr$) ' Zoom d'une image bmp f$ d'un facteur z, résultat dans fr$ (bmp) DIM_LOCAL n2,w,h,p: n2 = NUMBER_2D_TARGET FILEBIN_OPEN_READ 1,f$ FILEBIN_POSITION 1,18: w = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_POSITION 1,22: h = FILEBIN_READ(1)+256*FILEBIN_READ(1) FILEBIN_CLOSE 1 p = 450: FORM p: BORDER_HIDE p: WIDTH p,w*z: HEIGHT p,h*z PICTURE p+1: PARENT p+1,p: FULL_SPACE p+1: STRETCH_ON p+1: FILE_LOAD p+1,f$ IMAGE p+2: 2D_TARGET_IS p: 2D_IMAGE_COPY p+2,0,0,w*z,h*z FILE_SAVE p+2,fr$ 2D_TARGET_IS n2: DELETE p+2: DELETE p+1: DELETE p END_SUB origine (32x21) : x 4 (128x84) :
Dernière édition par JL35 le Sam 17 Déc 2022 - 20:38, édité 1 fois | |
| | | jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Cryptage d'un texte Ascii en image bmp Sam 17 Déc 2022 - 19:25 | |
| -------------------------- -------------------------- | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Cryptage d'un texte Ascii en image bmp Sam 17 Déc 2022 - 20:08 | |
| Merci jj ! ça peut( servir pour un camouflage sommaire. Et comme je disais on peut le compliquer à loisir (décalages, etc.) pour mettre à l'abri nos secrets d'état | |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Cryptage d'un texte Ascii en image bmp Sam 17 Déc 2022 - 21:18 | |
| Bonjour JL35 et bonjour à tous ! Effectivement, c'est très intéressant et pas seulement pour le camouflage ou les services secrets !! Je vois une autre option qui permet de sauvegarder des options d'un programme. Avec des états actif ou inactifs par exemple en lieu et place de fichier texte. Voir même des options plus avancées... Je suis sûr qu'en cherchant bien on trouvera plein d'utilisations a ce mini QR-code... Merci pour le partage | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Cryptage d'un texte Ascii en image bmp Sam 17 Déc 2022 - 22:05 | |
| Merci Minibug, c'est un plaisir ! Et certes on doit pouvoir trouver d'autres applications... | |
| | | Contenu sponsorisé
| Sujet: Re: Cryptage d'un texte Ascii en image bmp | |
| |
| | | | Cryptage d'un texte Ascii en image bmp | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |