MakeCat

La herramienta MakeCat es una herramienta CryptoAPI que crea un archivo de catálogo. MakeCat está disponible como parte del Kit de desarrollo de software (SDK) de Microsoft Windows para Windows 7 y .NET Framework 4.0 y está instalado, de forma predeterminada, en la carpeta \Bin de la ruta de instalación del SDK.

La herramienta MakeCat usa la siguiente sintaxis de comandos:

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

Parámetros

Parámetro Descripción
-n
No se detenga en un error recuperable.
-r
Obliga a MakeCat a finalizar si encuentra errores recuperables. En concreto, finalizará al procesar las entradas de la sección de archivos de catálogo de un archivo .cdf.
-v
Detallado. Muestra todos los mensajes de progreso y error.
FileName
Nombre del archivo .cdf que se va a analizar. Para obtener la estructura y el contenido necesarios, vea Comentarios.

 

Comentarios

El archivo .cdf debe compilarse con las especificaciones siguientes.

[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

Nota

La última entrada del archivo .cdf siempre debe tener un carácter de nueva línea explícito al final de la línea.

 

La sección [CatalogHeader] define información sobre todo el archivo de catálogo.

Opción Descripción
Nombre
Nombre del archivo de catálogo, incluida su extensión.
ResultDir
Directorio donde se colocará el archivo .cat creado. Si no se indica, se usa el directorio actual predeterminado. Si el directorio no existe, se crea.
PublicVersion
Esta opción no se admite.
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Versión del catálogo. Si se deja en blanco, se usa el valor predeterminado, 1.

CatalogVersion
Versión del catálogo. Si la versión no está presente o está establecida en 1, se pasa "0x100" al parámetro dwPublicVersion de la función CryptCATOpen y se crea un archivo de catálogo de la versión 1. La opción HashAlgorithms debe estar vacía o contener SHA1.
Si la versión se establece en 2, se pasa "0x200" al parámetro dwPublicVersion de la función CryptCATOpen y se crea un archivo de catálogo de la versión 2. La opción HashAlgorithms debe contener SHA256.
Si esta opción está presente pero contiene cualquier valor distinto de 1 o 2, se producirá un error en la herramienta MakeCat.
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Esta opción no se admite.

HashAlgorithms
Nombre del algoritmo hash utilizado. Para obtener más información, vea la opción CatalogVersion.
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Esta opción no se admite.

PageHashes
Especifica si se deben aplicar hash a los archivos enumerados en la <opción HASH> de la sección [CatalogFiles]
Windows Server 2008 R2, Windows 7, Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: Esta opción no se admite.

EncodingType
Tipo de codificación de mensajes usada. Si se deja en blanco, el valor predeterminado de EncodingType es PKCS_7_ASN_ENCODING | X509_ASN_ENCODING, 0x00010001.

 

La sección [CatalogFiles] define cada miembro del archivo de catálogo con archivos de varios tipos y atributos de varios tipos en grupos independientes.

Opción Descripción
etiqueta de referencia
Referencia de texto al archivo. Esto puede incluir cualquier carácter de texto ASCII excepto el signo igual (=). El sistema debe poder reproducir esta etiqueta después de la instalación.
Use <HASH> como prefijo del nombre de archivo. Esto da como resultado que la etiqueta sea el hash del archivo en forma de cadena ASCII.
ruta de acceso y nombre del archivo
Nombre de archivo, incluida la extensión que se va a analizar y la ruta de acceso relativa al archivo. Cualquier tipo de archivo que se pueda firmar con SignTool se puede agregar a un catálogo. Por ejemplo, los nombres de archivo con las siguientes extensiones, entre otras, se pueden agregar a un catálogo: .exe, .cab, .cat, .ocx, .dll y .stl.
ALTSIPID
GUID SIP que se va a usar para aplicar un algoritmo hash en lugar del SIP estándar basado en el tipo de archivo. Esta entrada es opcional. Si se omite esta entrada, el miembro se aplica un algoritmo hash mediante el SIP predeterminado. Si no se encuentra ningún SIP instalado predeterminado, se usará el SIP plano.
guid
Representación de texto de un GUID.
ATTRx
Opcional. Atributo o instrucción sobre el archivo o el contenido. Puede haber cualquier número de atributos, incluidos ninguno.
type
Define qué tipo de atributo se agrega en el formato 0x00000000 (texto). Esta opción puede ser una combinación or bit a bit de cero o más de los valores siguientes:
  • 0x10000000 atributo Autenticado (firmado, incluido en el hash).
  • 0x20000000 atributo no autenticado (sin firmar, no incluido en el hash, no verificable).
  • 0x01000000 Atributo no se replicará en entradas SHA1 en un catálogo CatalogVersion 2.
  • 0x00010000 Atributo se representa en texto no cifrado. No se realizará ninguna conversión.
  • 0x00020000 Atributo se representa en codificación base 64. Se usa para representar datos binarios.
  • 0x00000001 Atributo es un par nombre-valor. Use la opción oid para el nombre. Este atributo es lento; por lo tanto, use esta opción con moderación.
  • 0x00000002 Atributo se hace referencia mediante un identificador de objeto (OID).

oid
Representación de texto de la clave de referencia del atributo. Es un OID en forma de cadena de texto en notación cuadrática de puntos (por ejemplo, a.b.c.d) o un nombre de texto.
value
Representación de texto del valor del atributo. El tipo de representación de texto utilizado depende del valor de la opción de tipo. Los caracteres EOL determinan la longitud.
<HASH>
Aplica un algoritmo hash al archivo especificado.

 

El archivo de catálogo generado no está firmado. Si se va a firmar antes de la transmisión, se firma mediante SignTool.