FileFingerprint avec grain de sel
FileFingerprint avec grain de sel
Bonsoir
Quand on hash une string en md5, on rajoute un grain de sel pour difficiliser le decryptage, est-il possible de faire cela aussi avec FileFingerprint ?
Merci
Quand on hash une string en md5, on rajoute un grain de sel pour difficiliser le decryptage, est-il possible de faire cela aussi avec FileFingerprint ?
Merci
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: FileFingerprint avec grain de sel
Si tu peux le faire avec FingerPrint, c'est que tu peux le faire avec FileFingerPrint.
Re: FileFingerprint avec grain de sel
Il n'y a pas de 'grain de sel' pour le md5
Re: FileFingerprint avec grain de sel
Il y a une autre solution ?
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: FileFingerprint avec grain de sel
Je pense qu'il entend par là remplacer un des caractères ou ajouter un caractère à la fin ou au debut du hash, voir "reverser" le hash etc...Fred a écrit :Il n'y a pas de 'grain de sel' pour le md5
~~~~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
Re: FileFingerprint avec grain de sel
Enfait mon programme écrit des infos dans un fichier et je crains que quelqu'un le modifie manuellement.
Donc je prends un fingerprint du fichier que je stocke dans le registre, et quand je veux lire le fichier je compare d'abord sa signature avec celle qui est inscrite dans le registre.
Mais quelqu'un peut toujours changer le fichier, puis prendre un fiingerprint et l'écrire dans le registre et je n'y verrai que du feu
Donc je prends un fingerprint du fichier que je stocke dans le registre, et quand je veux lire le fichier je compare d'abord sa signature avec celle qui est inscrite dans le registre.
Mais quelqu'un peut toujours changer le fichier, puis prendre un fiingerprint et l'écrire dans le registre et je n'y verrai que du feu
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: FileFingerprint avec grain de sel
Si tu as la parano de la modification, autant inscrire toutes tes infos dans le registre.
Tu as aussi la possibilité de faire un fichier complètement illisible... Une image !
En utilisant la steganographie tu es tranquille et tu n'as rien besoin d’écrire dans le registre.
J'ai créé Ascii2Pixel utilisant cette méthode.
- Tu crées une image vierge
- Tu crées un tableau 2 dimensions (x et y)
- Tu enregistres 4 caractères par pixel. R=asc(car1) G=asc(car2) B=asc(car3) A=asc(car4)
- Tu dessines ton pixel en x et y via Plot(X, Y , RGBA(R,G,B,A))
- Tu passes au pixel suivant.
Soit tu le fais tout les 3 caractères en RGB soit tous les 4 car en RGBA. Dans les 2 cas il faut utiliser le PNG.
Evidement tu sauves ton image en fichier renommé genre pref.dll
Franchement avec ça tu as un fichier pref sûr et de petite taille. Sachant qu'une image RGBA de 50x50 permet de stocker 10000 caractères, je te laisse entrevoir les possibilités.
Pour décoder tu faits l'inverse. Tu lis pixel par pixel et tu décomposes chaque pixel via Chr(R),Chr(G),Chr(B),Chr(A).
Et si tu es vicelard tu peux aussi mettre un grain de sel dans ton encodage/decodage.
Tu as aussi la possibilité de faire un fichier complètement illisible... Une image !
En utilisant la steganographie tu es tranquille et tu n'as rien besoin d’écrire dans le registre.
J'ai créé Ascii2Pixel utilisant cette méthode.
- Tu crées une image vierge
- Tu crées un tableau 2 dimensions (x et y)
- Tu enregistres 4 caractères par pixel. R=asc(car1) G=asc(car2) B=asc(car3) A=asc(car4)
- Tu dessines ton pixel en x et y via Plot(X, Y , RGBA(R,G,B,A))
- Tu passes au pixel suivant.
Soit tu le fais tout les 3 caractères en RGB soit tous les 4 car en RGBA. Dans les 2 cas il faut utiliser le PNG.
Evidement tu sauves ton image en fichier renommé genre pref.dll
Franchement avec ça tu as un fichier pref sûr et de petite taille. Sachant qu'une image RGBA de 50x50 permet de stocker 10000 caractères, je te laisse entrevoir les possibilités.
Pour décoder tu faits l'inverse. Tu lis pixel par pixel et tu décomposes chaque pixel via Chr(R),Chr(G),Chr(B),Chr(A).
Et si tu es vicelard tu peux aussi mettre un grain de sel dans ton encodage/decodage.
~~~~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
Re: FileFingerprint avec grain de sel
Effectivement c'est une bien meilleur idée que ce que je fais, mais je suis malheureusement pas au niveau pour faire une prouesse pareille.
Windows 10 x64 -- Purebasic 5.70 LTS x86
Re: FileFingerprint avec grain de sel
Merci d'afficher les greetings si tu t'en sert.
Depuis je ne fais plus comme ça et suis passé à du tableau plutôt que de la liste mais il fonctionne même si le code est bordeleux.
ça te donnera la méthode de fonctionnement.
Essaye avec un petit ficher txt pour commencer.
Depuis je ne fais plus comme ça et suis passé à du tableau plutôt que de la liste mais il fonctionne même si le code est bordeleux.
ça te donnera la méthode de fonctionnement.
Essaye avec un petit ficher txt pour commencer.
Code : Tout sélectionner
; Ar-S ASCII 2 PIXEL
; code de 2008 fonctionne V PB 5.60 x64 OK
; Routines de conversion réalisées avec l'aide de Dobro & LNA
UsePNGImageDecoder()
UsePNGImageEncoder()
Declare.i car_pixel(car1,car2,car3,car4)
Declare.s pixel_4car(pixel)
Enumeration
#WIN
#BT_T2I
#BT_I2T
#Fichier
#Image
#BT_X
EndEnumeration
Global NewList Liste()
Procedure.i car_pixel(car1,car2,car3,car4)
pixel=RGBA(car1,car2,car3,car4)
ProcedureReturn pixel
EndProcedure
Procedure.s pixel_4car(pixel)
R=Red(pixel)
g=Green(pixel)
b=Blue(pixel)
a=Alpha(pixel)
car$=Chr(R)+Chr(g)+Chr(b)+Chr(a)
ProcedureReturn car$
EndProcedure
Procedure OpenWindow_WIN()
If OpenWindow(#WIN, 330, 155, 640, 150, "ASCII2PIXEL Lite", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#BT_T2I, 20, 40, 300, 45, "TXT en IMAGE", #BS_FLAT)
ButtonGadget(#BT_I2T, 325, 40, 300, 45, "IMAGE en TXT",#BS_FLAT)
ButtonGadget(#BT_X, 20,90,600,45,"QUITTER",#BS_FLAT)
EndIf
EndProcedure
OpenWindow_WIN()
;{- Event loop
Repeat
Select WaitWindowEvent(10)
Case #PB_Event_Gadget
Select EventGadget()
Case #BT_X
End
Case #BT_T2I
; TXT 2 IMG
NomFichier$ = OpenFileRequester("Fichier texte à encoder",GetCurrentDirectory(),"*.*",0)
If NomFichier$
OpenFile(#Fichier, NomFichier$)
nbc=0 ;nbp=1
ClearList(Liste())
Position=0
tf$=Str(Lof(#Fichier)) ; taille du fichier
tf$=RSet(tf$,16,"0") ; ajout de "0" à gauche 16 chiffre
AddElement(Liste()) ; formatage de la taille en pixel 2x4
Liste()=car_pixel(Asc(Mid(tf$,1,1)),Asc(Mid(tf$,2,1)),Asc(Mid(tf$,3,1)),Asc(Mid(tf$,4,1)))
AddElement(Liste())
Liste()=car_pixel(Asc(Mid(tf$,5,1)),Asc(Mid(tf$,6,1)),Asc(Mid(tf$,7,1)),Asc(Mid(tf$,8,1)))
AddElement(Liste())
Liste()=car_pixel(Asc(Mid(tf$,9,1)),Asc(Mid(tf$,10,1)),Asc(Mid(tf$,11,1)),Asc(Mid(tf$,12,1)))
AddElement(Liste())
Liste()=car_pixel(Asc(Mid(tf$,13,1)),Asc(Mid(tf$,14,1)),Asc(Mid(tf$,15,1)),Asc(Mid(tf$,16,1)))
AddElement(Liste())
Liste()=car_pixel(91,60,35,93) ; [<#] balise
nbc+20
CloseFile(#Fichier)
OpenFile(#Fichier, NomFichier$)
While Eof(#Fichier)=0
car1.c=0
car2.c=0
car3.c=0
car4.c=0
If ReadData(#Fichier,@car1,1)
nbc+1
If ReadData(#Fichier,@car2,1)
nbc+1
If ReadData(#Fichier,@car3,1)
nbc+1
If ReadData(#Fichier,@car4,1)
nbc+1
EndIf
EndIf
EndIf
EndIf
nbp+1
pixel= car_pixel(car1,car2,car3,car4)
AddElement(Liste())
Liste()=pixel
Wend
;Debug "Il y a "+Str(nbc)+" caracteres"
CloseFile(#Fichier)
;-{ 1ere tentative de gestion de la taille des images.
If nbc<32000
Xpic=160 : Ypic = 50
ElseIf nbc>31999 And nbc<64000
Xpic=320 : Ypic=50
ElseIf nbc>63999 And nbc<192000
Xpic=320 : Ypic = 150
ElseIf nbc=191999 And nbc<1024000
Xpic=640 : Ypic = 400
ElseIf nbc>1023999 And nbc<1920000
Xpic=800 : Ypic = 600
ElseIf nbc>1919999 And nbc<3145728
Xpic=1024 : Ypic = 768
ElseIf nbc=3145727 Or nbc<5242880
Xpic=1280 : Ypic = 1024
ElseIf nbc>5242880
MessageRequester("Alert","TROP DE CARACTERES")
Break
EndIf
;creation de l'image
CreateImage(#Image,Xpic,Ypic,32)
StartDrawing(ImageOutput(#Image))
ResetList(Liste())
For Y=1 To Ypic-1
For x=1 To Xpic-1
compteur=compteur+1
NextElement(Liste())
pixel=Liste()
DrawingMode(#PB_2DDrawing_Default)
Plot(x,Y,pixel)
DrawingMode(#PB_2DDrawing_AlphaChannel)
Plot(x,Y,pixel)
If compteur=nbp+5 ; ajout 5 rangs au compteur pour taille et balise
compteur=0
Break 2
EndIf
Next x
Next Y
StopDrawing()
;- Sauvegarde
Delay(500)
NomFichier$ = SaveFileRequester("Enregistrer image", GetCurrentDirectory(), "*.png", 0)
If NomFichier$
ext$=LCase(GetExtensionPart(NomFichier$))
If ext$<>"png" : NomFichier$=NomFichier$+".png"
EndIf
Resultat = SaveImage(#Image, NomFichier$ , #PB_ImagePlugin_PNG)
MessageRequester("terminé","Terminé")
Else
;SetGadgetText(#AFFICHE,Cancel$) ;-annul
Debug "Annulé"
EndIf
Else
;SetGadgetText(#AFFICHE,Cancel$) ;-annul
Debug "Annulé"
EndIf
;- BT 2 - IMAGE en TXT -----------------------
Case #BT_I2T
filtre$=filtre2$
filtre=0
; GetPrefDir(pref$,#PNG)
NomFichier$ = OpenFileRequester(Loadpng$, Defaut$, filtre$, 0)
Texte$="":car_4$="":pixel=0:compteur=0
Resultat = LoadImage(#Image, NomFichier$,32)
If OpenFile(#Fichier, NomFichier$)
nbff=1
StartDrawing(ImageOutput(#Image))
For Y=1 To ImageHeight(#Image)-1
For x=1 To ImageWidth(#Image)-1
nbf=nbf+1
pixel=Point(x,Y)
If pixel>0
DrawingMode(#PB_2DDrawing_Default)
car_4$ = Chr(Red(pixel)) + Chr(Green(pixel)) + Chr(Blue(pixel))
;Debug "sans Alpha : "+car_4$
DrawingMode(#PB_2DDrawing_AlphaChannel)
;car_4$ + Chr(Alpha(pixel))
car_4$ + Chr(Alpha(Point(x,Y)))
;Debug "avec Alpha : "+car_4$
EndIf
Texte$+car_4$
If Left(car_4$,4)="[<#]" ; recherche balise taille
debutf=Len(Texte$) ; nb caracteres (taille et la balise) en principe 15 (3x4) 16 avec le zero
tf=Val(Right(Texte$,16))+debutf+1 ;(+1=16) ; recupere la taille du fichier et ajoute de 3 rangs de 4 pour synchro compteur
Texte$="" ; enlève les infos taille du texte après lecture
EndIf
If nbf=(tf+1)/4:Break 2:EndIf ; tf+1 car la taille du fichier a le zero inclu
Next x
Next Y
StopDrawing()
FreeImage(#Image)
; SetLastDir(NomFichier$,#PNG)
;- AFFICHAGE
Debug Texte$
MessageRequester("terminé","Terminé")
Else
Debug "Annulé"
EndIf
EndSelect
EndSelect
ForEver
~~~~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