la cryptologie est un vaste monde
il y a autant de possibilité que l'imagination
[défis] Steganographie - le retour [RESOLU]
Re: [défis] Steganographie - le retour
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Re: [défis] Steganographie - le retour [RESOLU]
Bravo Dobro
Et merci Ar-S pour l'explication.
PS: et le code pour l'encodage il y a moyen de le voir ?
@++
Et merci Ar-S pour l'explication.
PS: et le code pour l'encodage il y a moyen de le voir ?
@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Re: [défis] Steganographie - le retour [RESOLU]
Pas de soucis.
Voilà le code sans ma GUI perso.. Tu as toutes les proces et j'ai ajouté les commentaires.
Ma prochaine mouture sera plus complexe, de la vraie stégano qui ne devrait pas être violable. (du moins sans l'exe de décryption)
;Initialisation
;1er étape
J'ai d'abord créé une liste dans lequel j'affiche les car en HEXA.
2eme étape
3 eme étape, on déssine la nouvelle image avec plein de debug pour bien voir ce qu'il se passe
On execute le code ainsi :
Voilou.
Le décode est au dessus donc pas la peine d'en rajouter.
Voilà le code sans ma GUI perso.. Tu as toutes les proces et j'ai ajouté les commentaires.
Ma prochaine mouture sera plus complexe, de la vraie stégano qui ne devrait pas être violable. (du moins sans l'exe de décryption)
;Initialisation
Code : Tout sélectionner
; By Ar-S 29/06/2019
UseJPEGImageDecoder()
UsePNGImageEncoder()
UsePNGImageDecoder()
Declare StockPixelTab(IMG)
Declare Dessine(IMG)
Declare.s Hex2Car(HEXASTRING$)
Global DimX, DimY
Global T$ = "Rebonjour les pures, est-ce aussi facile cette fois?"
Global LT = Len (T$)
Global NewList CarVal.s()
If Not LoadImage(0,"bgc.jpg",0)
Debug "Erreur, pas de fichier"
End
Else
DimX = ImageWidth(0)
DimY = ImageHeight(0)
Global Dim TabPixel(1,1)
CreateImage(1,DimX, DimY,24)
EndIf
;1er étape
J'ai d'abord créé une liste dans lequel j'affiche les car en HEXA.
Code : Tout sélectionner
For i = 1 To LT
V = Asc( Mid(T$,i,1) ) ; Je prends chaque caractère
V$ = RSet(Hex(V), 2, "0") ; et j'affiche leur valeur HEX en ajoutant un 0 si besoin pour que chaque valeur ait 2 chiffres. (la même chose que vous faisiez en binaire avec du rset 8 pour l'octect
Debug Mid(T$,i,1) + " => V$ : " + V$
For j = 1 To 2
AddElement( CarVal() ) ; ICI on enregistre les 2 valeurs d'un caractère dans la liste chainée.
CarVal() = Mid(V$,j,1)
Next j
Next
Code : Tout sélectionner
; Petite proce maison pour simplifier l'affichage à la fin
Procedure.s Hex2Car(HEXASTRING$)
ProcedureReturn Chr (Val ("$" + HEXASTRING$))
EndProcedure
; Ici la procédure classique pour stocker les couleurs des pixels dans un tableau, mais en HEX
Procedure StockPixelTab(IMG)
Dim TabPixel(DimX, DimY)
StartDrawing(ImageOutput(IMG))
For y = 0 To DimY-1
For x = 0 To DimX-1
COLhexa$ = Hex (Point (x,y))
TabPixel(x,y) = Point (x,y)
Next x
Next y
StopDrawing()
EndProcedure
Code : Tout sélectionner
Procedure Dessine(IMG)
Count = 0
SelectElement( CarVal(), 0)
StartDrawing(ImageOutput(IMG))
For y = 0 To DimY-1
For x = 0 To DimX-1
Color = TabPixel(x,y)
; On prend les valeurs HEX des composantes rouges et vertes en Hexa en ajoutant le 0 s'il y a qu'une seule valeur
R$ = RSet (Hex (Red(Color)),2,"0")
G$ = RSet (Hex (Green(Color)),2,"0")
; et on prend les valeurs classiques.. Pour plus tard lorsqu'il ni aura plus de car à implanter
R = Red(color)
G = Green(Color)
B = Blue(Color)
; Le 1er pixel, composant bleu pour chopper le nbr de car. Cette méthode est simpliste et ne marchera que si l'on ne dépasse pas $FF caractères, attention donc ;)
If count = 0
B = LT
count+1
ElseIf Count >= 1 And Count < (LT*2) +1
Rn$ = Left(R$,1) + CarVal()
;TEST
CC$ = CarVal()
NextElement( CarVal() )
Gn$ = Left(G$,1) + CarVal()
CC$ + CarVal()
NextElement( CarVal() )
; Paie ta vérif :D
Debug "Rouge ORI R$ : " + R$
Debug "Rouge Crypt Rn$ : " + Rn$
Debug "Vert ORI G$ : " + G$
Debug "Vert Crypt Gn$ : " + Gn$
Debug "CAR$ : " + Rn$+Gn$
R = Val("$" + Rn$)
G = Val("$" + Gn$)
Debug "REPONSE : " + Hex2Car(CC$)
Debug ""
count+1
; Next
EndIf
Color = RGB(R,G,B)
Plot(x,y, Color )
count+1
Next x
Next y
StopDrawing()
EndProcedure
Code : Tout sélectionner
StockPixelTab(0)
Dessine(1)
Le décode est au dessus donc pas la peine d'en rajouter.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels