Извлечение сертификата подписи программного обеспечения с использованием Python из файла PE - PullRequest
0 голосов
/ 20 декабря 2018

При попытке извлечь сертификат из PE-файла с помощью cryptography, происходит сбой с ValueError: Unable to load certificate.Я могу правильно извлечь сертификат из того же файла PE с помощью subprocess и командной строки openssl.Я хочу понять, что не так в версии кода, которая использует 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...