Como posso criar um arquivo zip v1.0?

0

Como posso criar um arquivo zip v1.0 para que, quando executado em file , retorne

Zip archive data, at least v1.0 to extract

Quando eu crio um arquivo zip com o utilitário de linha de comando zip ou o Xarchiver, file retorna

Zip archive data, at least v2.0 to extract
    
por Billy 26.09.2018 / 23:51

3 respostas

4

Você pode criar arquivos ZIP da versão 1 usando o zip 1.1 do Info-zip, que ainda está disponível (download zip11.zip ). Você precisará criá-lo a partir da fonte ( make sysv em um sistema Linux); então você poderá usar o zip recém-criado para criar arquivos antigos:

$ ./zip -9 test.zip zip.c
adding zip.c (imploded 70%)
$ file test.zip
test.zip: Zip archive data, at least v1.0 to extract
$ unzip -v test.zip
Archive:  test.zip
 Length   Method    Size  Cmpr    Date    Time   CRC-32   Name
--------  ------  ------- ---- ---------- ----- --------  ----
   25825  Implode    7749  70% 10-21-1991 13:33 e1f47bfc  zip.c
--------          -------  ---                            -------
   25825             7749  70%                            1 file

Isso usa os algoritmos de "implodir" ou "encolher" para compactação (usa o que for melhor com qualquer arquivo fornecido), em vez do algoritmo "deflacionar" usado na versão 2 do formato.

    
por 27.09.2018 / 00:05
1

Parece que o utilitário zip v2.0 foi o primeiro a suportar a compactação. Arquivos compactados que exigem "pelo menos v1.0 para extrair" podem ser criados passando -0 (sem compactação) para o utilitário zip .

    
por 27.09.2018 / 00:01
-1

Você pode modificar diretamente o byte mágico do arquivo zip que o identifica como um arquivo zip v2.0:

$ file foo.zip
foo.zip: Zip archive data, at least v2.0 to extract
$ printf '\x0a' | dd of=foo.zip bs=1 seek=4 count=1 conv=notrunc
1+0 records in
1+0 records out
1 byte copied, 9.7214e-05 s, 10.3 kB/s
$ file foo.zip
foo.zip: Zip archive data, at least v1.0 to extract
$ 

Eu descobri que o valor do byte (0x0a) e a localização (4 bytes) mudam procurando a fonte para file :

$ apt-get source file
$ grep -R 'at least v1.0'
file-5.30/magic/Magdir/archive:>>>4     byte            0x0a            \b, at least v1.0 to extract

Você pode corromper seu arquivo zip, mas file relatará o que você deseja.

    
por 27.09.2018 / 00:15

Tags