MakeCat
MakeCat 工具是用于创建目录文件的 CryptoAPI 工具。 MakeCat 作为适用于 Windows 7 和 .NET Framework 4.0 的 Microsoft Windows 软件开发工具包 (SDK) 的一部分提供,默认情况下安装在 SDK 安装路径的 \Bin 文件夹中。
MakeCat 工具使用以下命令语法:
MakeCat [-n-r-v||] FileName
参数
参数 | 描述 |
---|---|
-n |
不要因可恢复错误而停止。 |
-r |
如果遇到可恢复错误,则强制 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] 部分定义目录文件的每个成员,其中包含不同类型的文件和不同类型的属性,这些属性位于不同的组中。
选项 | 说明 |
---|---|
reference 标记 |
对文件的文本引用。 这可以包括除等号 (=) 之外的任何 ASCII 文本字符。 安装后,系统必须能够重现此标记。 使用 <HASH> 作为文件名的前缀。 这会导致 标记成为 ASCII 字符串形式的文件的哈希。 |
文件路径和名称 |
文件名,包括要分析的扩展名和文件的相对路径。 可以使用 SignTool 签名的任何类型的文件都可以添加到目录中。 例如,可以将具有以下扩展名的文件名添加到目录中:.exe、.cab、.cat、.ocx、.dll 和 .stl。 |
ALTSIPID |
要用于哈希的 SIP GUID,而不是基于文件类型的标准 SIP。 此项是可选的。 如果省略此项,将使用默认 SIP 对成员进行哈希处理。 如果未找到默认安装的 SIP,则将使用平面 SIP。 |
guid |
GUID 的文本表示形式。 |
ATTRx |
可选。 有关文件或内容的属性或语句。 可以有任意数量的属性,包括无属性。 |
type |
定义要以文本) 格式0x00000000 (添加的属性类型。 此选项可以是以下零个或多个值的按位或 组合:
|
oid |
属性的引用键的文本表示形式。 它是一个 OID,采用带点的四边形表示法 (文本字符串的形式,例如 a.b.c.d) 或文本 Name。 |
value |
特性值的文本表示形式。 使用的文本表示形式类型取决于类型选项的值。 EOL 字符确定长度。 |
<散 列> |
对指定的文件进行哈希处理。 |
生成的目录文件是无符号的。 如果要在传输之前对其进行签名,则使用 SignTool 对其进行签名。