Défis - Trouvez un message caché dans une image

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Défis - Trouvez un message caché dans une image

Message par SPH »

La réponse :
D←but - Ceci est un texte qui va ↑tre ←cris dans l'image, pour cela nous allons utiliser la m←thode de st←ganographie.
l'id←e est de stocker des donn←es dans une image en modifiant les valeurs des canaux de chaque pixel de mani│re subtile.
Pour chaque pixel, on va utiliser les valeurs de ses canaux (Rouge, Vert, Bleu, et Alpha le cas ←ch←ant) pour stocker un bit d'information.
On va consid←rer que la valeur du canal est 1 si elle est impaire, et 0 si elle est paire.
En faisant cela pour tous les pixels de l'image, on va pouvoir stocker des bits d'information dans l'image sans que cela ne soit visible ¢ l'ワil nu.
Si l'image contient un canal alpha, ceci sera pris en compte dans le traitement. - Stop
Code :

Code : Tout sélectionner

InitSprite() 
InitMouse() 
InitKeyboard() 
UsePNGImageDecoder()

;SetPriorityClass_ ( GetCurrentProcess_ (), #IDLE_PRIORITY_CLASS ) 

ExamineDesktops()
dw.w=DesktopWidth(0) 
dh.w=DesktopHeight(0)


win=OpenWindow(#PB_Any, 0, 0, 0, 0, "Opération Stégano",  #PB_Window_Maximize |  #PB_Window_BorderLess )
scr_w=WindowWidth(win) : scr_h=WindowHeight(win)
OpenWindowedScreen (WindowID(win),0 , 0, scr_w, scr_h,0, 0, 0, #PB_Screen_SmartSynchronization)

LoadSprite(1,"f:\PureBasic573\shadow24.png")
DisplaySprite(1,0,0)

StartDrawing(ScreenOutput())
Dim octet.b(10000)
la=0
bit=128
For u=0 To 61
  For i=0 To 61
    p=Point(i,u)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Red(p)%2=1
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Green(p)%2=1
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Blue(p)%2=1
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  Next
Next
StopDrawing()
;
a$=""
For i=0 To la+1
  a$+Chr(octet(i))
Next
Debug a$

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Défis - Trouvez un message caché dans une image

Message par Ar-S »

Bien joué.
Pourquoi tu t'embêtes avec des sprites ?
~~~~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
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Défis - Trouvez un message caché dans une image

Message par SPH »

Et bien, il faut bien lire les point(x,y) de l'image. Alors, je charge l'image sous forme de sprite et je lis les pixels...

Tu ferais comment toi ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Défis - Trouvez un message caché dans une image

Message par Ar-S »

En changeant simplement l'image et en pointant sur elle meme
Un StartDrawing(ImageOutput(1)) stopdrawing() t'évite d'ouvrir une fenêtre openwindowscreen()

Code : Tout sélectionner

UsePNGImageDecoder()

ExamineDesktops()
dw.w=DesktopWidth(0) 
dh.w=DesktopHeight(0)


win=OpenWindow(#PB_Any, 0, 0, 0, 0, "Opération Stégano",  #PB_Window_Maximize |  #PB_Window_BorderLess )
scr_w=WindowWidth(win) : scr_h=WindowHeight(win)

LoadImage(1,"message24.png") ; <---- tonimage

Dim octet.b(10000)
la=0
bit=128
StartDrawing(ImageOutput(1))
For u=0 To 61
  For i=0 To 61
    p=Point(i,u)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Red(p)%2=1
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Green(p)%2=1
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Blue(p)%2=1
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  Next
Next
StopDrawing()
a$=""
For i=0 To la+1
  a$+Chr(octet(i))
Next
Debug a$

a$=""
For i=0 To la+1
  a$+Chr(octet(i)) + Str(octet(i))
Next
Debug a$
~~~~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
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Défis - Trouvez un message caché dans une image

Message par SPH »

Pourquoi le deuxieme message dans le 2eme bit de poids faible ?

Code : Tout sélectionner

InitSprite() 
InitMouse() 
InitKeyboard() 
UsePNGImageDecoder()

;SetPriorityClass_ ( GetCurrentProcess_ (), #IDLE_PRIORITY_CLASS ) 

ExamineDesktops()
dw.w=DesktopWidth(0) 
dh.w=DesktopHeight(0)


win=OpenWindow(#PB_Any, 0, 0, 0, 0, "Opération Stégano",  #PB_Window_Maximize |  #PB_Window_BorderLess )
scr_w=WindowWidth(win) : scr_h=WindowHeight(win)
OpenWindowedScreen (WindowID(win),0 , 0, scr_w, scr_h,0, 0, 0, #PB_Screen_SmartSynchronization)

LoadSprite(1,"f:\PureBasic573\shadow24.png")

DisplaySprite(1,0,0)

StartDrawing(ScreenOutput())

Dim octet.w(62*63)
Dim bank.w(62*63)
For i=1 To 130
  Read.w bank(i)
Next

sph=1  
la=01
bit=128
For u=0 To 61
  For i=0 To 61
    p=Point(i,u)
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Red(p)%4>1 ; on regarde le 2eme bit de poids faible
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      octet(la)!bank(sph) :sph+1
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Green(p)%4>1 ; on regarde le 2eme bit de poids faible
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      octet(la)!bank(sph) :sph+1
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    If Blue(p)%4>1 ; on regarde le 2eme bit de poids faible
      octet(la)+bit
    EndIf
    bit/2
    If bit=0
      bit=128
      octet(la)!bank(sph) :sph+1
      la+1
    EndIf
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  Next
Next
StopDrawing()
;
sph=1
a$=""
u=0
For i=0 To 130
  a$+Chr(octet(i))
Next
Debug a$

;;;;;;;;;
DataSection
  dta:
;===
Data.w 225,58,209,174,155,211,251,149,219,248,135
Data.w 67,165,225,12,225,195,232,123,227,56,211
Data.w 182,137,245,138,142,181,179,168,41,12,196
Data.w 174,22,215,51,4,216,42,30,47,129,247
Data.w 214,69,137,4,58,67,255,232,24,198,46
Data.w 16,196,105,0,195,121,3,192,42,11,198
Data.w 204,225,107,43,44,41,176,123,150,3,8
Data.w 150,40,81,223,42,77,195,39,0,150,47
Data.w 65,213,124,247,102,247,105,199,108,45,95
Data.w 83,126,246,182,235,238,120,251,251,176,176
Data.w 244,50,65,40,31,251,23,99,207,162,146
Data.w 95,198,63,255,223,223,251,205,159
EndDataSection
Message :
Salut, je suis sur que vous arriverez jamais a la hauteur du grand shadow. Je suis une tempete d'inteligence!

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: Défis - Trouvez un message caché dans une image

Message par Shadow »

C'est pas mal mais ya des problèmes avec certain caractères !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Répondre