PureBasic

Forums PureBasic
Nous sommes le Sam 24/Oct/2020 4:09

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 18 messages ]  Aller à la page Précédente  1, 2
Auteur Message
 Sujet du message: Re: [défis] Steganographie - le retour
MessagePosté: Ven 05/Juil/2019 18:18 
Hors ligne
Avatar de l’utilisateur

Inscription: Mar 31/Mai/2016 9:06
Messages: 2154
la cryptologie est un vaste monde :)
il y a autant de possibilité que l'imagination :)

_________________
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [défis] Steganographie - le retour [RESOLU]
MessagePosté: Ven 05/Juil/2019 19:41 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 29/Juil/2004 16:33
Messages: 2916
Localisation: Klyntar
Bravo Dobro 8)
Et merci Ar-S pour l'explication.
PS: et le code pour l'encodage il y a moyen de le voir ? :lol:






@++

_________________
Windows 10 x64, PureBasic 5.72 1 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: [défis] Steganographie - le retour [RESOLU]
MessagePosté: Ven 05/Juil/2019 21:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 09/Oct/2005 16:51
Messages: 9027
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
Code:
; 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:
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



2eme étape
Code:
; 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



3 eme étape, on déssine la nouvelle image avec plein de debug pour bien voir ce qu'il se passe
Code:
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


On execute le code ainsi :
Code:
StockPixelTab(0)
Dessine(1)


Voilou.
Le décode est au dessus donc pas la peine d'en rajouter.

_________________
~~~~Règles du forum ~~~~
.: Ar-S :. Tour + portable W10 x64 PB 5.6x / 5.7x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 18 messages ]  Aller à la page Précédente  1, 2

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 26 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye