Windows XP sigverif 工具对于识别未签名的可执行文件很有用,但似乎不适合编写脚本——是否有等效的命令行?
答案1
我不认为有直接的命令行等效物,但有几件事可以让你接近。
首先,driverquery.exe
有一个参数/si
会告诉您驱动程序的签名状态。它还有一个参数/fo csv
会将输出转储到 CSV。使用此命令的奇怪之处在于,如果您使用该/si
参数,则无法获取驱动程序文件的完整路径(如果您使用该/v
选项获取完整路径,则无法获取签名状态)。
其次,如果您想使用 PowerShell 路径,则可以使用 cmdlet Get-AuthenicodeSignature
。这个很奇怪,因为您必须将驱动程序路径传递到 cmdlet 中,因此您需要自己构建驱动程序列表。不过,您可以从 WMI 中获取它,因此类似这样的命令可能适合您的需求:
Get-WmiObject -class win32_systemdriver | foreach-object { get-authenticodesignature $_.pathname }
答案2
我使用了 sysinternals sigcheck.exe:
http://technet.microsoft.com/en-us/sysinternals/bb897441.aspx
Sigcheck v1.66 - 文件版本和签名查看器版权所有 (C) 2004-2010 Mark Russinovich Sysinternals - www.sysinternals.com
用法:sigcheck [-a][-h][-i][-e][-n][[-s]|[-v]|[-m]][-q][-r][-u][-c 目录文件]
-a 显示扩展版本信息
-c 在指定的目录文件中查找签名
-e 仅扫描可执行映像(无论其扩展名是什么)
-h 显示文件哈希值
-i 显示目录名称和图像签名者
-m 转储清单
-n 仅显示文件版本号
-q 安静(无横幅)
-r 检查证书是否撤销
-s 递归子目录
-u 仅显示未签名的文件
-v Csv 输出
示例输出:
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)
抢
答案3
我自己还没有尝试过,但我相信 signtool 有一个命令行选项来验证签名。