我想知道是否有一个命令可以列出可以在.exe属性的“数字签名”部分找到的信息。特别是我希望能够抓住签名者的名字。是否有一个命令可以为我生成这些信息?
答案 0 :(得分:2)
要从用于创建Authenticode签名的签名者证书中获取主题名称,您可以使用Get-AuthenticodeSignature
:
PS > $asig = Get-AuthenticodeSignature 'C:\Windows\System32\xcopy.exe'
PS > $asig.SignerCertificate.Subject
CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
您可能对公共名称(CN)感兴趣,也可能对组织名称(O)感兴趣。您可以将主题中的专有名称解析为其组件以获取通用名称:
PS > $asig = Get-AuthenticodeSignature 'C:\Windows\System32\xcopy.exe'
PS > $dnDict = ($asig.SignerCertificate.Subject -split ', ') |
foreach `
{ $dnDict = @{} } `
{ $item = $_.Split('='); $dnDict[$item[0]] = $item[1] } `
{ $dnDict }
PS > $dnDict['CN']
Microsoft Windows
PS > $dnDict['O']
Microsoft Corporation
答案 1 :(得分:1)
微软Windows Sysinternals的Sigcheck tool可以将信息转储出去。使用-c
命令行选项以csv格式格式化输出,可以将其传送到文件以供以后处理。
Sigcheck是一个命令行实用程序,可显示文件版本号,时间戳信息和数字签名详细信息,包括证书链。
答案 2 :(得分:0)
尝试signtool.exe
。使用以下关于signtool的参考,
https://msdn.microsoft.com/en-us/library/windows/desktop/aa387764(v=vs.85).aspx