MakeCat

MakeCat 工具是可建立類別目錄檔案的 CryptoAPI 工具。 MakeCat 是 Microsoft Windows 軟體發展工具組的一部分, (SDK) for Windows 7 和 .NET Framework 4.0,預設會在 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] 區段會定義整個目錄檔案的相關資訊。

選項 Description
名稱
目錄檔案的名稱,包括其副檔名。
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] 區段會定義類別目錄檔案的每個成員,其中包含不同群組中各種類型和各種類型屬性的檔案。

選項 Description
參考標籤
檔案的文字參考。 這可以包含任何 ASCII 文字字元,但等號 (=) 除外。 安裝之後,系統必須能夠重現此標記。
使用 < HASH > 作為檔案名的前置詞。 這會導致標籤成為 ASCII 字串形式的檔案雜湊。
檔案路徑和名稱
檔案名,包括要剖析的副檔名,以及檔案的相對路徑。 任何可使用 SignTool 簽署的檔案類型都可以新增至目錄。 例如,可以新增下列副檔名的檔案名至目錄:.exe、.cab、.cat、.ocx、.dll 和 .stl。
ALTSHIGHD
要用於雜湊的 SIP GUID,而不是根據檔案類型的標準 SIP。 這是選用項目。 如果省略此專案,則會使用預設 SIP 來雜湊成員。 如果找不到預設安裝的 SIP,則會使用一般 SIP。
guid
GUID 的文字表示。
ATTRx
選擇性。 關於檔案或內容的屬性或語句。 可以有任意數目的屬性,包括無。
類型
定義要以0x00000000 (文字) 格式新增的屬性類型。 此選項可以是零個或多個下列值的位OR 組合:
  • 0x10000000已簽署的已驗證屬性 (,包含在雜湊) 中。
  • 0x20000000未驗證的屬性 (未簽署,未包含在雜湊中,無法驗證) 。
  • 0x01000000 Attribute 不會複寫至 CatalogVersion 2 目錄中的 SHA1 專案。
  • 0x00010000 Attribute 是以純文字表示。 不會進行轉換。
  • 0x00020000 Attribute 是以 base-64 編碼表示。 這可用來表示二進位資料。
  • 0x00000001 Attribute 是名稱/值組。 針對名稱使用 oid 選項。 這個屬性很慢;因此,請謹慎使用此選項。
  • 0x00000002 Attribute 是由 OID) (物件識別碼 所參考。

oid
屬性參考索引鍵的文字表示。 它是以虛線四次表示 (法格式的文字字串形式的 OID,例如 a.b.c.d) 或文字名稱。
value
屬性值的文字表示。 使用的文字表示類型取決於類型選項的值。 EOL 字元會決定長度。
<散 列>
雜湊指定的檔案。

 

產生的目錄檔案是未簽署的。 如果要在傳輸之前簽署,則會使用 SignTool 簽署