Pregunta

He leído que los archivos ZIP comienzan con los siguientes bytes:

50 4B 03 04

Referencia: http://www.garykessler.net/library/file_sigs.html

Pregunta: ¿Hay una cierta secuencia de bytes que indican un archivo ZIP ha sido protegido por contraseña

¿Fue útil?

Solución

No es cierto que los archivos ZIP deben comenzar con

50 4B 03 04

Las entradas en los archivos zip empezar con 50 4B 03 04... ..y menudo, archivos zip puras comienzan con una cremallera de que el primero que en el archivo. Sin embargo, no hay ningún requisito de que los archivos zip comenzar con esos bytes. Todos los archivos que comienzan con esas bytes son probablemente archivos zip, pero no todos los archivos zip empezar con esos bytes.

Por ejemplo, puede crear un archivo de extracción, que es un archivo PE-COFF, un EXE regular, en la que hay realmente es una firma para el archivo, que es 4D 5A .... Luego, más tarde en el archivo ejecutable, puede almacenar entradas zip, comenzando con 50 4B 03 04.... El archivo es a la vez un .exe y .zip.

Un archivo de extracción no es la única clase de archivo zip que no se inicia con 50 4B 03 04. Se puede "ocultar" datos arbitrarias en un archivo zip de esta manera. WinZip y otras herramientas no debería tener problemas para leer un archivo zip con formato de esta manera.

Si encuentra la firma 50 4B 03 04 dentro de un archivo, ya sea al comienzo del archivo o en otro lugar, se puede ver en los próximos pocos bytes para determinar si esa entrada en particular está encriptada. Normalmente se ve algo como esto:

50 4B 03 04 14 00 01 00 08 00 ... 

Los primeros cuatro bytes son la firma de entrada. Los dos bytes siguientes son la "versión necesaria para extraer". En este caso, es 0x0014, que es 20. De acuerdo con la especificación PKWARE, eso significa que la versión 2.0 de la especificación pkzip se requiere para extraer la entrada. (La última "característica" zip utilizado por la entrada es descrito por v2.0 de la especificación). Puede encontrar los números más altos allí si se utilizan más funciones avanzadas en el archivo zip. encriptación AES requiere v5.1 de la especificación, por lo tanto, usted debe encontrar 0x0033 en esa cabecera. (No todas las herramientas zip respetan esta).

Los siguientes 2 bytes representan la bandera en general poco efecto (la especificación lo llama un "indicador de bits" a pesar de que es un campo de bits ), en este caso 0x0001. Esto tiene conjunto de bits 0, lo que indica que la entrada está cifrada.

Otros bits en que bandera de bits tienen un significado y también se pueden ajustar. Por ejemplo bit 6 indica que se utilizó el cifrado fuerte - ya sea AES o algún otro cifrado fuerte. Bit 11 dice que la entrada utiliza codificación UTF-8 para el nombre de archivo y el comentario.

Toda esta información está disponible en el PKWare AppNote.txt especificación .

Otros consejos

Es archivos dentro del archivo zip que están protegidos por contraseña subyacente. Usted puede tener una serie de protegidos por contraseña y la contraseña de archivos no protegidos en un archivo (por ejemplo, un archivo readme y luego los contenidos).

Si ha seguido los enlaces que describen los archivos ZIP en la URL usted referencia, que iba a encontrar que éste discute el bit que indica si un archivo en el archivo ZIP está encriptada o no. Parece que cada archivo en el archivo se puede cifrar o no de forma independiente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top