PDA

Ver la versión completa : Reparar ZIP dañado ?



Esperpentor
04-02-2009, 02:41
Saludos,

E estado buscando por Google y solo encontre pocas cosas que no me ayudaron en realidad.

Sucede que neceto reparar un Fichero ZIP que segun e visto le han borrado parte de la cabecera, me imagino con un editor hexadecimal.

Necesito manuales o unas guias para comprender el formato ZIP para poder reparalo, ya que es parte de un reto.

No se si sea correcto pedir ayuda asi, pero no pido que me lo resuelvan, sino quiero aprender a hacerlo yo mismo.

hystd
04-02-2009, 03:30
Tenía buena información sobre la estructura de los ficheros .zip, pero no la encuentro (y no tengo mucho tiempo en este momento para buscarla...:)), pero bueno te dejo un enlace que por lo menos te puede servir para introducirte y ya ir buscando por google las cosas más específicas de lo que significa cada zona:

http://www.pkware.com/documents/casestudies/APPNOTE.TXT

Cuando vas a estudiar un formato de fichero específico, sea .zip, .rar, .exe, .gif, .jpg, o .loquesea, lo mejor es tener un documento parecido al que te muestro y un editor hex. a mano. La forma de proceder es crearte varios ficheros del tipo que vayas a estudiar y compararlos según las propiedades que les hayas asignado.

Así, para el caso de .zip, te recomiendo que te crees varios casos... Por ejemplo:

1º Coprimir un sólo fichero de texto plano vacío, de tamaño 0 bytes, y de nombre a.txt utilizando una compresión determinada.

2º Comprimir un sólo fichero de texto plano, de tamaño 5 bytes, con una cadena específica de 5 caracteres (cada caracter es 1 byte), del mismo nombre que el anterior, utilizando el mismo tipo de compresión que el anterior.

3º El mismo caso que 2º, pero cambiando el nombre del fichero por otro de mayor longitud, por ejemplo aaaaa.txt.

4º Comprimir dos ficheros vacíos, a.txt y b.txt utilizando las mismas características que en el caso 1º.

5º Comprimir dos ficheros, uno vacío a.txt, y otro b.txt de 5 bytes, con las mismas caracterísitcas que 1º.

6º Hacer combinaciones de los casos 1º-5º, pero utilizando distintos métodos de compresión y variando la longitud de los nombres de los ficheros comprimidos.

7º Comprimir un fichero con otro tipo de extensión, por ejemplo un .bmp de tamaño 1 pixel y una profundidad de color determinada.

8º Hacer combinaciones de todos los casos, pero añadiendo otras características al zip, como por ejemplo proteccion con password. (De paso observa lo que ocurre cuando varías la contraseña para un mismo .zip).

y un largo etc... de casos...

A medida que lo haces, comprueba la similitud y los valores que van tomando las cabeceras, comparando byte a byte cada fichero. Así comprobarás por ejemplo, que valor específico toma cada byte o grupo de ellos al incorporar o no cierta característica.

Otra cuestión añadida, es que si te has descargado el .zip de algún sitio y necesitas comprobar que dicho fichero es correcto y no ha sido modificado es comprobar su checksum (si dispones del MD5 original).

Un saludo y suerte.

Esperpentor
04-02-2009, 21:10
Muchas grasias por la info, tengo mucho trabajo ahora :D