Está en la página 1de 6

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 HEAD_TYPE 1 byte HEAD_FLAGS 2 bytes HEAD_SIZE 2 bytes Siempre 0x6152 Tipo de bloque: 0x72 Siempre 0x1a21 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 HEAD_TYPE 1 byte HEAD_FLAGS 2 bytes CRC de los campos HEAD_TYPE a RESERVED2 Tipo de bloque: 0x73 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 ') 0x0020 0x0040 0x0080 0x0100 res)

- Atributo de bloqueo del archivo - Atributo de archivo slido - Nombrar nuevo esquema de volumen ('volname.partN.rar - Informacin de autenticidad presente RAR 3.x no establece esta indicacin. - Registro de recuperacin presente - Cabeceras de bloque son codificadas - Primer volumen (slo establecido en RAR 3.0 y posterio

los dems bits de HEAD_FLAGS estn reservados para uso interno. HEAD_SIZE 2 bytes RESERVED1 2 bytes RESERVED2 4 bytes Tamao total de la cabecera del bloque incluyendo comentarios del archivo Reservado Reservado

Cabecera de fichero (Fichero en el archivo) HEAD_CRC 2 bytes HEAD_TYPE 1 byte HEAD_FLAGS 2 bytes CRC de los campos desde HEAD_TYPE a FILEATTR y el nombre del fichero Tipo de bloque: 0x74 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 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 diccionario de 64 Kb diccionario de 128 Kb diccionario de 256 Kb diccionario de 512 Kb diccionario de 1024 Kb diccionario de 2048 KB diccionario de 4096 KB 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 PACK_SIZE 4 bytes UNP_SIZE 4 bytes HOST_OS 1 byte Tamao total del bloque incluyendo el nombre del fichero y comentarios. Tamao del fichero comprimido Tamao del fichero sin comprimir Sistema 0 1 2 3 4 5 operativo usado para comprimir el archivo - MS DOS - OS/2 - Windows - Unix - Mac OS - BeOS

FILE_CRC 4 bytes FTIME 4 bytes

CRC del fichero Fecha y hora en formato estndar MS DOS Bits 0-4 5-10 11-15 16-20 21-24 25-31 Descripcin Segundos divididos por 2 Minutos (0-59) Hora (0-23) Dia del mes (1-31) Mes (1=Enero, ...) Aos transcurridos desde 1980

UNP_VER 1 byte

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 ATTR 4 bytes

Tamao del nombre de fichero 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 Valor opcional, presente slo si bit 0x100 en HEAD_FLAGS est determinado. Nombre del fichero - cadena de longitud NAME_SIZE bytes presente si (HEAD_FLAGS & 0x400) != 0

FILE_NAME SALT 8 bytes

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.

También podría gustarte