Comando de arquivo mais sofisticado para inspeção profunda?

5

Às vezes parece que o padrão file command (5.04 no meu sistema Ubuntu) não é sofisticado o suficiente (ou estou apenas usando errado, o que bem poderia ser).

Por exemplo, quando eu o executo em um arquivo .exe , e tenho certeza de que ele contém algum arquivo, eu esperaria uma saída como essa:

$ improved-file foo.exe
foo.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
         .zip archive included (just use unzip to extract)

Outras questões:

  • Ele não detecta concatenações de diferentes formatos
  • Ele não detecta formatos de arquivo comuns, por exemplo, .epub, que é apenas um contêiner .zip com alguns arquivos .xml padronizados, etc. dentro ( file exibe 'data')

Um exemplo desse arquivo .exe que contém um arquivo - adivinhei formatos de arquivo e tentei os comandos de descompactação correspondentes com uma abordagem trial'n'error - que funcionou no final - mas prefiro um fluxo de trabalho mais orientado para auto-inspeção.

    
por maxschlepzig 07.09.2011 / 00:30

2 respostas

5

Não consigo pensar em uma ferramenta completa, mas há programas que podem lidar com uma grande variedade de arquivos de uma determinada categoria.

Por exemplo, p7zip reconhece um grande número de formatos de arquivo, por isso, se você suspeitar que um arquivo é um arquivo, tente executar 7z l .

$ 7z l ta12b563enu.exe
…
Type = Cab
Method = MSZip
…

Se você suspeitar que um arquivo é uma imagem, tente ImageMagick .

$ identify keyboard.jpg.gz
keyboard.jpg.gz=>/tmp/magick-XXV8aR5R JPEG 639x426 639x426+0+0 8-bit DirectClass 37.5KB 0.000u 0:00.000

Para arquivos de áudio ou vídeo, tente mplayer -identify -frames 0 .

Se você encontrar um arquivo que file não consiga identificar, faça uma solicitação de recurso para o autor de sua biblioteca mágica .

    
por 07.09.2011 / 02:22
6

Não há nada errado com file . Ele está fazendo exatamente o que deveria estar fazendo: examinando o arquivo com base nas regras do arquivo magic(5) . Se você deseja criar uma maneira genérica de identificar esses tipos de arquivos, é possível enviar novas regras mágicas. Leia a página de manual para magic para mais informações.

Uma coisa que eu duvido que file faça é "detectar concatenações". Não há como determinar quando o próximo segmento seria iniciado sem verificar cada byte no arquivo - algo que file não faz ou deseja fazer.

Incidentalmente, para distinguir um arquivo epub, você precisaria detectar a diferença entre ele e um arquivo ear, que usa a mesma estrutura básica.

    
por 07.09.2011 / 01:58