作者:日本化妆品专卖_703 | 来源:互联网 | 2023-09-24 13:40
安卓apk包的META-INF/CERT.RSA是apk包的签名文件,如何用Python来解析它呢。
查资料了解到它的格式是X.509V3,但是用了很多库都解析失败,后来勉强实现了也不优雅。
比如直接OpenSSL直接load会报错。
1 2
| certbuffer = open(rsa_path, 'rb').read()
cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_ASN1, certbuffer) |
但如果用命令行先把原文件转换为PEM格式。
1
| os.system('openssl pkcs7 -inform DER -in {} -print_certs > {}'.format(rsa_path, pem_path)) |
再读取就能成功。
1 2
| certbuffer = open(pem_path, 'rb').read()
cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, certbuffer) |
不过os.system调命令行实在太丑陋了,不知道怎样用库实现命令行的等价功能。
不知道apk包里这个签名文件有何特别之处,或者其他的库可以实现同样功能吗?请指教。