使用 MakeCat

MakeCat 工具生成一个无符号目录文件,其中包含一组文件的哈希以及该集中每个文件的关联属性。 目录文件允许用户 (目录) 对一个文件进行签名,而不是对大量单个文件进行签名。

对未签名的目录文件进行签名和传输后,接收方可以将原始文件的哈希与目录文件中包含的哈希进行比较,并验证这些文件是否不受篡改。

在使用 MakeCat 工具之前,用户必须使用任何文本编辑器准备目录定义文件 (.cdf) 。 .cdf 文件包含文件列表和要编录的文件的属性, (规范如下) 列出。 MakeCat 工具会扫描 .cdf 文件,验证每个列出的文件的属性列表,将列出的属性添加到目录本身,对每个列出的文件进行哈希处理,并将每个文件的哈希存储在目录文件中。 每个文件都有其哈希和属性单独存储在目录中。 然后,可以对此目录文件进行签名和传输。 随后,接收方可以将目录中每个文件的哈希与原始文件的哈希进行比较,以证明原始内容不受篡改。 MakeCat 不修改 .cdf 文件。

以下示例使用 MakeCat 命令。

  • 从文件 Good.cdf 生成目录文件。

    MakeCat -v good.cdf

Good.cdf 文件通过分析UnsignedPE.exe、UnsignedDOS.exe、Unsigned.cab、Unsigned.Class 和SignedPE.exe来生成目录文件,Good.cat。 分析的文件以及 Good.cdf 和新生成的 Good.cat 都位于同一目录中。

[CatalogHeader]
Name=Good.cat
ResultDir=.\
PublicVersion=0x00000001
EncodingType=
CATATTR1=0x10010001:Movie1:FirstMovie
CATATTR2=0x10010001:Movie2:SecondMovie
CATATTR3=0x10010001:Movie3:ThirdMovie

[CatalogFiles]
UnsignedPE=.\UnsignedPE.EXE
UnsignedDOS=.\UnsignedDOS.EXE
<HASH>UnsignedCAB=.\Unsigned.CAB
UnsignedClass=.\Unsigned.Class
SignedPE=.\SignedPE.EXE

注意

.cdf 文件中的最后一个条目必须始终在行尾有一个显式换行符。