Słownik

Czym jest surowy nagłówek pliku?

Surowy nagłówek pokazuje pierwsze bajty pliku jako liczby szesnastkowe. Te bajty ujawniają rzeczywisty typ pliku, a wiele z nich możesz odczytać jako tekst.

raw-header

Surowy nagłówek to pierwsza część pliku, pokazana bajt po bajcie zamiast jako nazwane pola metadanych. Wiele formatów plików zaczyna się od stałego wzorca bajtów, często nazywanego sygnaturą lub magicznym numerem. Programy odczytują ten wzorzec, aby dowiedzieć się, jakiego rodzaju jest to plik.

W raporcie metadanych pole Nagłówek surowy pokazuje te bajty jako liczby szesnastkowe. Każda para znaków, taka jak 89 lub FF, oznacza 1 bajt.

E-mail również ma sekcję nagłówka u góry, z polami takimi jak From, To i Subject. Ten artykuł omawia nagłówek pliku.

Jak wygląda ta wartość

System szesnastkowy, czyli baza 16, zapisuje każdy bajt jako 2 znaki z cyfr 0-9 i liter A-F. Bajt może więc mieć dowolną wartość od 00 do FF.

W kodowaniu znaków ASCII wartości od 21 do 7E oznaczają litery, cyfry i znaki interpunkcyjne, a 20 oznacza spację. Wartości poniżej 20 to kody sterujące, a 00 to znak ze wszystkimi zerami, zwany NUL.

Jak odczytać surowy nagłówek jako tekst

Aby zamienić surowy nagłówek na tekst, wyszukaj każdy bajt w tabeli ASCII. Tylko bajty od 20 do 7E oznaczają widoczny znak ASCII lub spację. Inne bajty takiego znaku nie oznaczają, więc często da się odczytać tylko część nagłówka.

  • 25 50 44 46 2D oznacza znak procenta, litery PDF i łącznik.
  • 89 50 4E 47 zawiera litery PNG w bajtach od 2 do 4.

Typowe wartości

Typowe formaty zaczynają się od takich sygnatur:

  • Obraz PNG: 89 50 4E 47 0D 0A 1A 0A
  • Obraz JPEG: FF D8 FF, gdzie FF D8 oznacza początek obrazu
  • Obraz GIF: 47 49 46 38, potem 39 61 lub 37 61 (GIF89a lub GIF87a)
  • Dokument PDF: 25 50 44 46 2D, potem wersja, na przykład 1.7
  • Obraz TIFF, little-endian: 49 49 2A 00 (II, potem liczba 42)
  • Obraz TIFF, big-endian: 4D 4D 00 2A (MM, potem liczba 42)
  • Archiwum ZIP i pliki Office oparte na ZIP, takie jak DOCX: 50 4B 03 04 (PK)
  • Audio MP3 ze znacznikiem ID3v2: 49 44 33 (ID3)
  • Audio WAV: 52 49 46 46 (RIFF), 4 zmienne bajty, potem 57 41 56 45 (WAVE)
  • Wideo MP4: 4-bajtowy rozmiar, potem 66 74 79 70 (ftyp)

W pliku TIFF pierwsze 2 bajty ustawiają także kolejność bajtów dla liczb w pliku. W pliku PDF znaki po sygnaturze podają wersję PDF, ale wpis dalej w pliku może ją zastąpić.

Które pliki to zawierają

Każdy plik ma surowy nagłówek, ale nie każdy format ma sygnaturę. Zwykłe pliki tekstowe zaczynają się bezpośrednio od swojego tekstu. Programy rozpoznają je, ponieważ ich pierwsze bajty zawierają tylko znaki tekstowe.

Dlaczego ma to znaczenie

Rozszerzenie nazwy pliku jest tylko częścią nazwy i każdy może je zmienić. Nagłówek może ujawnić prawdziwy typ pliku i typ MIME, nawet gdy rozszerzenie jest błędne.

Serwer WWW może nie wysłać typu MIME albo przeglądarka może uznać, że odebrany typ jest błędny. Przeglądarka może wtedy porównać pierwsze bajty z tabelą znanych wzorców. Polecenie Uniksa file szuka magicznego numeru blisko początku pliku.

Nagłówek pomaga też wykrywać problemy. Jeśli plik o nazwie photo.png nie zaczyna się od 89 50 4E 47, nie jest zgodny z formatem PNG. Początek pliku może być uszkodzony albo plik jest innego typu z błędnym rozszerzeniem.

Nagłówek złożony tylko z bajtów 00 nie pasuje do żadnej popularnej sygnatury. Jednak plik MP4 może zaczynać się od 00, ponieważ mały rozmiar w jego pierwszych 4 bajtach zaczyna się od zera. Gdy nic nie pasuje i bajty nie są tekstem, przeglądarki traktują plik jako application/octet-stream.