Co oznaczają „testy magiczne” dla polecenia pliku?

20

Czytałem o filepoleceniu i natrafiłem na coś, czego nie do końca rozumiem:

plik ma na celu określenie rodzaju pliku, do którego następuje zapytanie ... plik osiąga to poprzez wykonanie trzech zestawów testów na danym pliku:

  • testy systemu plików,
  • testy magiczne ,
  • testy językowe

Co to są testy magiczne ?

Abdennour TOUMI
źródło

Odpowiedzi:

15

Odnosi się to do „magicznych bajtów”, które wiele formatów plików ma na początku pliku, które pokazują, jaki to plik.

Np. Jeśli plik zaczyna się od, #!to jest uważany za skrypt.

Hauke ​​Laging
źródło
28

„magia” odnosi się tutaj do „ magicznych liczb ”: specjalnej wartości, która znajduje się w znanym miejscu w pliku, identyfikującym jego typ. fileKomenda posiada bazę tych numerów i jakie one odpowiadają. Biblioteka dołączona do tej bazy danych nosi nazwę libmagic i można uzyskać do niej dostęp z własnych programów.

Niekoniecznie są to „liczby”, jak moglibyśmy o nich myśleć. Na przykład plik obrazu PNG zawsze zaczyna się od „\ x89PNG \ r \ n \ x1a \ n”, klasa Java zaczyna się od czterech bajtów (w systemie szesnastkowym) CA FE BA BE, a plik HTML ma gdzieś „<html” blisko początku. To tylko niewielka sekwencja danych, o której wiadomo, że znajduje się w pliku tego typu, zwykle bardzo blisko początku.

Kiedy ludzie definiują formaty plików, często zawierają jeden z nich celowo lub po prostu w celu dopasowania formatu do siebie. filemogą z nich później korzystać. Ma także inne sposoby przeglądania zawartości pliku, aby zgadnąć, co to jest („testy językowe”).

Michael Homer
źródło
6
Zauważ, że początkowo „magiczne liczby” były w szczególności pierwszymi dwoma bajtami pliku wykonywalnego, używanymi przez jądro do załadowania go w odpowiedni sposób. #!jest właściwie przykładem tego, ponieważ samo jądro, po zobaczeniu tych bajtów, powinno wywołać następującą komendę.
IMSoP