我正在使用androguard从 Android .APK 文件中提取功能,现在我需要从其签名文件(通常是 CERT.RSA)中提取序列号(*)。我找到了 asn1crypto,但我不太明白如何将它与 pkcs7 一起使用。那么有没有适合这个目的的python包呢?
问问题
4922 次
1 回答
7
评论:我将 pkcs7 作为内存对象,而不是文件
PyOpenSSL
不从文件中读取!
OpenSSL.crypto.load_pkcs7_data(类型,缓冲区)
从使用 type 类型编码的字符串缓冲区加载 pkcs7 数据。
类型类型必须是 FILETYPE_PEM 或 FILETYPE_ASN1)。
from
SO Answer 45111623
import get_certificates
from OpenSSL import crypto
pkcs7 = crypto.load_pkcs7_data(crypto.FILETYPE_ASN1,
open('certs/signature.der', 'rb').read())
certs = get_certificates(pkcs7)
for cert in certs:
print('Subject:{}, Serial Nnumber:{}'.
format(cert.get_subject(), cert.get_serial_number()))
>>>Subject:<X509Name object '/CN=key1'>, Serial Nnumber:13315126025841024674
>>>Subject:<X509Name object '/CN=key2'>, Serial Nnumber:14142490995367396705
问题:解析pkcs7的python包?
您可以使用 openssl 将 PKCS#7 转换为 PEM,使用PyOpenSSL可以读取 PEM
openssl pkcs7 -print_certs -in sample.p7b -out sample.cer
阅读相关的 SO 答案:pyOpenSSL 的 PKCS7
于 2017-08-20T19:30:36.087 回答