In Powershell:
Get-AuthenticodeSignature C:\Path\TO\File.exe
Am Beispiel von explorer.exe würde dies Redmond erhalten:
(Get-AuthenticodeSignature C:\Windows\explorer.exe).SignerCertificate.subject.split(',')[2].split('=')[1]
Get-AuthenticodeSignature
Gibt Sie ein Objekt von System.Management.Automation.Signature zurück, da Sie nach Ausarbeitung gefragt haben. Sie können dies auf ein paar Arten herausfinden. Ich persönlich bevorzuge es, es einer Variablen zuzuweisen, damit ich mit dem zurückgegebenen Objekt weiter spielen kann. Sobald Sie es einer Variablen zugewiesen haben, können Sie etwas darüber lernen. Get-Member
sollte einer Ihrer Favoriten zu Cmdlets in Powershell sein. In diesem Fall:
$foo = Get-AuthenticodeSignature C:\Windows\explorer.exe Get-Member -InputObject $foo TypeName: System.Management.Automation.Signature Name MemberType Definition ---- ---------- ---------- Equals Method bool Equals(System.Object obj) GetHashCode Method int GetHashCode() GetType Method type GetType() ToString Method string ToString() IsOSBinary Property bool IsOSBinary Path Property string Path SignatureType Property System.Management.Automation.SignatureType SignatureType SignerCertificate Property System.Security.Cryptography.X509Certificates.X509Certificate2 SignerCertificate {... Status Property System.Management.Automation.SignatureStatus Status StatusMessage Property string StatusMessage TimeStamperCertificate Property System.Security.Cryptography.X509Certificates.X509Certificate2 TimeStamperCertific...
Sie können also sehen, dass das Objekt einige Methoden und Eigenschaften hat (ich weiß, alle Objekte tun es). In diesem Fall handelt es sich bei den Methoden um alle Standardmethoden, die von System.Object geerbt werden. Die Eigenschaften sind jedoch interessant. Das SignerCertificate sieht so aus, wie Sie es wollten, also lassen Sie uns sehen, wie das aussieht:
$foo.SignerCertificate Thumbprint Subject ---------- ------- 419E77AED546A1A6CF4DC23C1F977542FE289CF7 CN=Microsoft Windows, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Der Fingerabdruck ist offensichtlich wichtig, weil er das Zertifikat identifiziert, aber Sie hatten nach dem Redmond gefragt, der in dem Betreff steht. Jetzt wissen wir, wie man als String dazu kommt:
$foo.SignerCertificate.Subject
Es ist also nur gerade String-Parsing von hier aus.
Noch ein Leckerbissen, das ich einwerfen werde, da Sie Powershell lernen. Ein weiteres Cmdlet, das Sie regelmäßig ausprobieren sollten, ist Get-Command. In diesem Fall wusste ich nicht einmal, dass das Cmdlet Get-AuthenticodeSignature vorhanden war, bevor Sie die Frage stellten. Also habe ich das gemacht:
Get-Command *signature* CommandType Name Version Source ----------- ---- ------- ------ Function Update-MpSignature 1.0 Defender Cmdlet Get-AuthenticodeSignature 3.0.0.0 Microsoft.PowerShell.Security Cmdlet Save-VolumeSignatureCatalog 1.0.0.0 ShieldedVMDataFile Cmdlet Set-AuthenticodeSignature 3.0.0.0 Microsoft.PowerShell.Security