如何在python中读取(打开)ASN.1文件

时间:2018-05-16 15:18:28

标签: python python-3.x openssl pyopenssl

我想使用python获取证书序列号:

der = open('/Users/me/MyApp/Payload/codesign0').read()

cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, der)

cert.get_serial_number()

不幸的是,它在第​​一行失败了:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x82 in position 1: invalid start byte

如何在Python中读取ASN.1文件格式(DER)?

2 个答案:

答案 0 :(得分:1)

你应该试试这个Python-ASN1 encoder and decoder。适用于Python 2.6+和3.3+。页面上的简短示例:

https://pypi.org/project/asn1/

请务必在pip install future

之前安装pip install asn1

答案 1 :(得分:1)

您正在将文件作为文本文件打开,这意味着read尝试使用UTF-8解码数据,以便返回str个对象。

相反,请将其作为二进制文件打开,以便read只返回bytes对象,而不会尝试解码数据。

 der = open('...', 'rb').read()