Hoppa till innehållet
BouseMuttonBouseMutton

Vad är ett magiskt tal?

Ett magiskt tal är den korta, fasta bytesekvensen i början av varje fil. Det identifierar formatet innan någon filändelse läses. Den här sidan tar upp hur de fungerar, hur de vanligaste signaturerna ser ut och varför en kontroll av magiska bytes alltid slår en kontroll av filnamnet.

  • Förklaring på enkel svenska
  • 14 format täckta
  • Bytes lämnar aldrig din webbläsare

Nyckelfakta

  • Vad är det?

    Ett magiskt tal är en fast bytesekvens (vanligtvis 2 till 8 byte) i början av en fil som identifierar formatet.

  • Var finns det?

    Nästan alltid vid byte-position 0. ISO 9660-skivavbildningar är det välkända undantaget: deras CD001-signatur sitter vid position 32769 (sektor 16).

  • Ändelse eller bytes?

    Bytes vinner. Att byta namn på report.exe till report.pdf ändrar etiketten, inte innehållet. De magiska byten läser fortfarande 4D 5A.

  • Vad du får tillbaka

    Vår filtypskontroll rapporterar ett av fyra utlåtanden: MATCH, MISMATCH, AMBIGUOUS eller UNKNOWN. Varje är ett deterministiskt svar om formatets identitet, inte säkerheten.

  • Integritet

    Det kostnadsfria flödet för en fil körs helt i din webbläsare. Byten lämnar aldrig din enhet.

  • Säkerhetsomfattning

    En kontroll av magiska bytes identifierar format, inte skadlig kod. Använd det som en första signal, inte ett virusutlåtande.

Ett magiskt tal (även kallat magic-byte-signatur eller filsignatur) är en kort, fast bytesekvens som skrivs allra först i en fil och identifierar dess verkliga format. Operativsystemet använder det före någon filändelse. Ändelsen är bara en ledtråd; det magiska talet är sanningen.

Referens för magic-byte-signaturer

14 vanliga signaturer hämtade från formatens specifikationer. Hex-byte är versala och mellanslagsseparerade. ASCII-förhandsvisningar ersätter icke-utskrivbara byte med en punkt.

  • PDF

    Magiska bytes (hex):
    25 50 44 46
    ASCII:
    %PDF
    Ändelser:
    .pdf
    MIME-typ:
    application/pdf
    Position:
    byte 0
  • PNG

    Magiska bytes (hex):
    89 50 4E 47 0D 0A 1A 0A
    ASCII:
    .PNG....
    Ändelser:
    .png
    MIME-typ:
    image/png
    Position:
    byte 0
  • JPEG

    Magiska bytes (hex):
    FF D8 FF
    ASCII:
    ...
    Ändelser:
    .jpg, .jpeg
    MIME-typ:
    image/jpeg
    Position:
    byte 0
  • GIF

    Magiska bytes (hex):
    47 49 46 38 39 61
    ASCII:
    GIF89a
    Ändelser:
    .gif
    MIME-typ:
    image/gif
    Position:
    byte 0
  • BMP

    Magiska bytes (hex):
    42 4D
    ASCII:
    BM
    Ändelser:
    .bmp
    MIME-typ:
    image/bmp
    Position:
    byte 0
  • ZIP

    Magiska bytes (hex):
    50 4B 03 04
    ASCII:
    PK..
    Ändelser:
    .zip
    MIME-typ:
    application/zip
    Position:
    byte 0
  • RAR (v5)

    Magiska bytes (hex):
    52 61 72 21 1A 07 01 00
    ASCII:
    Rar!....
    Ändelser:
    .rar
    MIME-typ:
    application/vnd.rar
    Position:
    byte 0
  • 7-Zip

    Magiska bytes (hex):
    37 7A BC AF 27 1C
    ASCII:
    7z....
    Ändelser:
    .7z
    MIME-typ:
    application/x-7z-compressed
    Position:
    byte 0
  • DOCX (Office Open XML)

    Magiska bytes (hex):
    50 4B 03 04
    ASCII:
    PK..
    Ändelser:
    .docx
    MIME-typ:
    application/vnd.openxmlformats-officedocument.wordprocessingml.document
    Position:
    byte 0
  • XLSX (Office Open XML)

    Magiska bytes (hex):
    50 4B 03 04
    ASCII:
    PK..
    Ändelser:
    .xlsx
    MIME-typ:
    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
    Position:
    byte 0
  • APK (Android package)

    Magiska bytes (hex):
    50 4B 03 04
    ASCII:
    PK..
    Ändelser:
    .apk
    MIME-typ:
    application/vnd.android.package-archive
    Position:
    byte 0
  • MP4 (ISO BMFF)

    Magiska bytes (hex):
    00 00 00 20 66 74 79 70
    ASCII:
    ....ftyp
    Ändelser:
    .mp4, .m4v
    MIME-typ:
    video/mp4
    Position:
    byte 0
  • Windows PE / EXE

    Magiska bytes (hex):
    4D 5A
    ASCII:
    MZ
    Ändelser:
    .exe, .dll, .sys
    MIME-typ:
    application/vnd.microsoft.portable-executable
    Position:
    byte 0
  • ISO 9660

    Magiska bytes (hex):
    43 44 30 30 31
    ASCII:
    CD001
    Ändelser:
    .iso
    MIME-typ:
    application/x-iso9660-image
    Position:
    byte (sektor 16)
  • PDF

    De fyra byten stavar %PDF. PDF-version följer omedelbart, t.ex. %PDF-1.7.

  • PNG

    Åtta byte inklusive PNG:s radslutsmarkörer (0D 0A 1A 0A) så att överföringsfel kan upptäckas.

  • JPEG

    Start-Of-Image-markör. Den fjärde byten skiljer JFIF (E0) från EXIF (E1).

  • GIF

    GIF89a är den moderna varianten. GIF87a (47 49 46 38 37 61) är den äldre skrivningen och är också giltig.

  • BMP

    Två byte. Lätt att förfalska; para ihop med filstorlekshuvudet vid position 2 för att särskilja.

  • ZIP

    Lokalt filhuvud. Tomma arkiv använder 50 4B 05 06 (end-of-central-directory) istället.

  • RAR (v5)

    RAR 5-signatur. Äldre RAR 1.5 till 4.x-filer använder en 7-bytes signatur som slutar med 00.

  • 7-Zip

    Sex byte som stavar 7z följt av tre magiska byte.

  • DOCX (Office Open XML)

    DOCX är en ZIP-behållare. Signaturen ensam kan inte skilja ett Word-dokument från en vanlig ZIP. Titta på den inre [Content_Types].xml.

  • XLSX (Office Open XML)

    Samma varning som för DOCX. Granska OOXML-manifestet för att bekräfta kalkylbladsvarianten.

  • APK (Android package)

    APK är en ZIP-behållare med ett Android-manifest inuti. ZIP-signaturen ensam räcker inte som bevis.

  • MP4 (ISO BMFF)

    ftyp-rutan vid position 4 bär märkesidentifieraren. Vanliga märken: isom, mp42, iso5.

  • Windows PE / EXE

    Två byte (Mark Zbikowski). PE-huvudets position läses från byte 0x3C; själva PE\0\0-signaturen finns där.

  • ISO 9660

    ISO 9660 placerar volymbeskrivaren vid sektor 16, så signaturen sitter vid byte 32769 (16 * 2048 + 1).

Så fungerar en kontroll av magiska bytes

  1. 1

    Läs de första byten

    Öppna filen som en binär ström och läs de första 8 till 16 byten. Det räcker för att känna igen varje signatur i tabellen ovan.

  2. 2

    Jämför mot kända signaturer

    Matcha byten mot en databas över kända format. Flera format kan dela ett prefix (varje Office-dokument är en ZIP), så kontrollen returnerar den mest specifika matchningen.

  3. 3

    Korskontrollera mot filändelsen

    Om det upptäckta formatet inte matchar det ändelsen påstår, blir utlåtandet MISMATCH. Om flera format passar, AMBIGUOUS. Om inget passar, UNKNOWN.

Varför spelar detta roll?

Att byta namn på en fil från invoice.exe till invoice.pdf ändrar inte dess bytes. De två första byten läser fortfarande 4D 5A. Kontrollen av magiska tal upptäcker det direkt. Användbart när en bilaga ser legitim ut men ändelsen ändrades innan den skickades.

Kontroller av magiska bytes fångar också det omvända: en fil utan filändelse men med giltiga PNG-byte är ändå en PNG och din bildvisare kan öppna den. Formatidentitet bor i byten, inte i filnamnet.

Ordlista

Vanliga frågor

Prova på din egen fil

Släpp vilken fil som helst. Kontrollen körs lokalt och rapporterar ett utlåtande på under en sekund. Byten lämnar aldrig din webbläsare.

Öppna filtypskontrollen