MakeCat

MakeCat 工具是一个 CryptoAPI 工具,用于创建目录文件。 MakeCat 作为 Windows 7 和 .NET Framework 4.0 Microsoft Windows 软件开发工具包(SDK)的一部分提供,默认情况下安装在 SDK 安装路径的 \Bin 文件夹中。

MakeCat 工具使用以下命令语法:

MakeCat [-n|-r|-v] FileName

参数

参数 描述
-n
不要在可恢复的错误时停止。
-r
如果 MakeCat 遇到可恢复的错误,则强制 MakeCat 结束。 具体而言,它将在处理 .cdf 文件的目录文件部分中的条目时结束。
-v
详细。 显示所有进度和错误消息。
FileName
要分析的 .cdf 文件的名称。 有关所需的结构和内容,请参阅“备注”。

 

言论

必须使用以下规范生成 .cdf 文件。

[CatalogHeader]
Name=Name              
ResultDir=ResultDir   
PublicVersion=[|1]
CatalogVersion = [|1|2]
HashAlgorithms=[|SHA1|SHA256]
PageHashes=[true|false]
EncodingType=Encodingtype 
CATATTR1={type}:{oid}:{value} (optional)
CATATTR2={type}:{oid}:{value} (optional)

[CatalogFiles]
{reference tag}=file path and name
{reference tag}ALTSIPID={guid} (optional)
{reference tag}ATTR1={type}:{oid}:{value} (optional)
{reference tag}ATTR2={type}:{oid}:{value} (optional)
<HASH>kernel32.dll=kernel32.dll
<HASH>ntdll.dll=ntdll.dll

注意

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

 

[CatalogHeader] 节定义有关整个目录文件的信息。

选择 描述
名字
目录文件的名称,包括其扩展名。
ResultDir
将放置已创建的 .cat 文件的目录。 如果未指示,则使用默认的当前目录。 如果该目录不存在,则会创建它。
PublicVersion
不支持此选项。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 目录版本。 如果留空,则使用默认值 1。

CatalogVersion
目录版本。 如果版本不存在或设置为 1,则会将“0x100”传递给 CryptCATOpen 函数的 dwPublicVersion 参数,并创建版本 1 目录文件。 HashAlgorithms 选项必须为空或包含 SHA1。
如果版本设置为 2,则会将“0x200”传递给 CryptCATOpen 函数的 dwPublicVersion 参数,并创建版本 2 目录文件。 HashAlgorithms 选项必须包含 SHA256。
如果此选项存在,但包含除 1 或 2 以外的任何值,则 MakeCat 工具将出错。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支持此选项

HashAlgorithms
使用的哈希算法的名称。 有关详细信息,请参阅 CatalogVersion 选项。
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支持此选项

PageHashes
指定是否对 [CatalogFiles] 节中 <HASH> 选项中列出的文件进行哈希处理
Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支持此选项

EncodingType
使用的消息编码类型。 如果留空,则默认的 EncodingType PKCS_7_ASN_ENCODING |X509_ASN_ENCODING,0x00010001。

 

[CatalogFiles] 节定义目录文件的每个成员,其中包含不同类型的文件和不同组中各种类型的属性。

选择 描述
引用标记
对文件的文本引用。 这可以包括除等号(=)之外的任何 ASCII 文本字符。 安装后,系统必须能够重现此标记。
使用 <HASH> 作为文件名的前缀。 这会导致标记成为 ASCII 字符串形式的文件哈希。
文件路径和名称
文件名,包括要分析的扩展名和文件的相对路径。 可以使用 SignTool 签名的任何类型的文件都可以添加到目录中。 例如,可以将扩展名如下的文件名添加到目录中:.exe、.cab、.cat、.ocx、.dll和 .stl。
ALTSPID
用于哈希的 SIP GUID,而不是基于文件类型的标准 SIP。 此项是可选的。 如果省略此条目,将使用默认 SIP 对成员进行哈希处理。 如果未找到默认安装的 SIP,将使用平面 SIP。
guid
GUID 的文本表示形式。
ATTRx
自选。 有关文件或内容的属性或语句。 可以有任意数量的属性,包括无。
类型
定义以0x00000000(文本)格式添加的属性类型。 此选项可以是按位 以下值中的零个或多个组合:
  • 0x10000000经过身份验证的属性(已签名,包含在哈希中)。
  • 0x20000000未经身份验证的属性(未签名,不包含在哈希中,不可验证)。
  • 0x01000000 Attribute 不会复制到 CatalogVersion 2 目录中的 SHA1 条目。
  • 0x00010000属性以纯文本表示。 不会执行任何转换。
  • 0x00020000属性以 base-64 编码表示。 这用于表示二进制数据。
  • 0x00000001属性是名称/值对。 使用名称的 oid 选项。 此属性缓慢;因此,请谨慎使用此选项。
  • 0x00000002属性由 对象标识符(OID)引用。

oid
属性的引用键的文本表示形式。 它是一个 OID,采用带点四表示法的文本字符串(例如,a.b.c.d)或文本名称的形式。
价值
特性值的文本表示形式。 使用的文本表示形式的类型取决于类型选项的值。 EOL 字符确定长度。
<HASH>
对指定的文件进行哈希处理。

 

生成的目录文件未签名。 如果要在传输之前对其进行签名,则使用 SignTool对其进行签名。