【python】获取exe文件的数字签名时间戳信息

目录

1 前言

2 环境准备

3 demo代码

4 更多的其他参考


1 前言

最近打算写个python脚本,获取exe文件的数字签名时间戳。

但在网上搜索了许久,基本不是无关信息,就是无法正常运行。搜索大半天,终于发现了 signify 第三方库,特以记录。

(“非主流”的东西,搜索真的费劲……)

2 环境准备

安装 signify 第三方库(需要Python 3.8+):

pip install signify

3 demo代码

from signify.authenticode.signed_pe import SignedPEFile


def get_peFile_digital_signature_times(filename: str):
    """获取pe文件数字签名的时间戳
    
    Args:
      filename: str 文件路径
    
    Returns:
      list 文件的数字签名时间戳列表

    """
    with open(filename, "rb") as f:
        pe_file = SignedPEFile(f)
        sigs = list(pe_file.signed_datas)

    return [sig.signer_infos[0].countersigner.signing_time for sig in sigs]


if __name__ == '__main__':
    # 下面的exe路径,需要替换成自己的文件路径
    exe_filename = r"D:\\Downloads\SafariSetup.exe"
    for s in get_peFile_digital_signature_times(exe_filename):
        print(s)

运行效果:

更进一步:获取数字签名基本信息列表(签名者名称,签名算法,签名时间戳)

from signify.authenticode.signed_pe import SignedPEFile


def get_peFile_digital_signature_times(filename: str):
    """获取pe文件数字签名的时间戳
    
    Args:
      filename: str 文件路径
    
    Returns:
      list 文件的数字签名基本信息列表(签名者名称,签名算法,签名时间戳)

    """
    with open(filename, "rb") as f:
        pe_file = SignedPEFile(f)
        sigs = list(pe_file.signed_datas)

    return [[sig.certificates[-1].subject.rdns[0][1],
               sig.signer_infos[0].digest_algorithm().name,
               str(sig.signer_infos[0].countersigner.signing_time)] for sig in sigs]


if __name__ == '__main__':
    # 下面的exe路径,需要替换成自己的文件路径
    exe_filename = r"D:\\Downloads\SafariSetup.exe"
    for s in get_peFile_digital_signature_times(exe_filename):
        print(s)

运行效果:

与【属性】中的【数字签名】展示的基本信息一致:

4 更多的其他参考

signify库还可以获取 PE类型文件 更多详细的数字签名信息内容,可以查看源码或下面链接,自行探索:

signify库的PyPI链接:signify · PyPIModule to generate and verify PE signaturesicon-default.png?t=O83Ahttps://pypi.org/project/signify

signify库的GitHub链接:

GitHub - ralphje/signify: Module to generate and verify PE signaturesModule to generate and verify PE signatures. Contribute to ralphje/signify development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/ralphje/signify

其他博客的教程:

python3---signify-验证PE文件证书 - rvy - 博客园signify可以用来查看和验证PE文件证书 github地址: https://github.com/ralphje/signifyicon-default.png?t=O83Ahttps://www.cnblogs.com/-rvy-/p/17488228.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值