Board logo

标题: [问题求助] [已解决]PowerShell如何查询文件的数字签名信息? [打印本页]

作者: czjt1234    时间: 2019-10-20 14:17     标题: [已解决]PowerShell如何查询文件的数字签名信息?

本帖最后由 czjt1234 于 2019-10-28 10:34 编辑

如何查询文件的数字签名信息?
不要第三方工具
作者: czjt1234    时间: 2019-10-24 10:00

API函数
https://blog.csdn.net/qq_43080331/article/details/83096192

验证文件数字签名是否有效可以使用函数 WinVerifyTrust

取得文件数字签名证书信息需要使用函数 CryptQueryObject。

PS可以调用API吗?
作者: xczxczxcz    时间: 2019-10-24 15:18

简单点:查看证书是否有效和内容
  1. $file='绝对路径';
  2. $s=Get-AuthenticodeSignature $file;
  3. $s.Status;
  4. $s.SignerCertificate;
复制代码
复杂的或者各种内容,自己弄一下就明白了。
作者: czjt1234    时间: 2019-10-25 06:30

本帖最后由 czjt1234 于 2019-10-25 07:25 编辑

Thumbprint                                Subject
----------                                -------
6FFAD4A3B15F6A2C71D43C8E551DCECAB3A5183C  CN=Microsoft Corporation, OU=MOPR, O=Microsoft Corporation, L=Redmond, S=W...

这个显示不全啊,最后的 ... 怎么显示出来
看不到数字签名的日期,主要是想看这个

另外怎么把看到的信息输出到文本?
作者: WHY    时间: 2019-10-25 11:19

这里有篇文章,可能是你需要的:
https://blog.csdn.net/sinat_41104353/article/details/82826406
作者: WHY    时间: 2019-10-25 11:24

  1. [System.Collections.ArrayList]$arr = @('"文件名","证书","序列号","颁发者","使用者","有效期"');
  2. forEach( $file In (dir 'C:\Windows\System32\drivers\*.sys') ){
  3.     $sig = Get-AuthenticodeSignature $file.FullName;
  4.     if( $sig.Status -eq 'Valid' ){
  5.         $str = '"' + $file.Name + '",';                                                 #文件名
  6.         $str += '"' + $sig.SignerCertificate.Thumbprint + '",';                         #证书
  7.         $str += '"' + $sig.SignerCertificate.SerialNumber + '",';                       #序列号
  8.         $str += '"' + $sig.SignerCertificate.IssuerName.Name.split('=,')[1] + '",';     #颁发者
  9.         $str += '"' + $sig.SignerCertificate.SubjectName.Name.split('=,')[1] + '",';    #使用者
  10.         $str += '"' + $sig.SignerCertificate.NotBefore.ToString('yyyy/MM/dd HH:mm:ss'); #有效期
  11.         $str += ' 至 ';
  12.         $str += $sig.SignerCertificate.NotAfter.ToString('yyyy/MM/dd HH:mm:ss') + '"';
  13.         $null = $arr.Add($str);
  14.     }
  15. }
  16. sc 'D:\result.csv' $arr
复制代码

作者: czjt1234    时间: 2019-10-25 14:14

回复 6# WHY


非常感谢
不过我看到的时间戳,和有效期的起止日期都不一致
不知道有没有关于时间戳的属性

一批文件,我想按时间戳的日期来运行,避免出错




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2