[Ex] Hash compare

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

[Ex] Hash compare

#1

Message par matwachich »

Voila un petit script que j'ai fait à cause d'une gravure qui a planté lors de la vérification. Je me suis retrouvé avec un DVD gravé à 100% mais dont la fiabilité n'était pas sure, et comme les données était sensibles et que je devait les supprimer de mon PC pour libérer de l'espace, j'ai fait ce petit truc tout simple qui compare les Hash de 2 fichiers:

Il suffit de faire glisser les 2 fichiers à comparer sur la fenêtre et la vérification se lance, un appui sur Escape réinitialise la liste des 2 fichiers à comparer si on en a fait glisser qu'un et qu'on se rend compte que c'est pas le bon.

PS: juste une question: j'ai utilisé $CALG_MD2 comme algorithme de hachage, est que c'est le plus rapide?
Fichiers joints
Hash.au3
(1.91 Kio) Téléchargé 296 fois
Colin117
Niveau 5
Niveau 5
Messages : 114
Enregistré le : jeu. 18 nov. 2010 17:57
Localisation : Vers là bas !
Status : Hors ligne

Re: [Ex] Hash compare

#2

Message par Colin117 »

Le problème c'est: est-ce que cela va marcher avec tout les hash ? enfin ça marche qu'avec les ISO le md2 non ?
► Afficher le texte
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Ex] Hash compare

#3

Message par jchd »

Ce n'est surtout pas pour dévaloriser ni minimiser la valeur de ton développement, mais je signale au passage un petit logiciel bien pratique et open source à celles et ceux qui ne le connaîtraient pas encore. Il doit être automatisable par Autoit sans problème, si besoin.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [Ex] Hash compare

#4

Message par matwachich »

Je savait qu'il devait exister déjà des logiciels qui font la même chose, mais je voulait un truc HYPER simple pour comparer les fichiers gravés à ceux sur le disque dur, pour être sure qu'il sont bien gravés et que je pouvait les supprimer.
Karen's Hasher est plus complet certes, mais il demande beaucoup plus de cliques pour comparer 2 fichiers que mon petit script.
Et puis je n'ai pas télécharger Karen's mais je ne vois (sur le screen du site) aucune commande pour COMPARER 2 fichiers, seulement pour hacher des fichiers, après je pense qu'il faut les comparer à la main (à l'oeil plutôt! :P ).

@Colin: On peut hacher n'importe quel fichier avec n'importe quel algorithme.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Ex] Hash compare

#5

Message par timmalos »

J'ai fais quelque tests avec une fonction _sha1 de bas niveau et les resultats sont sans appel:

Pour un fichier de 19 Megas:
C:\Users\tim\Desktop\Usb suite\UDFs\WinAPIEx.au3
> File 1 set.
C:\Users\tim\Desktop\Usb suite\UDFs\WinAPIEx.au3
> File 2 set.
> Starting...
> Hashing File 1...
> Done! (0x534013C96C22B4A29847FC331613152A) in (ms) :5563.91603357579
> Done! (bddb55a52c8529a82f0f5eff74e578551478db2b) in (ms) :12.9753955895685
> Hashing File 2...
> Done! (0x534013C96C22B4A29847FC331613152A) in (ms) :5539.42662850478
> Done! (bddb55a52c8529a82f0f5eff74e578551478db2b) in (ms) :12.9835758871773
> Hash OK!
> =============================================
La 2eme ligne est du sha1 et les resultats sont 463 fois plus rapides avec ma fonction ;)
Je vais d'ailleurs la mettre ci-dessous après t'avoir donné l'eau à la bouche:
► Afficher le texte
Attention, je n'ai pas dis que Sha1 était plus rapide que MD2, cela dépend de leur implementation uniquement, et ici on utilise une dll de bas niveau ce qui explique la différence enorme de temps ;)
Si tu arrives à trouver l'OpCode de MD2 tu pourras comparer avec le meme algorithme la difference de temps devrait être equitable.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Ex] Hash compare

#6

Message par Tlem »

Bien, puisque tout le monde s'y met ... :roll:

Alors moi je propose deux choix :

1 - L'utilisation du programme en ligne de commande : MD5.exe
2 - L'utilisation d'un script en 'pure AutoIt'.

Sur le matériel dont je dispose (C2D 1.66 Ghz et disque SSD), la création du hash MD5 d'un fichier de 299 Mo a été généré en :
  • 1 - Avec MD5.exe en 2134 ms
    2 - Pure AutoIt en 5222 ms
Je met en fichier joint les éléments utilisés (en dehors du fichier de 300Mo :roll: )
Le programme MD5.exe est disponible ici : http://www.fourmilab.ch/md5/
Et la fonction MD5.au3 provient de ce message : http://www.autoitscript.com/forum/topic ... e__hl__md5
Vous y trouverez d'ailleurs d'autres type de contrôle. ;)

Voilà, il reste plus qu'à faire son choix.
Fichiers joints
Exemple.zip
(26.34 Kio) Téléchargé 230 fois
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2282
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [Ex] Hash compare

#7

Message par jchd »

Attention, je n'ai pas dis que Sha1 était plus rapide que MD2, cela dépend de leur implementation uniquement, et ici on utilise une dll de bas niveau ce qui explique la différence enorme de temps ;)
Si tu arrives à trouver l'OpCode de MD2 tu pourras comparer avec le meme algorithme la difference de temps devrait être equitable.
Attention à ce mode de comparaison : le premier run sur un fichier risque bien de fonctionner en lisant depuis le disque, alors que le second est garanti de ne lire que le cache Windows et/ou buffer disque. Plutôt que s'embêter à vider les caches (ce qui n'est pas trivial) il faut lancer deux runs de suite sur le même fichier avec un même algo et ne chronométrer que le second run.

Sur des fichiers plus gros que les caches (dont on ne connaît pas toujours la taille avec précision et encore moins la méthode d'emploi), il faut même parfois lancer 3, 4 ou plus de fois le même job pour voir les temps se stabiliser à un minimum.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [Ex] Hash compare

#8

Message par timmalos »

En effet, je ne l'ai pas precisé mais c'est bien sur le 2ème essai que j'ai calculé les temps. Je n'ai pas le code sous la main n'etant pas sur ma machine, mais je le deposerai si quelqu'un le veux.
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2104
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [Ex] Hash compare

#9

Message par TommyDDR »

Histoire de mettre mon grain de sel ^^, vous pouvez réduire votre fonction "_out" à une seul ligne :

Code : Tout sélectionner

Func _out($data)
    GUICtrlSetData($out, "> " & $data & @CRLF, 1)
EndFunc
Le paramètre "1", signifie : "Ajoute à la fin de l'ancien".
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Répondre