#python #authenticode
#python #authenticode
Вопрос:
Я пытаюсь использовать signify для анализа ядра Linux (а не ядра компьютера, на котором я анализирую). Синтаксический анализ на некоторых машинах завершается успешно, а на других синтаксический анализ завершается неудачно.
Во-первых, успех на одной машине.
$ grep PRETTY /etc/os-release
PRETTY_NAME="Ubuntu 18.04.5 LTS"
$ shasum -a 256 kernel
956df917ddbcc82cc0b8205bb86452eaee99b5cb4af218e23968f8e0f07bae0d kernel
$ pip list | grep signify
signify 0.3.0
$ python
Python 3.6.9 (default, Oct 8 2020, 12:12:24)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from signify.signed_pe import SignedPEFile
>>> kf = open('kernel', 'rb')
>>> spef = SignedPEFile(kf)
>>> list(spef.signed_datas)
[<signify.authenticode.AuthenticodeSignedData object at 0x7f3d5f37c0b8>]
>>>
Теперь сбой на другой машине.
$ grep PRETTY /etc/os-release
PRETTY_NAME="Ubuntu 18.04.5 LTS"
$ shasum -a 256 kernel
956df917ddbcc82cc0b8205bb86452eaee99b5cb4af218e23968f8e0f07bae0d kernel
$ pip list | grep signify
signify 0.3.0
$ python
Python 3.6.9 (default, Oct 8 2020, 12:12:24)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from signify.signed_pe import SignedPEFile
>>> kf = open('kernel', 'rb')
>>> spef = SignedPEFile(kf)
>>> list(spef.signed_datas)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/dist-packages/signify/signed_pe.py", line 221, in signed_datas
yield AuthenticodeSignedData.from_envelope(certificate['certificate'], pefile=self)
File "/usr/local/lib/python3.6/dist-packages/signify/signeddata.py", line 41, in from_envelope
signed_data = cls(data, *args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/signify/authenticode.py", line 139, in __init__
super().__init__(data)
File "/usr/local/lib/python3.6/dist-packages/signify/signeddata.py", line 26, in __init__
self._parse()
File "/usr/local/lib/python3.6/dist-packages/signify/authenticode.py", line 158, in _parse
raise AuthenticodeParseError("SignedData.crls is present, but that is unexpected.")
signify.exceptions.AuthenticodeParseError: SignedData.crls is present, but that is unexpected.
>>>
Что здесь происходит?
Ответ №1:
По-видимому, легко иметь слишком старые версии определенных зависимостей. На отказавшей машине у меня было следующее.
$ pip list | grep -i asn
asn1crypto 0.24.0
pyasn1 0.4.5
pyasn1-modules 0.2.8
На том же компьютере синтаксический анализ завершается успешно после обновления до следующего.
$ pip list | grep asn1
asn1crypto 1.4.0
pyasn1 0.4.8
pyasn1-modules 0.2.8