2017-08-20 10 views
0

androguardというAndroidの.APKファイルから機能を抽出していますが、今ではその署名ファイル(通常はCERT.RSA)からシリアル番号(*)を抽出する必要があります。私はasn1cryptoを見つけましたが、pkcs7でどのように使用するのかよくわかりません。だから、この目的に適したPythonパッケージはありますか?pkcs7を解析するためのPythonパッケージはありますか?

(*): Serial number

答えて

1

コメント:私はメモリオブジェクトとしてPKCS7ている、いないファイル

PyOpenSSLファイルから読み取れません!

OpenSSL.crypto.load_pkcs7_data(タイプ、バッファ)タイプタイプでエンコードされた文字列バッファから

ロードPKCS7データ。
タイプタイプは、FILETYPE_PEMまたはFILETYPE_ASN1のいずれかでなければなりません)。

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を使用してPEMにPKCS#7に変換することができ、PEMは読みやすい読むPyOpenSSL

openssl pkcs7 -print_certs -in sample.p7b -out sample.cer 

を使用して、関連するSO回答こと:pyOpenSSL's PKCS7

+0

は、あなたの答えをありがとう!私はすでにそれを知っていますが、ファイルではなくメモリオブジェクトとしてpkcs7を持っています。私はファイルとして保存することができなかったわけではありません、私はちょうどこのようにしたいと思いました。だから、私はpythonパッケージがとても悪いと思ったのです。とにかく、シグネチャは常に同じ構造をしているので、ASN1を[asn1パッケージ](https://pypi.python.org/pypi/asn1/2.1.0)で直接解析し、シリアル番号を抽出します。 –

+0

@Gleb:更新済み – stovfl

関連する問題