Вы находитесь на странице: 1из 6

RAR version 3.

71 -Informaci�n T�cnica
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

EL FORMATO DE ARCHIVO DESCRITO A CONTINUACION ES V�LIDO SOLO PARA VERSIONES


POSTERIORES A LA 1.50

==========================================================================
Formato de los ficheros RAR
==========================================================================

Los ficheros est�n constituidos por bloques de longitud variable. El


orden de estos bloques puede variar, pero el primer bloque debe ser
siempre un bloque de identificaci�n seguido de un bloque de cabecera de
archivo.

Cada bloque empieza con los siguientes campos:

HEAD_CRC 2 bytes CRC total o parcial del bloque


HEAD_TYPE 1 byte Tipo de bloque
HEAD_FLAGS 2 bytes Indicaciones del bloque
HEAD_SIZE 2 bytes Tama�o del bloque
ADD_SIZE 4 bytes Tama�o del campo adicional - tama�o a�adido del bloque

El campo ADD_SIZE s�lo est� presente si (HEAD_FLAGS & 0x8000) != 0

El tama�o total del bloque es HEAD_SIZE si (HEAD_FLAGS & 0x8000) == 0


y HEAD_SIZE+ADD_SIZE si el campo ADD_SIZE est� presente - cuando
(HEAD_FLAGS & 0x8000) != 0.

En cada bloque los siguientes bits en HEAD_FLAGS tienen el mismo


significado:

0x4000 - Si est� activado, antiguas versiones de RAR ignorar�n el


bloque y lo borrar�n cuando el archivo sea actualizado.
Si est� a cero, el bloque es copiado al nuevo archivo
cuando el archivo es actualizado.

0x8000 - Si est�activado, el campo ADD_SIZE est�presente y el


tama�o total del bloque es HEAD_SIZE+ADD_SIZE.

Tipos v�lidos de bloques:

HEAD_TYPE=0x72 bloque de identificaci�n


HEAD_TYPE=0x73 cabecera de archivo
HEAD_TYPE=0x74 cabecera de fichero
HEAD_TYPE=0x75 estilo antiguo cabecera de comentario
HEAD_TYPE=0x76 estilo antiguo informaci�n de autenticidad
HEAD_TYPE=0x77 estilo antiguo sub-bloque
HEAD_TYPE=0x78 estilo antiguo recuperaci�n de registro
HEAD_TYPE=0x79 estilo antiguo informaci�n de autenticidad
HEAD_TYPE=0x7a sub-bloque

El bloque de comentario es usado actualmente s�lo dentro de otros


bloques y no existe por separado.
El proceso del fichero se realiza de la siguiente forma:

1. Leer y comprobar bloque de identificaci�n


2. Leer cabecera de archivo
3. Leer u omitir HEAD_SIZE- tama�o de(MAIN_HEAD) bytes
4. Si se lleg� al final del archivo entonces acabar el proceso
del archivo, sino, leer 7 bytes en los campos HEAD_CRC,
HEAD_TYPE, HEAD_FLAGS, HEAD_SIZE.
5. Comprobar HEAD_TYPE.
si HEAD_TYPE==0x74
leer cabecera de fichero (los primeros 7 bytes ya han sido le�dos)
leer u omitir HEAD_SIZE- tama�o de(FILE_HEAD) bytes
si (HEAD_FLAGS & 0x100)
leer u omitir HIGH_PACK_SIZE*0x100000000+PACK_SIZE bytes
sino
leer u omitir PACK_SIZE bytes
sino
leer el correspondiente bloque HEAD_TYPE:
leer HEAD_SIZE-7 bytes
si (HEAD_FLAGS & 0x8000)
leer ADD_SIZE bytes
6. ir al punto 4.

==========================================================================
Formato de los bloques
==========================================================================

Bloque de identificaci�n ( MARK_HEAD )

HEAD_CRC Siempre 0x6152


2 bytes

HEAD_TYPE Tipo de bloque: 0x72


1 byte

HEAD_FLAGS Siempre 0x1a21


2 bytes

HEAD_SIZE Tama�o del bloque = 0x0007


2 bytes

El bloque de identificaci�n es actualmente considerado como una


secuencia fija de bytes: 0x52 0x61 0x72 0x21 0x1a 0x07 0x00

Cabecera de archivo ( MAIN_HEAD )

HEAD_CRC CRC de los campos HEAD_TYPE a RESERVED2


2 bytes

HEAD_TYPE Tipo de bloque: 0x73


1 byte

HEAD_FLAGS Peque�as indicaciones:


2 bytes
0x0001 - Atributo de archivo multi-volumen
0x0002 - Comentario de archivo presente
RAR 3.x usa el bloqueo separado del comentario
y no establece esta indicaci�n.

0x0004 - Atributo de bloqueo del archivo


0x0008 - Atributo de archivo s�lido
0x0010 - Nombrar nuevo esquema de volumen ('volname.partN.rar')
0x0020 - Informaci�n de autenticidad presente
RAR 3.x no establece esta indicaci�n.

0x0040 - Registro de recuperaci�n presente


0x0080 - Cabeceras de bloque son codificadas
0x0100 - Primer volumen (s�lo establecido en RAR 3.0 y
posteriores)

los dem�s bits de HEAD_FLAGS est�n reservados para uso interno.

HEAD_SIZE Tama�o total de la cabecera del bloque incluyendo comentarios del


2 bytes archivo

RESERVED1 Reservado
2 bytes

RESERVED2 Reservado
4 bytes

Cabecera de fichero (Fichero en el archivo)

HEAD_CRC CRC de los campos desde HEAD_TYPE a FILEATTR


2 bytes y el nombre del fichero

HEAD_TYPE Tipo de bloque: 0x74


1 byte

HEAD_FLAGS Peque�as indicaciones:


2 bytes
0x01 - El fichero contin�a del volumen anterior
0x02 - El fichero contin�a en el siguiente volumen
0x04 - Fichero protegido con contrase�a

0x08 - Comentario de fichero presente


RAR 3.x usa el bloqueo separado del comentario
y no establece esta indicaci�n.
0x10 - Se usa informaci�n del fichero anterior
(indicador de archivo s�lido), para RAR
2.00 y posteriores

Bits 7 6 5 (RAR 2.0 y posteriores)

0 0 0 - diccionario de 64 Kb
0 0 1 - diccionario de 128 Kb
0 1 0 - diccionario de 256 Kb
0 1 1 - diccionario de 512 Kb
1 0 0 - diccionario de 1024 Kb
1 0 1 - diccionario de 2048 KB
1 1 0 - diccionario de 4096 KB
1 1 1 - el fichero es un directorio

0x100 - Campos HIGH_PACK_SIZE y HIGH_UNP_SIZE


est�n presentes. Estos campos son s�lo usados por el
archivo para ficheros enormes (m�s grandes de 2Gb),
para ficheros peque�os estos campos est�n ausentes.

0x200 - FILE_NAME contiene ambos nombres, el Unicode habitual


y el codificado, separados por un cero. En este caso si
el campo NAME_SIZE es igual a la longitud habitual el
nombre m�s el nombre codificado Unicode m�s 1

Si esta indicaci�n est� presente, pero FILE_NAME


difiere de cero bytes, Quiere decir que el nombre
del fichero est� codificado usando UTF-8.

0x400 - La cabecera contiene 8 bytes adicionales despu�s del


nombre del fichero, cuando es requerido para incrementar
la seguridad de codificaci�n (tambi�n llamado 'salt').

0x800 - Indicaci�n de versi�n. Si es fichero de una antigua


versi�n,
se a�ade al fichero un n�mero de versi�n llamado ';n'.

0x1000 - campo de extensi�n de tiempo presente.

0x8000 - este bit siempre es determinado, debido a que el tama�o


total del bloque es HEAD_SIZE + PACK_SIZE
(y m�s HIGH_PACK_SIZE, si bit 0x100 est� determinado)

HEAD_SIZE Tama�o total del bloque incluyendo el nombre del


2 bytes fichero y comentarios.

PACK_SIZE Tama�o del fichero comprimido


4 bytes

UNP_SIZE Tama�o del fichero sin comprimir


4 bytes

HOST_OS Sistema operativo usado para comprimir el archivo


1 byte 0 - MS DOS
1 - OS/2
2 - Win32
3 - Unix
4 - Mac OS
5 - BeOS

FILE_CRC CRC del fichero


4 bytes

FTIME Fecha y hora en formato est�ndar MS DOS


4 bytes

UNP_VER Versi�n de RAR necesaria para extraer el fichero


1 byte
La versi�n necesaria para la extracci�n est�codificada
como 10 * versi�n mayor + versi�n menor.

METHOD M�todo de compresi�n


1 byte
0x30 - sin comprimir
0x31 - compresi�n muy r�pida
0x32 - compresi�n r�pida
0x33 - compresi�n normal
0x34 - buena compresi�n
0x35 - la mejor compresi�n

NAME_SIZE Tama�o del nombre de fichero


2 bytes

ATTR Atributos del fichero


4 bytes

HIGH_PACK_SIZE Valor de tama�o 64 bits para fichero comprimido mayor de 4 bytes.


4 bytes Valor opcional, presente s�lo si bit 0x100 en HEAD_FLAGS est�
determinado.

HIGH_UNP_SIZE Valor de tama�o 64 bits para fichero descomprimido mayor de 4


bytes.
4 bytes Valor opcional, presente s�lo si bit 0x100 en HEAD_FLAGS est�
determinado.

FILE_NAME Nombre del fichero - cadena de longitud NAME_SIZE bytes

SALT presente si (HEAD_FLAGS & 0x400) != 0


8 bytes

EXT_TIME presente si (HEAD_FLAGS & 0x1000) != 0


tama�o variable

otros nuevos campos se pueden a�adir aqu�.

==========================================================================
Notas para aplicaciones
==========================================================================

1. Para procesar archivos SFX es necesario omitir el m�dulo SFX,


buscando el bloque de identificaci�n en el archivo. No hay ninguna
secuencia de identificaci�n (0x52 0x61 0x72 0x21 0x1a 0x07 0x00) en
el m�dulo SFX.

2. El CRC se calcula usando el polinomio est�ndar 0xEDB88320. En el


caso de que el tama�o del CRC sea menor de 4 bytes, s�lo los bytes
de orden m�s bajo ser�n usados.

Вам также может понравиться