You are on page 1of 6

cscsvdsvvdsvx

xzvxvzxzvxvsdv
RAR version 4.01 - Informacin Tcnica
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EL FORMATO DE ARCHIVO DESCRITO A CONTINUACION ES VLIDO SOLO PARA VERSIONES
POSTERIORES A LA 1.50
==========================================================================
Formato de los ficheros RAR
==========================================================================
Los ficheros estn constituidos por bloques de longitud variable. El
orden de estos bloques puede variar, pero el primer bloque debe ser
siempre un bloque de identificacin seguido de un bloque de cabecera de
archivo.
Cada bloque empieza con los siguientes campos:
HEAD_CRC
HEAD_TYPE
HEAD_FLAGS
HEAD_SIZE
ADD_SIZE

2
1
2
2
4

bytes
byte
bytes
bytes
bytes

CRC total o parcial del bloque


Tipo de bloque
Indicaciones del bloque
Tamao del bloque
Tamao del campo adicional - tamao aadido del bloque

El campo ADD_SIZE slo est presente si (HEAD_FLAGS & 0x8000) != 0


El tamao 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 ignorarn el
bloque y lo borrarn cuando el archivo sea actualizado.
Si est a cero, el bloque es copiado al nuevo archivo
cuando el archivo es actualizado.
0x8000 - Si estactivado, el campo ADD_SIZE estpresente y el
tamao total del bloque es HEAD_SIZE+ADD_SIZE.
Tipos vlidos de bloques:
HEAD_TYPE=0x72
HEAD_TYPE=0x73
HEAD_TYPE=0x74
HEAD_TYPE=0x75
HEAD_TYPE=0x76
HEAD_TYPE=0x77
HEAD_TYPE=0x78
HEAD_TYPE=0x79
HEAD_TYPE=0x7a

bloque de identificacin
cabecera de archivo
cabecera de fichero
estilo antiguo cabecera de comentario
estilo antiguo informacin de autenticidad
estilo antiguo sub-bloque
estilo antiguo recuperacin de registro
estilo antiguo informacin de autenticidad
sub-bloque

El bloque de comentario es usado actualmente slo dentro de otros


bloques y no existe por separado.

El proceso del fichero se realiza de la siguiente forma:


1.
2.
3.
4.

Leer y comprobar bloque de identificacin


Leer cabecera de archivo
Leer u omitir HEAD_SIZE- tamao de(MAIN_HEAD) bytes
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 ledos)
leer u omitir HEAD_SIZE- tamao 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 identificacin ( MARK_HEAD )
HEAD_CRC
2 bytes

Siempre 0x6152

HEAD_TYPE
1 byte

Tipo de bloque: 0x72

HEAD_FLAGS
2 bytes

Siempre 0x1a21

HEAD_SIZE
2 bytes

Tamao del bloque = 0x0007

El bloque de identificacin es actualmente considerado como una


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

Cabecera de archivo ( MAIN_HEAD )


HEAD_CRC
2 bytes

CRC de los campos HEAD_TYPE a RESERVED2

HEAD_TYPE
1 byte

Tipo de bloque: 0x73

HEAD_FLAGS
2 bytes

Pequeas indicaciones:
0x0001
0x0002

- Atributo de archivo multi-volumen


- Comentario de archivo presente

RAR 3.x usa el bloqueo separado del comentario


y no establece esta indicacin.
0x0004
0x0008
0x0010

- Atributo de bloqueo del archivo


- Atributo de archivo slido
- Nombrar nuevo esquema de volumen ('volname.partN.rar

0x0020

- Informacin de autenticidad presente


RAR 3.x no establece esta indicacin.

0x0040
0x0080
0x0100

- Registro de recuperacin presente


- Cabeceras de bloque son codificadas
- Primer volumen (slo establecido en RAR 3.0 y posterio

')

res)
los dems bits de HEAD_FLAGS estn reservados para uso interno.
HEAD_SIZE
2 bytes

Tamao total de la cabecera del bloque incluyendo comentarios del


archivo

RESERVED1
2 bytes

Reservado

RESERVED2
4 bytes

Reservado

Cabecera de fichero (Fichero en el archivo)


HEAD_CRC
2 bytes

CRC de los campos desde HEAD_TYPE a FILEATTR


y el nombre del fichero

HEAD_TYPE
1 byte

Tipo de bloque: 0x74

HEAD_FLAGS
2 bytes

Pequeas indicaciones:
0x01 - El fichero contina del volumen anterior
0x02 - El fichero contina en el siguiente volumen
0x04 - Fichero protegido con contrasea
0x08 - Comentario de fichero presente
RAR 3.x usa el bloqueo separado del comentario
y no establece esta indicacin.
0x10 - Se usa informacin del fichero anterior
(indicador de archivo slido), para RAR
2.00 y posteriores
Bits 7 6 5 (RAR 2.0 y posteriores)
0
0
0
0
1
1
1

0
0
1
1
0
0
1

0
1
0
1
0
1
0

diccionario
diccionario
diccionario
diccionario
diccionario
diccionario
diccionario

de
de
de
de
de
de
de

64
128
256
512
1024
2048
4096

Kb
Kb
Kb
Kb
Kb
KB
KB

1 1 1 - el fichero es un directorio
0x100 - Campos HIGH_PACK_SIZE y HIGH_UNP_SIZE
estn presentes. Estos campos son slo usados por el
archivo para ficheros enormes (ms grandes de 2Gb),
para ficheros pequeos estos campos estn 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 ms el nombre codificado Unicode ms 1
Si esta indicacin 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 despus del
nombre del fichero, cuando es requerido para incrementar
la seguridad de codificacin (tambin llamado 'salt').
0x800 - Indicacin de versin. Si es fichero de una antigua versin,
se aade al fichero un nmero de versin llamado ';n'.
0x1000 - campo de extensin de tiempo presente.
0x8000 - este bit siempre es determinado, debido a que el tamao
total del bloque es HEAD_SIZE + PACK_SIZE
(y ms HIGH_PACK_SIZE, si bit 0x100 est determinado)
HEAD_SIZE
2 bytes

Tamao total del bloque incluyendo el nombre del


fichero y comentarios.

PACK_SIZE
4 bytes

Tamao del fichero comprimido

UNP_SIZE
4 bytes

Tamao del fichero sin comprimir

HOST_OS
1 byte

Sistema
0
1
2
3
4
5

FILE_CRC
4 bytes

CRC del fichero

FTIME
4 bytes

Fecha y hora en formato estndar MS DOS

operativo usado para comprimir el archivo


- MS DOS
- OS/2
- Windows
- Unix
- Mac OS
- BeOS

Bits

Descripcin

0-4
5-10
11-15

Segundos divididos por 2


Minutos (0-59)
Hora (0-23)

16-20

Dia del mes (1-31)

21-24
25-31
UNP_VER
1 byte

Mes (1=Enero, ...)


Aos transcurridos desde 1980

Versin de RAR necesaria para extraer el fichero


La versin necesaria para la extraccin estcodificada
como 10 * versin mayor + versin menor.

METHOD
1 byte

Mtodo de compresin
0x30
0x31
0x32
0x33
0x34
0x35

sin comprimir
compresin muy rpida
compresin rpida
compresin normal
buena compresin
la mejor compresin

NAME_SIZE
2 bytes

Tamao del nombre de fichero

ATTR
4 bytes

Atributos del fichero

HIGH_PACK_SIZE Valor de tamao 64 bits para fichero comprimido mayor de 4 bytes.


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

Valor de tamao 64 bits para fichero descomprimido mayor de 4 byte

FILE_NAME

Nombre del fichero - cadena de longitud NAME_SIZE bytes

SALT
8 bytes

presente si (HEAD_FLAGS & 0x400) != 0

Valor opcional, presente slo si bit 0x100 en HEAD_FLAGS est


determinado.

EXT_TIME
presente si (HEAD_FLAGS & 0x1000) != 0
tamao variable
otros nuevos campos se pueden aadir aqu.
==========================================================================
Notas para aplicaciones
==========================================================================
1. Para procesar archivos SFX es necesario omitir el mdulo SFX,
buscando el bloque de identificacin en el archivo. No hay ninguna
secuencia de identificacin (0x52 0x61 0x72 0x21 0x1a 0x07 0x00) en
el mdulo SFX.
2. El CRC se calcula usando el polinomio estndar 0xEDB88320. En el
caso de que el tamao del CRC sea menor de 4 bytes, slo los bytes
de orden ms bajo sern usados.

You might also like