命令从.exe获取签名者的名称

时间:2015-09-25 19:59:35

标签: windows powershell cmd digital-signature

我想知道是否有一个命令可以列出可以在.exe属性的“数字签名”部分找到的信息。特别是我希望能够抓住签名者的名字。是否有一个命令可以为我生成这些信息?

3 个答案:

答案 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