Ошибка Makecat: участники не найдены - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь изменить существующий входной файл cdf для использования SHA256 вместо SHA1, добавив следующие две строки в разделе [CatalogHeader]:

CatalogVersion=2
HashAlgorithms=SHA256

Выполнение makecat.exe теперь дает мне следующее сообщение об ошибке, даже если ничего в [CatalogFiles] не изменилось:

Failed: CryptCATCDFEnumMembersByCDFTagEx. Last Error: 0x00000057
Failed: No members found. Last Error: 0x00000057

Failed 0x00000057 (87)

Makecat находит и хэширует все файлы, если я убрал две добавленные строки.

Кто-нибудь может подсказать мне, что здесь может пойти не так?

Вот пример файла cdf для MCVE:

[CatalogHeader]
Name=MCVE.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
MCVE.xml=MCVE.xml

MCVE.xml - это любой старый XML-файл, который вы можете найти.

1 Ответ

0 голосов
/ 08 ноября 2018

Я столкнулся с той же проблемой, но смог заставить ее работать, поместив «» (без пробелов) перед каждой записью файла.Пример:

[CatalogFiles]
<HASH>manifest.json=.\manifest.json
<HASH>bsi.json=.\bsi.json

Однако это приводит к тому, что записи файла каталога помечаются их хешем, а не именем файла, при просмотре файла .cat в проводнике Windows.Вы можете обойти эту проблему, добавив пользовательский атрибут для отображения имени файла в деталях записи каталога, как показано ниже:

[CatalogFiles]
<HASH>manifest.json=.\manifest.json
<HASH>manifest.jsonATTR1=0x11010001:File:manifest.json
<HASH>bsi.json=.\bsi.json
<HASH>bsi.jsonATTR1=0x11010001:File:bsi.json

Тип атрибута состоит из (https://docs.microsoft.com/en-us/windows/desktop/seccrypto/makecat):

  • 0x10000000: атрибут включен в хэш каталога
  • 0x01000000: не создавать дублирующийся атрибут с хэшем SHA1 (при использовании SHA256 и версии каталога 2)
  • 0x00010000: атрибут находится в открытом тексте, а не base64
  • 0x00000001: атрибут является парой ключ-значение (например, File = bsi.json)

Я нашел этот обходной путь после того, как столкнулся с той же проблемой, что и вы, когда нашел этот примерздесь: https://www -user.tu-chemnitz.de / ~ heha / viewzip.cgi / basteln / PC / USB2LPT / usb2lpt.zip / src / Makefile? auto = MAK

Надеюсь, это поможет.

...