Lecteur d'images cryptées

Programmation d'applications complexes
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Lecteur d'images cryptées

Message par SPH »

Franchement, j'avais bien cherché sur le net. Mais bon, meme si ca existe, c'est loin d'etre devenu populaire.

Pour le bug, djes, j'aimerais t'y voir moi derriere le debuggeur a traquer ce bug sans logique. Encore un bug qui entrave le chemin de mes reves...

!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
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Lecteur d'images cryptées

Message par SPH »

Le bug est ici :

Code : Tout sélectionner

*MemoryID = AllocateMemory(length) 
length est d'un certain nombre mais *MemoryID est a zero. Cela veux dire (je crois) que PB n'a pas pu reserver de memoire.
Pourquoi ?

!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
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Lecteur d'images cryptées

Message par TazNormand »

Quand je teste, j'ai pas de bug d'allocation mémoire.

une idée SPH, aulieu de crypter le fichier image en entier, crypte uniquement les données, gardes les entêtes du format (JFIF...) comme ça le fichier est toujours affichable comme image, mais on ne voit rien que du "brouillage" à l'écran, dans le même style que ce que montre lepiaf31.
Image
Image
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Lecteur d'images cryptées

Message par Anonyme2 »

Salut SPH,

perso je trouve que c'est une bonne idée, je partage assez les remarques de TazNormand.
On est sur un forum d'entraide, alors on essaye d'aider les autres un jour et un autre jour ce sont les autres qui nous aident.

Sur ton problème, si length est non nul et que allocatememory échoue, c'est que la mémoire dispo n'est pas suffisante, c'est ce que dit la doc PB
Si la quantité de mémoire demandée est disponible, *MemoryID contiendra l'adresse de début de la zone mémoire, ou 0 si la zone n'a pu être allouée.
Je te conseille de mettre un test sur *MemoryID en Debug avec l'api microsoft GetLasterror_()

Code : Tout sélectionner

If MemoryID = 0
Debug GetLastError_()
EndIf
ensuite, j'espère que l'erreur correspondra, tu vas sur le site de MS et tu cherches l'explication avec le numéro d'erreur renvoyé par GetLastError_()
http://msdn.microsoft.com/en-us/library ... 85%29.aspx

As-tu l'erreur lorsque tu fais de nombreuses opérations, car je ne trouve jamais de FreeMemory(*MemoryID) dans ton code.
Il est possible que tu alloues beaucoup de fois de la mémoire sans la désallouer.

je te conseille de mettre ceci

Code : Tout sélectionner

 FreeMemory(*MemoryID)
après la ligne

Code : Tout sélectionner

Resultat = CatchImage(#ImageTmp, *MemoryID, length-6)
de la procedure Pc_ChargerImage()

un test sur la variable length serait un plus, c'est pas grand chose.

Code : Tout sélectionner

               If length
                    *MemoryID = AllocateMemory(length)         ; alloue un bloc mémoire de la taille du fichier
A+
Denis
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Lecteur d'images cryptées

Message par SPH »

Merci denis pour toutes ces astuces. Je les ai essayé mais tot ou tard, PB buggue...
Si tu veux essayer, choisis 3 clés(onglet 3) puis crypte plusieurs images(onglet 2). Ensuite, en gardant tres cles, surf jusqu'a tes images crypté et regarde les(onglet 1) en appuyant sur PAGE UP et PAGE DOWN. Ca marche un moment puis ca plante sans raison...

!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
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Lecteur d'images cryptées

Message par djes »

Sans avoir testé plus que ça, je pense que tu écrases de la mémoire là, si la taille de l'image n'est pas un multiple de 8 :

Code : Tout sélectionner

;length/8
For i=0 To length Step 8
  q.q=PeekQ(*MemoryID+i)
;          Debug q
           For u=1 To 3
           q!ReadQuad(u)
           If Loc(u)>=Leng(u)
             FileSeek(u,0) 
           EndIf
         Next
         PokeQ(*MemoryID+i,q)
Next
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Lecteur d'images cryptées

Message par Anonyme2 »

Je confirme ce que dit djes.

Avec le purifieur de PB, ça plante sur le PokeQ mais le peekQ doit avoir le même problème.

La boucle For i=0 To length Step 8 doit être fausse car soit on fait :

For i=0 To length - 1

soit on fait

For i=1 To length

Par exemple si tu as 10 octets, c'est soit de 0 à 9, soit de 1 à 10 mais pas de 0 à 10 car là on dépasse de 1 octets la zone
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Lecteur d'images cryptées

Message par SPH »

Est-ce que ca, ca pourrait arranger les choses :

Code : Tout sélectionner

     *MemoryID = AllocateMemory(length+16)
:?:

!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
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Re: Lecteur d'images cryptées

Message par djes »

Je pense que oui
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Lecteur d'images cryptées

Message par anissa »

@SPH

Mise à part l'histoire de FreeMemory(), si les extensions (ci-dessous) sont en majuscule, que va t il se passer?
Je sais que c'est enfantin comme remarque mais ce genre de truc est important à ne pas négliger car en cas de faux résultats, il est rare de se retrouver dans des cas pareils...

Code : Tout sélectionner

If ext$=".bmp" Or ext$=".jpg" Or ext$="jpeg" Or ext$=".png" Or ext$=".tga" Or ext$="tiff"
          Gosub cry         
        EndIf


Hum.. et si ext$=".gif" ???

A part ça bon courage SPH
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Lecteur d'images cryptées

Message par Backup »

anissa a écrit :@SPH

Mise à part l'histoire de FreeMemory(), si les extensions (ci-dessous) sont en majuscule, que va t il se passer?
Je sais que c'est enfantin comme remarque mais ce genre de truc est important à ne pas négliger car en cas de faux résultats, il est rare de se retrouver dans des cas pareils...
je repond a la place de SPH ... :)

certe un simple

Code : Tout sélectionner

If lcase(ext$)=".bmp" Or lcase(ext$)=".jpg" Or lcase(ext$)="jpeg" Or lcase(ext$)=".png" Or lcase(ext$)=".tga" Or lcase(ext$)="tiff"
          Gosub cry         
        EndIf


va regler ce probleme mais ... a ta question :
Hum.. et si ext$=".gif" ???
ben c'est simple la condition if n'est pas verifié .. donc, ... on s'en fout ;)
ça reviens a dire que les Gif ne seront pas pris en compte....
mais concernant la relation de Purebasic avec les Gif (hein..KCC ? ) , ben c'est pas grave
Dernière modification par Backup le jeu. 07/juil./2011 14:13, modifié 1 fois.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Lecteur d'images cryptées

Message par Kwai chang caine »

Dobro a écrit :mais concernant la relation de Purebaic avec les Gif (hein..KCC ? ) , ben c'est pas grave
Et tu trouves ça drole :? :lol:
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Répondre