smooth 发表于 2022-3-24 16:47:02

[已解决]有没有大佬研究怎么样读取U盾的证书信息?

本帖最后由 smooth 于 2022-4-7 15:53 编辑

我的U盾,在IE的证书池里有如下信息:

序列号:1315125916
使用者密钥标识符:b0d60f8c29b85d23377dad994a4ab7dc83ca9f7f
指纹:a0df987841155123022fc1c4dcaf5b98beebfb07

有没有大佬研究过,用AU3怎么样读取到这些信息?

yuantian 发表于 2022-3-24 21:32:43

certmgr.exe /v /s 存储位置

这个么?????
root : 受信任的根证书颁发机构
trust 受信任的发布者
ca   中级证书颁发机构
my 个人证书

smooth 发表于 2022-3-24 22:05:07

yuantian 发表于 2022-3-24 21:32
这个么?????
root : 受信任的根证书颁发机构
trust 受信任的发布者


谢谢大佬,我试了一下,报错了:

C:\WINDOWS\system32>d:\certmgr.exe /v /s my

未经处理的异常:System.IO.FileNotFoundException: 未能加载文件或程序集“Mono.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756”或它的某一个依赖项。系统找不到指定的文件。
   在 Mono.Tools.CertificateManager.Main(String[] args)

yuantian 发表于 2022-3-24 22:08:41

smooth 发表于 2022-3-24 22:05
谢谢大佬,我试了一下,报错了:

C:\WINDOWS\system32>d:\certmgr.exe /v /s my


额,,,我发给你个CertMgr文件你试试。。


smooth 发表于 2022-3-24 22:14:33

yuantian 发表于 2022-3-24 22:08
额,,,我发给你个CertMgr文件你试试。。

网上能找到的最新版本是6.4,你这个10.0版的,可以读取出来。谢谢大佬!

yuantian 发表于 2022-3-24 22:18:40

smooth 发表于 2022-3-24 22:14
网上能找到的最新版本是6.4,你这个10.0版的,可以读取出来。谢谢大佬!

我也不是大佬,,
这个文件是从Windows 的SDK当中提取出来的。

互相学习,相互进步嘛

yuantian 发表于 2022-3-24 22:44:57

本帖最后由 yuantian 于 2022-3-24 22:46 编辑

大约代码(正则比较简陋,献丑啦):


#include <Array.au3>

$aResult = __Run_Bat_Get_Echo("G:\certmgr.exe /v /s my")
$aArray = StringRegExp($aResult,"(?s)\=(Certificate.*?)\s=.*?(SerialNumber).*?\n\s*(.*?)\n.*?(SHA1 Thumbprint).*?\n\s*(.*?)\n.*?(MD5 Thumbprint).*?\n\s*(.*?)\n", 3, 1)
_ArrayDisplay($aArray)

Func __Run_Bat_Get_Echo($Command);运行批处理命令,并返回执行结果
      ;功能    :完整返回批处理命令的执行回显。不会出现乱码或者缺失。支持将多条命令连在一起执行
      ;注意    :支持带参数执行批处理。支持带变量执行批处理。但变量中请注意“'”标点符号的使用,不使用或需要成对使用。
      ;作者    :迷路轮回
      ;编写时间:2018-02-27
      ;最后更新:2019-02-03
      Local $iPID = Run(@ComSpec & ' /c ' & $Command, @ScriptDir, @SW_HIDE, 8)
      If Not @error Then
                ProcessWaitClose($iPID)
                Local $Result = BinaryToString(StdoutRead($iPID, 1, 1))
                Return $Result
      EndIf
EndFunc   ;==>__Run_Bat_Get_Echo



__Run_Bat_Get_Echo()的部分,请见地址:
https://autoitx.com/thread-71099-1-1.html



smooth 发表于 2022-3-24 22:49:05

本帖最后由 smooth 于 2022-3-24 22:53 编辑

yuantian 发表于 2022-3-24 22:44
大约代码(正则比较简陋,献丑啦):


我用你的代码,但是读取到的信息,只有其中几项。


yuantian 发表于 2022-3-24 22:57:04

smooth 发表于 2022-3-24 22:49
我用你的代码,但是读取到的信息,只有其中几项。

你得先看你读取的证书,是不是你想要读的那个。
然后根据正则就提呗

smooth 发表于 2022-3-24 22:58:38

yuantian 发表于 2022-3-24 22:57
你得先看你读取的证书,是不是你想要读的那个。
然后根据正则就提呗

是的,我看了你的正则,我才想起来,每个证书不一样,所以字段不一样,得修改正则、

smooth 发表于 2022-3-24 23:23:55

smooth 发表于 2022-3-24 22:49
我用你的代码,但是读取到的信息,只有其中几项。

我U盾拔掉之后,还是可以读到证书的信息,感觉这样就不能判断U盾是否插入电脑了。

yuantian 发表于 2022-3-24 23:32:57

smooth 发表于 2022-3-24 23:23
我U盾拔掉之后,还是可以读到证书的信息,感觉这样就不能判断U盾是否插入电脑了。

那你单点调试看看certmgr就知道了呗

yuantian 发表于 2022-3-24 23:34:08

smooth 发表于 2022-3-24 23:23
我U盾拔掉之后,还是可以读到证书的信息,感觉这样就不能判断U盾是否插入电脑了。

主要是得看差异项不是

life999 发表于 2022-3-29 20:39:40

看看啊看看啊
页: [1]
查看完整版本: [已解决]有没有大佬研究怎么样读取U盾的证书信息?