标题: [问题求助] [已解决]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
简单点:查看证书是否有效和内容- $file='绝对路径';
- $s=Get-AuthenticodeSignature $file;
- $s.Status;
- $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
- [System.Collections.ArrayList]$arr = @('"文件名","证书","序列号","颁发者","使用者","有效期"');
-
- forEach( $file In (dir 'C:\Windows\System32\drivers\*.sys') ){
- $sig = Get-AuthenticodeSignature $file.FullName;
- if( $sig.Status -eq 'Valid' ){
- $str = '"' + $file.Name + '",'; #文件名
- $str += '"' + $sig.SignerCertificate.Thumbprint + '",'; #证书
- $str += '"' + $sig.SignerCertificate.SerialNumber + '",'; #序列号
- $str += '"' + $sig.SignerCertificate.IssuerName.Name.split('=,')[1] + '",'; #颁发者
- $str += '"' + $sig.SignerCertificate.SubjectName.Name.split('=,')[1] + '",'; #使用者
- $str += '"' + $sig.SignerCertificate.NotBefore.ToString('yyyy/MM/dd HH:mm:ss'); #有效期
- $str += ' 至 ';
- $str += $sig.SignerCertificate.NotAfter.ToString('yyyy/MM/dd HH:mm:ss') + '"';
- $null = $arr.Add($str);
- }
- }
- sc 'D:\result.csv' $arr
复制代码
作者: czjt1234 时间: 2019-10-25 14:14
回复 6# WHY
非常感谢
不过我看到的时间戳,和有效期的起止日期都不一致
不知道有没有关于时间戳的属性
一批文件,我想按时间戳的日期来运行,避免出错
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |