O que significa “magic tests” para o comando file?

20

Eu estava lendo sobre o comando file e me deparei com algo que não entendi bem:

file is designed to determine the kind of file being queried.... file accomplishes this by performing three sets of tests on the file in question:

  • filesystem tests,
  • magic tests,
  • language tests

O que são testes magic ?

    
por Abdennour TOUMI 21.06.2014 / 12:24

2 respostas

15

Isso se refere aos "bytes mágicos" que muitos formatos de arquivo têm no início de um arquivo que mostram que tipo de arquivo é esse.

Por exemplo Se um arquivo começar com #! , ele será considerado um script.

    
por 21.06.2014 / 12:30
28

"mágica" aqui se refere a " números mágicos ": um valor especial que está em um lugar conhecido em um arquivo que identifica seu tipo. O comando file possui um banco de dados desses números e a que tipo eles correspondem. A biblioteca que acompanha esse banco de dados é chamada libmagic , e você pode acessá-la a partir dos seus próprios programas.

Eles não são necessariamente "números" como podemos pensar neles. Por exemplo, um arquivo de imagem PNG sempre começa com "\ x89PNG \ r \ n \ x1a \ n", uma classe Java começa com os quatro bytes (em hexadecimal) CA FE BA BE e um arquivo HTML tem "< html" em algum lugar perto do começo. É apenas uma pequena sequência de dados que está em um arquivo desse tipo, geralmente muito próximo do início.

Quando as pessoas estão definindo formatos de arquivo, elas geralmente incluem uma delas deliberadamente ou apenas como parte do ajuste do formato. file pode usá-los depois. Ele também tem outras maneiras de realmente olhar o conteúdo do arquivo para adivinhar o que é ("testes de linguagem").

    
por 21.06.2014 / 12:36