我试图通过在[CatalogHeader]部分下添加以下两行来修改现有的输入cdf文件以使用SHA256而不是SHA1:
CatalogVersion=2
HashAlgorithms=SHA256
即使[CatalogFiles]下的内容没有变化,执行makecat.exe现在也会显示以下失败消息:
Failed: CryptCATCDFEnumMembersByCDFTagEx. Last Error: 0x00000057
Failed: No members found. Last Error: 0x00000057
Failed 0x00000057 (87)
如果我删除添加的两行,Makecat会查找并散列所有文件。
有人可以告诉我这里可能出什么问题吗?
以下是MCVE的示例cdf文件:
[CatalogHeader]
Name=MCVE.cat
CatalogVersion=2
HashAlgorithms=SHA256
[CatalogFiles]
MCVE.xml=MCVE.xml
MCVE.xml是您可以找到的任何旧的xml文件。
答案 0 :(得分:1)
我遇到了同样的问题,但是能够通过在每个文件条目的前面放置'
[CatalogFiles]
<HASH>manifest.json=.\manifest.json
<HASH>bsi.json=.\bsi.json
但是,这导致在Windows资源管理器中查看.cat文件时,目录文件的条目由其哈希而不是文件名来标记。您可以通过添加自定义属性在目录条目的详细信息中显示文件名来解决此问题,如下所示:
[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):
组成我在这里遇到以下示例时遇到了与您相同的问题,之后发现了此解决方法:https://www-user.tu-chemnitz.de/~heha/viewzip.cgi/basteln/PC/USB2LPT/usb2lpt.zip/src/Makefile?auto=MAK
希望这会有所帮助。
答案 1 :(得分:1)
还不能添加评论---
只是想说 Jonathan 的带有 0x11010001 属性的示例效果很好,但是 PowerShell 的 Test-FileCatalog 仍然会说它无法解析文件。使用 FilePath 而不是 File 解决了这个问题。不确定这是在规范中还是只是一个 powershell 怪癖或什么,但这是 PowerShell 对 New-FileCatalog 所做的。
不包含 SHA1 哈希的奖励积分,谢谢!