Domanda

Ho letto che i file ZIP iniziano con i seguenti byte:

50 4B 03 04

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

Domanda: C'è una certa sequenza di byte che indicano un file ZIP è stato protetto da password

È stato utile?

Soluzione

Non è vero che i file ZIP devono iniziare con

50 4B 03 04

voci nel file zip Iniziamo con 50 4B 03 04... ..e spesso, i file zip puri iniziano con una voce di cerniera come la prima cosa nel file. Ma, non v'è alcun obbligo che zip file iniziare con quei byte. Tutti i file che iniziano con quei byte sono probabilmente file zip, ma non tutti i file zip Iniziamo con quei byte.

Ad esempio, è possibile creare un archivio autoestraente che è un file PE-COFF, un EXE regolare, in cui non ci realtà è una firma per il file, che è 4D 5A .... Poi, più avanti nel file exe, è possibile memorizzare le voci di avviamento postale, a cominciare da 50 4B 03 04.... Il file è sia un .exe e .zip.

Un archivio autoestraente non è l'unica classe di file zip che non inizia con 50 4B 03 04. È possibile "nascondere" i dati arbitrari in un file zip in questo modo. WinZip e altri strumenti non dovrebbero avere problemi a leggere un file zip formattato in questo modo.

Se si trova la firma 50 4B 03 04 all'interno di un file, sia all'inizio del file o da qualche altra parte, si può guardare ai prossimi pochi byte per determinare se quella voce particolare è crittografato. Normalmente simile a questa:

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

I primi quattro byte sono la firma di entrata. I prossimi due byte sono la "versione necessaria per estrarre". In questo caso è 0x0014, che è 20. Secondo le specifiche PKWARE, che significa la versione 2.0 delle specifiche pkzip è necessaria per estrarre la voce. (L'ultima chiusura lampo "caratteristica" utilizzata dalla voce viene descritta da v2.0 delle specifiche). È possibile trovare i numeri più alti lì, se si utilizzano funzioni più avanzate nel file zip. crittografia AES richiede v5.1 delle specifiche, quindi si dovrebbe trovare 0x0033 in quel colpo di testa. (Non tutti gli strumenti zip rispettano questa).

I successivi 2 byte rappresenta la bandiera generale bit scopo (spec chiama "bit flag" anche se è un campo di bit ), in questo caso 0x0001. Questo ha bit 0 set, che indica che la voce è crittografato.

Gli altri bit che bandiera bit hanno un significato e possono anche essere impostati. Per esempio il bit 6 indica che la crittografia forte è stato utilizzato - AES o qualche altro crittografia forte. Bit 11 dice che la voce utilizza la codifica UTF-8 per il nome del file e il commento.

Tutte queste informazioni sono disponibili nel PKWare AppNote.txt spec .

Altri suggerimenti

E 'alla base i file all'interno dell'archivio zip che sono protetti da password. Si può avere una serie di protetti da password e password file non protetti in un archivio (ad esempio un file readme e poi il contenuto).

Se avete seguito i link che descrivono file ZIP nella URL voi riferimento, che si può trovare che rel="nofollow questo uno discute il bit che indica se un file in archivio ZIP è crittografato o meno. Sembra che ogni file nell'archivio può essere criptato o meno in modo indipendente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top