binary - texto - tipos de archivos y extensiones en informatica
¿Cómo detectar el tipo de compresión utilizada en el archivo?(si no se especifica una extensión de archivo) (3)
¿Cómo se puede detectar el tipo de compresión utilizada en el archivo? (suponiendo que .zip, .gz, .xz o cualquier otra extensión no está especificada).
¿Está esta información almacenada en alguna parte del encabezado de ese archivo?
Como alternativa a inspeccionar el encabezado del archivo a mano, puede usar alguna utilidad como TrID. El enlace apunta a la versión de línea de comando multiplataforma; para Windows también hay una GUI.
Puede determinar que es probable que sea uno de esos formatos al observar los primeros bytes. Luego debe probar para ver si realmente es uno de esos, usando una verificación de integridad de la utilidad asociada para ese formato, o procediendo a descomprimir.
Puede encontrar los formatos de encabezado en las descripciones:
- La descripción del formato Zip (.zip) comienza con 0x50, 0x4b, 0x03, 0x04 (a menos que esté vacío, y los últimos dos son 0x05, 0x06 o 0x06, 0x06)
- La descripción del formato Gzip (.gz) comienza con 0x1f, 0x8b, 0x08
- Descripción del formato xz (.xz) , comienza con 0xfd, 0x37, 0x7a, 0x58, 0x5a, 0x00
Otros:
- La descripción de formato zlib (.zz) comienza con dos bytes (en bits) 0aaa1000 bbbccccc, donde se elige ccccc de modo que el primer byte visto como int16 multiplicado por 256 más el segundo byte visto como int16 es un múltiplo de 31. Por ejemplo: 01111000 (bits) = 120 (int16), 10011100 (bits) = 156 (int16), 120 * 256 + 156 = 30876 que es un múltiplo de 31
- compress (.Z) comienza con 0x1f, 0x9d
- bzip2 (.bz2) comienza con 0x42, 0x5a, 0x68
Si está en una caja Linux, simplemente use el comando ''file''.
http://en.wikipedia.org/wiki/File_(command)
$ mv foo.zip dink
$ file dink
dink: gzip compressed data, from Unix, last modified: Sat Aug 6 08:08:57 2011,
max compression
$