PEM公開鍵の10進数形式の正確なポイントに到達しようとしています。 Pemにはない。すべてのPythonでPEM形式の「Decimal」として正確に公開鍵を抽出します
まずiはブリックキーを抽出するために "PEM、RFC2459をインポートpyasn1_modulesから" 私が使用したものの後に
from socket import socket
import ssl
from OpenSSL import SSL
import string
import traceback
import json
import re
for i in file_content:
final_list.append(i.strip())
file = open("SSL_out_put.json","w")
Temp_Priv_Key_list = []
counter = 1
for i in final_list[:4047]:
print counter
print i
counter = counter + 1
try:
x = ssl.get_server_certificate((i, 443))
Temp_Priv_Key_list.append({
'counter' : counter,
'i' : i,
'x' : x
})
content = json.dumps(Temp_Priv_Key_list, indent=3)
file.write(content)
Temp_Priv_Key_list=[]
except Exception , err:
pass
print Exception , err
file.close()
を使用して、私のPEM証明書を取得します。これにより、公開鍵のバイナリ表現が得られます。 decimal i reilzeを変換した後、これは私が使いたいとは思っていません。 私の経験では、pyasc1が正しく動作していないことに注意してください。
多くの研究の後、私はこのコードをまだPEM形式の公開鍵を抽出するために見つけました。
from cryptography import x509
from cryptography.hazmat.backends import default_backend
with open("cert.pem", "rb") as f:
cert = f.read()
cert = str(cert)
x509 = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert)
key_data = (OpenSSL.crypto.dump_publickey(OpenSSL.crypto.FILETYPE_PEM,x509.get_pubkey()))
print key_data
私はPem形式としてまだ私のPublickキーを持っています。他のいくつかの研究の後、私はこれを見つけましたが、この出力しか与えませんでした。まだ10進形式でも2進形式でもない公開鍵を抽出できません。
from Crypto.PublicKey import RSA
from base64 import b64decode
from Crypto.Util import asn1
with open("public_key.pem", "rb") as f:
cert = f.read()
#print cert
keyDER = b64decode(cert)
keyPub = RSA.importKey(keyDER)
print keyPub}
このコードは、電子、あなた < _RSAobj @ 0x7f65559da320 N(2048)の入れアウトを与える>
これが私の最初の質問です。申し訳ありませんが、私は適切な質問はしません。私の頭脳は、現時点では理解できないごみの符号化を含むあらゆる種類のスタッフでいっぱいです。何人かがこの問題から私を助けてくれますか?
私はhttp://lapo.it/asn1js/を見つけましたが、私は正確にそれが必要ですが、私はそれをPythonで使うことはできません。私はセレンやスクラピーを使って、自分が望むデータを抽出するかもしれません。しかし、これは本当に私を殺すでしょう。道があるはず私が試したこれらのモジュール:私はこのテーマにしようとした
それらのモジュール:
from pyasn1_modules import pem, rfc2459
from pyasn1.codec.der import decoder
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
#import pem
import socket, ssl
import OpenSSL
をところで私と一緒にこの問題をencountiringている人のために。私はVCPython2.7.msiをインストールしますが、 "あなたがそれを試してみるとどういう意味なのか分かります")私はvirtual-ubuntuに切り替えます。ありがとうございました。