Batch obtenir le md5 d'un fichier ? [Résolu/Fermé]

Messages postés
36
Date d'inscription
lundi 5 décembre 2011
Statut
Membre
Dernière intervention
22 mai 2015
- - Dernière réponse :  vincsilver - 13 avril 2012 à 11:16
Bonjour,

Est-il possible d'afficher le md5 d'un fichier en batch ?

L'objectif est de lancer l'installation d'une application (ex: setup.exe) appelé par un petit script batch à condition que son md5 soit identique à celui que j'aurai renseigné au préalable.

Peut être avec des "if" ?

Merci par avance de vos réponse.
Vincent

Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
314
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
8 juin 2016
107
1
Merci
Bonjour,

Télécharger le Md5.exe et créer un batch type CMD et mettez le code suivant:

Je l'ai testé avec une bonne signature et une mauvaise et cela est bien détecté.

*************************************


@Echo off

rem Définir dans la variable "md5_value" la signature-md5 du fichier en question rem (sur 32 caractères et en majuscules)
rem Exemple: set md5_value=120B7D0C4A6281F874C9547665A2E5F4

Set md5_value=120B7D0C4A6281F874C9547665A2E5F4


:Process
Md5.exe -c%md5_value% -l %1

If %errorlevel%==1 goto :Erreur


Echo Lancement de l'application....
rem continuer ici le processus car la signature est correcte...... ex: Setup.exe


Goto :FIN




:Erreur
Cls
Echo.
Echo Erreur...!! la signature "%md5_value%" ne correspond pas
Echo pour le fichier : %1
Echo.
Goto :FIN


:FIN
Set md5_value=

****************************************

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63267 internautes nous ont dit merci ce mois-ci

vincsilver
Messages postés
36
Date d'inscription
lundi 5 décembre 2011
Statut
Membre
Dernière intervention
22 mai 2015
20 -
Merci pour ces informations complémentaires.
Pas de problème, ton script fonctionne bien. Je ne connaissais pas l'option "-c" de md5.exe.

Par contre j'ai remarqué que si le md5 était erroné. Du genre, codé sur 33 caractères au lieu de 32, le setup se lance quand même.
Voici le message d'erreur:
"Error in signature specification. Must be 32 hex digits."

Bon après il est vrai que je ne sais pas s'il est possible d'avoir un setup.exe avec un md5 de 33 caractères...

PS : dans ton script, à la ligne : "If %errorlevel%==1 goto :Erreur"
--> il ne faut pas mettre le ":" devant Erreur

Cdlt,
Vincent
dg_belmontet
Messages postés
314
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
8 juin 2016
107 -
Bonjour,

Pour te faire plaisir voici la dernière mouture qui prend en compte le traitement d'une signature ne comportant pas 32 caractères ou n'étant pas définie en Hexa. Pour ton info, la signature d'un fichier sera toujours de 32 caractères quelque soit le fichier ou sa taille (bien sûr si calculée avec l'outil MD5). Par exemple si on retrouve une lettre autre que de A à F, MD5 considère qu'il manque 1 caractère et cela sera détecté. A fortiori s'il n'y a que 30 caractères cela sera aussi détecté.

Voici un exemple qui fonctionne "nickel" (à la virgule près...). En fait j'ai renseigné une signature d'un film AVI et si elle est correcte dans le process, le film se lance automatiquement.

J'ai ajouté une Pause dans le traitement des erreurs en cas de lancement direct du batch par l'explorateur Windows et sans passer par une boîte DOS sinon on ne voit pas l'erreur...)..


***************************************************
@Echo off

rem Définir dans la variable "md5_value" la signature-md5 du fichier en question
rem (sur 32 caractères et en majuscules de préférence)
rem Exemple: set md5_value=120B7D0C4A6281F874C9547665A2E5F4

Set md5_value=120B7D0C4A6281F874C9547665A2E5F4


Rem Définir le chemin et le nom du fichier à analyser
Rem ci-dessous un exemple à modifier en fonction des besoins

Set file_md5=c:\Users\Dom\downloads\ayur.avi


:Process
Md5.exe -c%md5_value% -l %file_md5%

If %errorlevel%==2 goto :Erreur2
If %errorlevel%==1 goto :Erreur1


Echo Lancement de l'application....
rem continuer ici le processus car la signature est correcte...... ex: Setup.exe
rem on pourra mettre par exemple :

%file_md5%


Goto :FIN


:Erreur2
Cls
Echo.
Echo Erreur...!! la signature mise dans la variable "md5_value"
Echo ne comporte pas 32 caracteres ou n'est pas en Hexadecimal
Echo (uniquement avec des 0-9 et des A-F).
Echo ** Contenu de la variable : %md5_value%
Echo.
Pause
Goto :FIN


:Erreur1
Cls
Echo.
Echo Erreur...!! la signature "%md5_value%" ne correspond pas
Echo pour le fichier : %file_md5%
Echo.
Pause
Goto :FIN


:FIN *-*-*- On quitte et on remet à 0 les 2 variables
Set md5_value=
Set file_md5=



********************************************************

Quant aux : devant une étiquette de Goto cela doit fonctionner (mais effectivement ce n'est pas obligatoire dans le code).

Ex. qui doit fonctionner:

If ............. Goto :Erreur
.........
.........


:Erreur

*******************************

Mais ci-dessous, c'est aussi valable

If ............. Goto Erreur
.........
.........


:Erreur

************************************

Perso, je préfère mettre les : devant car le code est plus lisible.... (question d'appréciation).


Voilà, bon courage pour la suite et n'oublie pas de fermer le sujet.
vincsilver
Messages postés
36
Date d'inscription
lundi 5 décembre 2011
Statut
Membre
Dernière intervention
22 mai 2015
20 -
Sympa ton script. Là il est vraiment complet :)
Un grand merci.
Il ne me reste plus qu'a compiler mon batch en .exe afin d'avoir une exécution invisible.

PS : Étonnement la commande suivante fonctionne lorsqu'elle est entrée manuellement dans une invit de commande :
########################
C:\Windows\System32>set md5=md5.exe -n D:\documents\Vincent\Desktop\launcher\setup.exe

C:\Windows\System32>%md5%
7ABC3D1169204F71F9C9B20A33E6B7EB
########################

Par contre lorsque la même commande est mise dans un script.bat, la valeur de %md5% retourné n'est plus "7ABC3D1169204F71F9C9B20A33E6B7EB" mais :
########################
C:\Windows\System32>%md5%
md5.exe -n D:\documents\Vincent\Desktop\launcher\setup.exe
########################

Peut être un problème de valeur de chaine ? (string, system,etc ?)
dg_belmontet
Messages postés
314
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
8 juin 2016
107 -
J'ai essayé de reproduire ton problème, mais cela fonctionne parfaitement chez moi (à tout hasard j'ai Win7) que ce soit pour les 2 commandes passées en mode "Invite" ou de mettre les 2 mêmes dans un batch. Le résultat affiché en "Standard Output" (donc ma fenêtre DOS) est bien la signature du fichier à analyser. Donc je ne comprends pas trop.....
A ce propos, quant tu crée un batche, il est conseillé de prendre l'extension .CMD plutôt que .BAT car le CMD permet d'avoir plus de fonctionnalités.


Autre chose:

Tu peux récupérer la signature dans un fichier :

ex : md5.exe -n -oResult.txt nomfile.exe

Le résultat de l'analyse (donc la signature) sera mis dans le fichier Result.txt


Et la cerise sur le gâteau :

Saisis dans une boîte DOS: md5.exe -u et là tu auras l'aide de l'outil


Autre chose :
J'ai écrit un Tutoriel (assez conséquent de 45 pages) sur le package "Hien's BootCD" à mettre sur une clé USB (ou un CD).
Cette clé, une fois créée et configurée, permet de booter sur un micro pour essayer de le dépanner et/ou de récupérer des données en cas de panne/bug importante du système d'exploitation. Cette clé devient une vraie trousse de dépannage/secours pour n'importe quel informaticien (de mon point de vue, elle est indipensable). Elle englobe un miniXP, des environnements Linux et plus de 300 outils en tout genre.
J'ai écrit ce Tuto en français car le site qui a créé ce package est étranger (je pense de l'Inde).

Regarde sur ce site : http://www.hiren.info/

et si cela te plait (à moins que tu l'ais déjà mais probablement pas à la dernière version) je veux bien te l'envoyer (cela demande quand même de bonnes connaissances en informatiques (en particulier dans les batch etc...). Si oui, donnes-moi ton email mais dans le processus de message privé (en cliquant sur dg_belmontet etc...), ne mets pas ton adresse en réponse ici.

Cdlt.
vincsilver
Messages postés
36
Date d'inscription
lundi 5 décembre 2011
Statut
Membre
Dernière intervention
22 mai 2015
20 -
Bonjour,

Merci pour la commande "md5.exe -u" j'avais essayé d'obtenir le menu des commandes en entrant"md5.exe /?" mais sans succès.

Je viens d'aller jeté un coup d'oeil sur le site Hiren.info et j'ai lancé le téléchargement du BootCd 15.1 via le lien suivant : http://www.hirensbootcd.org/download/

Il y a pas mal d'application intéressante.

Je vais le tester et s'il me plait peut être qu'il remplacera le UBCD (http://www.ultimatebootcd.com/) que j'utilise actuellement.

Encore une fois, merci de ton aide. Je clos ;)
Messages postés
36
Date d'inscription
lundi 5 décembre 2011
Statut
Membre
Dernière intervention
22 mai 2015
20
0
Merci
Après plusieurs recherche, je ne pense pas que ce soit possible avec seulement le langage batch.
J'ai donc intégré l'outil md5.exe dans mon script.
0
Merci
Bonjour,

Est-il possible d'obtenir le hash d'un texte grâce au Batch ? Je voudrais pouvoir créer le hash du maximum de combinaisons possibles pour créer une très grosse base de donnée...

Merci d'avance
dg_belmontet
Messages postés
314
Date d'inscription
mercredi 30 mars 2011
Statut
Membre
Dernière intervention
8 juin 2016
107 -
Bonsoir,

Je ne pense pas avoir bien compris le sens de votre question, mais pour rappel l'outil "Md5.exe" permet de calculer la signature d'un fichier sous la forme d'une chaîne de 32 caractères en hexadécimal (c'est ce qu'on appelle le calcul de l'intégrité d'un fichier) et ceci quelque soit le type de fichier à analyser par Md5 (que ce soit un exe, un PDF, un DOC, un XLS ou du texte ou tout autre fichier....). Cet outil ne peut fonctionner qu'en mode commandes (donc a fortiori dans un batch). La signature sera toujours de 32 caractères quelque soit la taille du fichier. En revanche, il faut que ce soit un fichier et non pas une chaîne de caractères quipourrait être passée en argument à Md5.
Il est possible que la taille du fichier à analyser soit limité en taille...!!! à vérifier... mais j'ai fait un test avec un fichier d'un giga et cela fonctionne (cela demande quand même quelques secondes avant d'avoir le résultat).


Voilà, je ne sais pas si j'ai fait avancer "la chose".

Cdlt.
Bonjour,

Si ton texte est dans un fichier .txt ou .doc ou .xls, etc.. pas de problème avec md5.exe tu obtiendra une signature md5 (hash) différente a chaque fois que tu changeras le contenu de ton fichier.

Cdlt,
vincent