【发布时间】:2018-12-20 05:08:53
【问题描述】:
当尝试使用cryptography 从 PE 文件中提取证书时,它会以ValueError: Unable to load certificate 失败。我可以使用subprocess 和openssl 命令行从同一个PE 文件中正确提取证书。我想了解使用cryptography 的代码版本出了什么问题。
我正在使用 Python 3.7.1、密码学 2.4.2 和 pefile 2018.8.8
import pefile
from cryptography import x509
from cryptography.hazmat.backends import default_backend
pe = pefile.PE(fname)
pe.parse_data_directories(directories=[pefile.DIRECTORY_ENTRY['IMAGE_DIRECTORY_ENTRY_SECURITY']])
sigoff = 0
siglen = 0
for s in pe.__structures__:
if s.name == 'IMAGE_DIRECTORY_ENTRY_SECURITY':
sigoff = s.VirtualAddress
siglen = s.Size
pe.close()
with open(fname, 'rb') as fh:
fh.seek(sigoff)
thesig = fh.read(siglen)
cert = x509.load_der_x509_certificate(thesig[8:], default_backend())
ValueError: Unable to load certificate 失败
【问题讨论】:
标签: python openssl portable-executable pyopenssl python-cryptography