Przejdź do treści
BouseMuttonBouseMutton

Co to jest magiczna liczba?

Magiczna liczba to krótka, stała sekwencja bajtów na początku każdego pliku. Identyfikuje format, zanim odczytane zostanie rozszerzenie. Ta strona opisuje, jak działają, jak wyglądają najczęstsze sygnatury i dlaczego sprawdzenie magicznych bajtów wygrywa z każdym sprawdzaniem nazwy pliku.

  • Wyjaśnienie prostym językiem
  • Obejmuje 14 formatów
  • Bajty nie opuszczają Twojej przeglądarki

Najważniejsze fakty

  • Co to jest?

    Magiczna liczba to stała sekwencja bajtów (zwykle od 2 do 8 bajtów) na początku pliku, która identyfikuje format.

  • Gdzie się znajduje?

    Niemal zawsze pod adresem bajtu 0. Obrazy płyt ISO 9660 to znany wyjątek: ich sygnatura CD001 leży pod adresem 32769 (sektor 16).

  • Rozszerzenie czy bajty?

    Bajty wygrywają. Zmiana nazwy report.exe na report.pdf zmienia etykietę, nie zawartość. Magiczne bajty nadal mówią 4D 5A.

  • Co dostaniesz w odpowiedzi

    Nasze narzędzie do sprawdzania typu pliku zwraca jeden z czterech werdyktów: MATCH, MISMATCH, AMBIGUOUS lub UNKNOWN. Każdy to deterministyczna odpowiedź o tożsamości formatu, nie o bezpieczeństwie.

  • Prywatność

    Darmowy przepływ pojedynczego pliku działa w całości w Twojej przeglądarce. Bajty nigdy nie opuszczają Twojego urządzenia.

  • Zakres bezpieczeństwa

    Sprawdzenie magicznych bajtów identyfikuje format, nie złośliwe oprogramowanie. Traktuj je jako pierwszy sygnał, nie werdykt antywirusa.

Magiczna liczba (nazywana też sygnaturą magicznych bajtów lub sygnaturą pliku) to krótka, stała sekwencja bajtów zapisana na samym początku pliku, która identyfikuje jego prawdziwy format. System operacyjny używa jej przed jakimkolwiek rozszerzeniem pliku. Rozszerzenie to tylko wskazówka; magiczna liczba to prawda.

Wykaz sygnatur magicznych bajtów

14 powszechnie używanych sygnatur zaczerpniętych ze specyfikacji formatów. Bajty w zapisie szesnastkowym są pisane wielkimi literami i oddzielone spacjami. Podglądy ASCII zastępują bajty niedrukowalne kropką.

  • PDF

    Magiczne bajty (hex):
    25 50 44 46
    ASCII:
    %PDF
    Rozszerzenia:
    .pdf
    Typ MIME:
    application/pdf
    Adres:
    bajt 0
  • PNG

    Magiczne bajty (hex):
    89 50 4E 47 0D 0A 1A 0A
    ASCII:
    .PNG....
    Rozszerzenia:
    .png
    Typ MIME:
    image/png
    Adres:
    bajt 0
  • JPEG

    Magiczne bajty (hex):
    FF D8 FF
    ASCII:
    ...
    Rozszerzenia:
    .jpg, .jpeg
    Typ MIME:
    image/jpeg
    Adres:
    bajt 0
  • GIF

    Magiczne bajty (hex):
    47 49 46 38 39 61
    ASCII:
    GIF89a
    Rozszerzenia:
    .gif
    Typ MIME:
    image/gif
    Adres:
    bajt 0
  • BMP

    Magiczne bajty (hex):
    42 4D
    ASCII:
    BM
    Rozszerzenia:
    .bmp
    Typ MIME:
    image/bmp
    Adres:
    bajt 0
  • ZIP

    Magiczne bajty (hex):
    50 4B 03 04
    ASCII:
    PK..
    Rozszerzenia:
    .zip
    Typ MIME:
    application/zip
    Adres:
    bajt 0
  • RAR (v5)

    Magiczne bajty (hex):
    52 61 72 21 1A 07 01 00
    ASCII:
    Rar!....
    Rozszerzenia:
    .rar
    Typ MIME:
    application/vnd.rar
    Adres:
    bajt 0
  • 7-Zip

    Magiczne bajty (hex):
    37 7A BC AF 27 1C
    ASCII:
    7z....
    Rozszerzenia:
    .7z
    Typ MIME:
    application/x-7z-compressed
    Adres:
    bajt 0
  • DOCX (Office Open XML)

    Magiczne bajty (hex):
    50 4B 03 04
    ASCII:
    PK..
    Rozszerzenia:
    .docx
    Typ MIME:
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
    Adres:
    bajt 0
  • XLSX (Office Open XML)

    Magiczne bajty (hex):
    50 4B 03 04
    ASCII:
    PK..
    Rozszerzenia:
    .xlsx
    Typ MIME:
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    Adres:
    bajt 0
  • APK (Android package)

    Magiczne bajty (hex):
    50 4B 03 04
    ASCII:
    PK..
    Rozszerzenia:
    .apk
    Typ MIME:
    application/vnd.android.package-archive
    Adres:
    bajt 0
  • MP4 (ISO BMFF)

    Magiczne bajty (hex):
    00 00 00 20 66 74 79 70
    ASCII:
    ....ftyp
    Rozszerzenia:
    .mp4, .m4v
    Typ MIME:
    video/mp4
    Adres:
    bajt 0
  • Windows PE / EXE

    Magiczne bajty (hex):
    4D 5A
    ASCII:
    MZ
    Rozszerzenia:
    .exe, .dll, .sys
    Typ MIME:
    application/vnd.microsoft.portable-executable
    Adres:
    bajt 0
  • ISO 9660

    Magiczne bajty (hex):
    43 44 30 30 31
    ASCII:
    CD001
    Rozszerzenia:
    .iso
    Typ MIME:
    application/x-iso9660-image
    Adres:
    bajt (sektor 16)
  • PDF

    Cztery bajty układają się w %PDF. Wersja PDF następuje zaraz po nich, np. %PDF-1.7.

  • PNG

    Osiem bajtów, w tym znaczniki końca linii PNG (0D 0A 1A 0A), dzięki czemu wykrywalne są błędy transmisji.

  • JPEG

    Znacznik początku obrazu. Czwarty bajt odróżnia JFIF (E0) od EXIF (E1).

  • GIF

    GIF89a to wariant nowoczesny. GIF87a (47 49 46 38 37 61) to starsza pisownia i również jest poprawna.

  • BMP

    Dwa bajty. Łatwe do podrobienia; zestaw z nagłówkiem rozmiaru pliku pod adresem 2, aby rozróżnić.

  • ZIP

    Nagłówek pliku lokalnego. Puste archiwa używają zamiast tego 50 4B 05 06 (koniec katalogu centralnego).

  • RAR (v5)

    Sygnatura RAR 5. Starsze pliki RAR 1.5 do 4.x używają 7-bajtowej sygnatury kończącej się na 00.

  • 7-Zip

    Sześć bajtów układających się w 7z, po których następują trzy magiczne bajty.

  • DOCX (Office Open XML)

    DOCX to kontener ZIP. Sama sygnatura nie odróżnia dokumentu Word od zwykłego ZIP. Zajrzyj do wewnętrznego [Content_Types].xml.

  • XLSX (Office Open XML)

    To samo zastrzeżenie co przy DOCX. Sprawdź manifest OOXML, aby potwierdzić, że to wariant arkusza kalkulacyjnego.

  • APK (Android package)

    APK to kontener ZIP zawierający manifest Androida. Sama sygnatura ZIP to za mało.

  • MP4 (ISO BMFF)

    Pole ftyp pod adresem 4 niesie identyfikator marki. Częste marki: isom, mp42, iso5.

  • Windows PE / EXE

    Dwa bajty (Mark Zbikowski). Adres nagłówka PE jest odczytywany z bajtu 0x3C; właściwa magia PE\0\0 leży tam.

  • ISO 9660

    ISO 9660 umieszcza deskryptor woluminu w sektorze 16, więc sygnatura znajduje się pod adresem 32769 (16 * 2048 + 1).

Jak działa sprawdzanie magicznych bajtów

  1. 1

    Odczytaj pierwsze bajty

    Otwórz plik jako strumień binarny i odczytaj pierwsze 8 do 16 bajtów. To wystarczy, aby rozpoznać każdą sygnaturę z powyższej tabeli.

  2. 2

    Porównaj ze znanymi sygnaturami

    Dopasuj bajty do bazy znanych formatów. Wiele formatów może mieć wspólny prefiks (każdy dokument Office to ZIP), więc sprawdzenie zwraca najbardziej szczegółowe dopasowanie.

  3. 3

    Porównaj z rozszerzeniem pliku

    Jeśli wykryty format nie zgadza się z tym, co deklaruje rozszerzenie, werdykt to MISMATCH. Jeśli pasuje wiele formatów, AMBIGUOUS. Jeśli nic nie pasuje, UNKNOWN.

Dlaczego to ma znaczenie?

Zmiana nazwy pliku z invoice.exe na invoice.pdf nie zmienia jego bajtów. Pierwsze dwa bajty nadal mówią 4D 5A. Sprawdzenie magicznej liczby wyłapuje to natychmiast. Przydatne, gdy załącznik wygląda na uczciwy, ale rozszerzenie zostało zmienione przed wysłaniem.

Sprawdzanie magicznych bajtów łapie też odwrotną sytuację: plik bez żadnego rozszerzenia, ale z poprawnymi bajtami PNG, nadal jest PNG i Twoja przeglądarka obrazów go otworzy. Tożsamość formatu mieszka w bajtach, nie w nazwie pliku.

Słowniczek

Najczęściej zadawane pytania

Wypróbuj na własnym pliku

Upuść dowolny plik. Sprawdzenie działa lokalnie i zwraca werdykt w niecałą sekundę. Bajty nigdy nie opuszczają Twojej przeglądarki.

Otwórz narzędzie do sprawdzania typu pliku