Как извлечь алгоритм дайджеста из подписанных DLL с помощью PowerShell? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть файл DLL с цифровой подписью. Мне нужно написать команду PowerShell, которая могла бы дать мне алгоритм дайджеста, который используется для цифровой подписи.

Информация об алгоритме дайджеста, которая мне нужна:

DigestAlgorithm Info what I need to extract

Я пытался с Get-AuthenticodeSignature, но это не дало мне информацию об алгоритме дайджеста.

После выполнения следующей команды я получаю следующий результат.

Get-AuthenticodeSignature "C:\Program Files\Application Verifier\vrfauto.dll" | Format-List

Результаты выше: Result of execution

1 Ответ

0 голосов
/ 30 мая 2019

Итак, что вы ищете:

Get-AuthenticodeSignature | %{
    $_.SignerCertificate.SignatureAlgorithm.FriendlyName
}

Давайте рассмотрим, как мы туда попали.Сначала я нахожу файл с цифровой подписью.Я буду использовать PowerShell-6.1.2-win-x64.msi для этого примера.

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | get-member

Мы видим, что есть объект для SignerCertificate

SignerCertificate      Property   System.Security.Cryptography.X509Certificates.X509Certificate2 SignerCertificate {get;}

Итак, давайте посмотрим, что это содержит

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | %{
    $_.SignerCertificate | get-member
}

Теперь мы видим, что SignatureAlgorithm свойство

SignatureAlgorithm              Property       System.Security.Cryptography.Oid SignatureAlgorithm {get;}

Теперь мы копаем еще одинdeep

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | %{
    $_.SignerCertificate.SignatureAlgorithm | get-member
}

Мы получаем:

FriendlyName Property   string FriendlyName {get;set;}
Value        Property   string Value {get;set;}

Мы можем видеть там обе строки, поэтому мы проверяем, что лучше для нас ... получается его дружественное имя:

Get-AuthenticodeSignature -FilePath C:\test\PowerShell-6.1.2-win-x64.msi | %{
    $_.SignerCertificate.SignatureAlgorithm.FriendlyName
}

Возвращает

sha256RSA
...