Checksum, vérifier l'intégrité d'un fichier vbs [VBScript] [RESOLU] - VB/VBA/VBS - Programmation
Marsh Posté le 14-02-2006 à 14:33:47
Et tu veux le tester via un autre fichier VBS... que tu devras aussi contrôler ?
Marsh Posté le 14-02-2006 à 15:18:56
non, l'autre fichier vbs sera en lecture seule.
enfin je ne sais pas trop comment m'y prendre mais c'est un script qui sera lancé en tant qu'admin, donc je dois etre sur qu'il n'aura pas été modifié avant. je prefere la solution la + simple.
j'avais commencé a comparer la taille du fichier par rapport a un autre fichier (le meme mais copié ailleurs) mais c'est pas suffisemment sécurisé.
Marsh Posté le 14-02-2006 à 16:47:22
Voici le code permettant de faire un CRC32 sur une chaine (y compris un fichier pas trop volumineux)
' déclaration |
Je n'ai pas vérifié en détails si toutes les déclarations sont là
Si tu recontres un problème, n'hésite pas à demander
Il n'empêche, il va te falloir stocker ton CRC32 quelquepart pour procéder à une vérification ultérieure. Ou alors ton prog en lecture seule contiendra en dur le CRC32 qu'il doit trouver
Marsh Posté le 15-02-2006 à 10:59:39
je pense que je mettrais en dur le crc, enfin ça dépend de comment ça marche exactement, la je n'ai pas réussi, il bloque dès la 1ere ligne, a cause de "as long".
Marsh Posté le 15-02-2006 à 11:43:09
La première ligne doit aller dans la partie Déclaration de ton module.
Si tu copies/colles tout ça à la suite au milieu de tes fonctions, c'est sûr que ça peut faire la gueule
Marsh Posté le 15-02-2006 à 14:38:25
je pense que je comprendrais mieux avec un exemple.
j'avoue ne pas savoir comment l'integrer.
je te donne le code d'un des petits scripts sur lequel je voudrais par exemple tester le crc.
(c'est le code pour ecrire dans un fichier qu'on m'a donné justement sur ce forum)
Const forAppending = 8, forwriting = 2
Const ModeAscii = 0, ModeUnicode = -1
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set fso = CreateObject("Scripting.FileSystemObject" )
'On Error Resume Next
datejour = Date
datejour = Replace(datejour,"/", "-" )
' fichierLOG = "d:\Scripts\_FINI\ISA\ErreurEnvoiMail.Log"
fichierLOG = "writedate1ascii.Log"
If Not objFSO.FileExists(fichierLOG) Then
Set File = fso.CreateTextFile(fichierLOG, forWriting, ModeAscii)
File.WriteLine "Le rapport du " & datejour & " n'a pu être envoyé."
File.Close
Else
set File = fso.OpenTextFile(fichierLOG, forAppending, True, ModeAscii)
file.WriteLine "Le rapport du " & datejour & " n'a pu être envoyé."
file.Close
End If
Marsh Posté le 16-02-2006 à 09:43:05
Attends, si je te précise que mon code est du VB6 et pas du VBS, peut-être que ça t'aidera. Il y a peut-être des conversions à faire pour les types. Je suis pas spécialiste VBS.
L'objectif est de lire le contenu d'un fichier et de placer ce contenu dans une variable de type chaine. Tu passes cette variable en paramètre de la fonction CRC32 et le tour est joué.
Marsh Posté le 16-02-2006 à 11:00:13
d'accord, je vois la marche a suivre, mais je ne vois pas comment convertir tout ça, c'est le seul probleme qui reste.
je te remercie quand même pour ton code, je vais voir ce que je peux faire
Marsh Posté le 16-02-2006 à 16:21:53
anthony0000 a écrit : Bonjour, |
Salut!
Tu va peut être me trouver nul mais bon tanpis : c'est quoi exactement un checksum et quand tu parles de version verollée, qu'est ce que tu veux dire exactement?et encore un petit soucis : CRC32 qu'est ce que c'est ?
Merci d'avance
Marsh Posté le 17-02-2006 à 09:49:34
je voudrais vérifier que le fichier vbs que je vais lancer n'a pas été modifié (si c'est le cas ça pourrait faire bcp de mal), donc je veux tester son intégrité, mais je ne sais pas trop comment ça marche.
pour moi, j'ai un fichier de base qui ne peut pas etre modifié, sauf par un admin, de l'autre coté, j'ai le vbs qui s'execute (qui ne s'execute donc pas en admin du domaine) qui vas lire les info sur mon 1er fichier qu'il ne peut pas modifier (donc le checksum reste le vrai) et si c'est bon, execute la suite du script (qui le connect ensuite en admin et effectue diverse operations)
a l'origine du probleme : supprimer un fichier en local, j'utilise la bibliotheque WMI mais meme avec l'admin local il a besoin de se connecter je sais pas ou et pourquoi (par rapport a wmi) et seul un admin du domaine peut executer ce script correctement.
j'ai encore peu de connaissance en wmi et je ne comprend pas vraiment comment ça marche.
Marsh Posté le 17-02-2006 à 10:46:03
tu peux utiliser la signature de script, voici un lien avec quelques exemples pour t'aider sur le sujet :
http://www.activexperts.com/activm [...] /security/
Marsh Posté le 17-02-2006 à 10:53:57
merci encore pour ta réponse ,
j'ai compris comment ça peut fonctionner, mais la où je bloque c'est au niveau des certificats:
"Requires a valid digital certificate."
le pb, c'est que j'ai aucune idée de comment utiliser de certicats avec des scripts
Marsh Posté le 17-02-2006 à 13:18:00
Pour Sboubinette62, quelques explications sur le CRC (32 parce que l'implémentation proposée renvoit une valeur sur 32 bits) :
http://fr.wikipedia.org/wiki/Contr [...] e_cyclique
Marsh Posté le 17-02-2006 à 14:28:27
je vais faire de la mauvaise pub de bas étage, mais j'ai fait tout un chapitre dans mon bouquin sur la gestion des certificats avec des vbs
pour être plus productif et constructif, il faudrait que je reregarde ça pour te donner la réponse, je n'ai plus en tête la méthode exacte.
Marsh Posté le 20-02-2006 à 12:59:58
j'ai encore une petite question :
je ne vois toujours pas comment utiliser ce script si je veux faire un checksum sur un vbs.
est que je dois intégrer ce code dans mon script ?
est ce que dans le code je peux indiquer le fichier a "checker" ?
Marsh Posté le 14-02-2006 à 13:02:06
Bonjour,
je voudrais être capable de tester un fichier vbs avant de l'éxécuter grace a un checksum, pour voir s'il n'a pas été modifié et que je n'éxécute pas une version vérollée.
merci d'avance !
j'ai trouvé un petit utilitaire
md5sums.exe
Message édité par anthony0000 le 21-02-2006 à 12:56:52