L'outil sigverif de Windows XP est utile pour identifier les exécutables non signés, mais ne semble pas se prêter à la création de scripts - existe-t-il un équivalent en ligne de commande ?
Réponses
Trop de publicités?J'ai utilisé sysinternals sigcheck.exe :
http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
Sigcheck v1.66 - Version de fichier et visualisateur de signature Copyright (C) 2004-2010 Mark Russinovich Sysinternals - www.sysinternals.com
utilisation : sigcheck [-a][-h][-i][-e][-n][[-s]|[-v]|[-m]][-q][-r][-u][-c catalogue fichier]
-a Afficher les informations sur la version étendue
-c Rechercher la signature dans le fichier catalogue spécifié
-e Scanner uniquement les images exécutables (quelle que soit leur extension)
-h Afficher les hachages de fichiers
-i Afficher le nom du catalogue et les signataires de l'image
-m Dump manifest
-n Afficher uniquement le numéro de version du fichier
-q Silencieux (pas de bannière)
-r Vérifier la révocation d'un certificat
-s Récupérer les sous-répertoires
-u Afficher uniquement les fichiers non signés
-v Sortie Csv
Exemple de sortie :
c : \windows\system32\acledit.dll :
Verified: Signed
Signing date: 19:07 04/13/2008
Publisher: Microsoft Corporation
Description: Access Control List Editor
Product: Microsoft« Windows« Operating System
Version: 5.1.2600.0
File version: 5.1.2600.0 (xpclient.010817-1148)
Rob
Je ne pense pas qu'il existe un équivalent direct en ligne de commande, mais il y a quelques éléments qui pourraient vous en rapprocher.
D'abord, driverquery.exe
a un argument /si
qui vous indiquera le statut signé des pilotes. Il possède également un argument /fo csv
qui transmettra la sortie au format CSV. La partie étrange de l'utilisation de cette commande est que si vous utilisez la commande /si
vous ne pouvez pas obtenir le chemin d'accès complet au fichier du pilote (et si vous utilisez l'argument /v
pour obtenir le chemin complet, vous ne pouvez pas obtenir l'état signé.
Deuxièmement, si vous souhaitez emprunter la voie PowerShell, vous pouvez utiliser la fonction Get-AuthenicodeSignature
cmdlet. Celle-ci est bizarre car vous devez passer un chemin d'accès au pilote dans la cmdlet, ce qui vous oblige à créer vous-même la liste des pilotes. Vous pouvez cependant l'obtenir à partir de WMI, donc quelque chose comme ça peut répondre à vos besoins :
Get-WmiObject -class win32_systemdriver | foreach-object { get-authenticodesignature $_.pathname }