【问题标题】:Python: Get digital signiture information for a filePython:获取文件的数字签名信息
【发布时间】:2023-04-02 03:02:01
【问题描述】:

我希望利用 Python 创建一个脚本,用于在指定文件安装后检查其数字签名和版权信息。

有人有什么想法吗?我已经尝试使用 win32file.GetFileAttributes 和其他此类方法,但我没有得到我正在寻找的信息。

理想情况下,我希望尽可能多地使用数字签名。

谢谢。

【问题讨论】:

  • 你想要什么样的信息?
  • 我希望从数字签名中获得尽可能多的信息。签名者信息、版本、序列号、有效期自、有效期至
  • 这是否可能取决于所使用的文件格式和签名类型。 Python 有几个库可以验证不同类型的签名。请更具体。

标签: python digital-signature


【解决方案1】:

您可以通过 win32com 使用 CAPICOM 接口从二进制可执行文件中获取签名信息。这些库通常不会默认安装,但它是 free download from MSDN

下面是一个如何在python中使用CAPICOM的例子:

import win32com.client
s=win32com.client.gencache.EnsureDispatch('capicom.signedcode',0)
s.FileName=r'J:\Program Files\Adobe\Flash Player\AddIns\airappinstaller\airappinstaller.exe'
signer = s.Signer
print (signer.Certificate.IssuerName, signer.Certificate.SerialNumber)

【讨论】:

  • 我尝试安装 CAPICOM SDK 并执行代码,但失败:Traceback(最近一次调用最后一次):文件“C:\Users\user\Desktop\test.py”,第 23 行,在 s=win32com.client.gencache.EnsureDispatch('capicom.signedcode',0) File "C:\Python27\lib\site-packages\win32com\client\gencache.py",第 529 行,在 EnsureDispatch disp = win32com.client.Dispatch(prog_id) 文件“C:\Python27\lib\site-packages\win32com\client_init_.py”,第 95 行,在 Dispatch 调度中,userName = dynamic._GetGoodDispatchAndUserName(dispatch ,用户名,c lsctx)
  • 文件“C:\Python27\lib\site-packages\win32com\client\dynamic.py”,第 108 行,在 _GetGoodDispatchAndUserName 中返回 (_GetGoodDispatch(IDispatch, clsctx), userName) 文件“C: \Python27\lib\site-packages\win32com\client\dynamic.py",第 85 行,在 _ GetGoodDispatch IDispatch = pythoncom.CoCreateInstance(IDispatch, None, clsctx, pythoncom.II D_IDispatch) pywintypes.com_error: (-2147221005, '无效的类字符串',无,无)
  • 抱歉,误按回车。在命令提示符下使用“regsvr32 capicom.dll”自行注册。
  • @RogerUpole,嗨,罗杰,我按照你的建议尝试了。注册 capicom.dll 并提示我成功。但是当我在python中运行时,它仍然会出现相同的错误,例如“(-2147221005,'Invalid class string',None,None)”我的操作系统是win7 x64,python版本是2.7。还有cmets吗?谢谢。
猜你喜欢
  • 1970-01-01
  • 2020-05-16
  • 2020-11-20
  • 2018-10-29
  • 1970-01-01
  • 2022-01-13
  • 2023-03-18
  • 2013-08-07
  • 2016-03-20
相关资源
最近更新 更多