Filtypsdetektor

En fils ändelse är bara en etikett — att döpa om virus.exe till photo.jpg ändrar ingenting inuti. Den här sidan läser de första byten i varje uppladdad fil och jämför dem mot över 60 riktiga magiska signaturer: bilder, dokument, arkiv, ljud och video, typsnitt, körbara filer, databaser och nycklar. Man får den identifierade typen, MIME-typen, de ändelser som typen normalt använder, en varning när ändelsen motsäger innehållet och, där formatet bär med sig det, bilddimensioner, PDF-version eller MP4-varumärke. Allt granskas lokalt i webbläsaren.
Släpp filer här, eller klicka för att välja dem
En eller många filer. Bara de första 512 byten i var och en läses; filerna lämnar aldrig den här datorn.
Inga filer valda.
Identifieringstabellen visas här när filer har valts och Identifiera har tryckts.
Vad “matchning” betyder: konsekvent — ändelsen stämmer med det identifierade formatet; avvikelse — innehållet är ett annat format än vad ändelsen påstår (en omdöpt fil, eller värre); “ingen signatur” — de första byten matchar ingen känd signatur, vilket är normalt för ren text, CSV och de flesta dataformat som helt enkelt saknar huvud. Integritet: filerna läses med webbläsarens egen FileReader; inget laddas upp.

Vad är en filsignatur?

Nästan alla binära format börjar med en fast byte-sekvens — det magiska talet — som placeras där så att ett program kan känna igen sina egna filer utan att lita på namnet. En PNG börjar alltid med de åtta byten 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), en PDF med ASCII-texten %PDF och en ZIP med PK\x03\x04 (initialerna till Phil Katz, som konstruerade formatet). Operativsystem bryr sig mestadels inte om dessa byte och tittar i stället på ändelsen — det är just därför en omdöpt fil inte “öppnas bra” någonstans, och varför säkerhetsverktyg känner av innehållet.

Kända första byte

ByteFormatAnteckning
89 50 4E 47 0D 0A 1A 0APNG-bild\r\n skyddar mot skador på radslut
FF D8 FFJPEG-bildvarje JPEG-bildruta börjar med en SOI-markör
25 50 44 46 2DPDF-dokument“%PDF-1.7” — versionen följer efter
50 4B 03 04ZIP-arkivdocx/xlsx/odt/epub är ZIP-filer i förklädnad
D0 CF 11 E0Äldre Officedoc/xls/ppt/msi — OLE2-sammansatt fil
4D 5AWindows EXE“MZ”, efter Microsofts Mark Zbikowski
7F 45 4C 46Linux ELF\x7fELF — program och delade bibliotek
1A 45 DF A3Matroska/WebMEBML-containerstart
75 73 74 61 72 vid offset 257TAR-arkivsignaturen gömmer sig djupt i huvudet

Så avgör identifieraren

De första 512 byten i varje fil jämförs mot en tabell med signaturer i specificitetsordning: containervarumärken (RIFF…WAVE mot RIFF…AVI mot RIFF…WEBP, ISO-varumärkesboxar vid offset 8) kontrolleras före sina generiska containrar, och ZIP-baserade format (EPUB, ODF, OOXML) före vanlig ZIP. Där ett format bär självbeskrivande metadata gräver sidan ett steg djupare: PNG-, GIF-, BMP-, JPEG- och WebP-dimensioner läses från deras huvuden, PDF-versionen från byte 5, MP4-varumärket och Java-klassversionen från deras standardpositioner. Filer som inte matchar något får en textheuristik (BOM, <?xml, <html, shebang, andel utskrivbara tecken) innan de kallas okända.

Vanliga misstag

“Den säger ZIP men filen är .docx” — det stämmer: en .docx är ett ZIP-arkiv vars första post är [Content_Types].xml; identifieraren känner igen det fallet och anger Office Open XML specifikt. “Den säger ingen signatur men filen öppnas bra” — CSV, de flesta källkodsfiler och otaliga vetenskapliga format har inga magiska byte alls; “ingen signatur” är ingen anklagelse. “Kan den säga om filen är säker?” — nej. Innehållsanalys säger vad en fil är, inte vad den gör; en EXE är en EXE oavsett om den är ett installationsprogram eller skadlig kod.

Vanliga frågor

Varför bara 512 byte? — varje stödd signatur ligger inom de första 512 byten (den djupaste är TARs ustar vid offset 257); att läsa mer skulle bara göra stora batcher långsammare.
Identifierar den videons längd? — nej, bara containern och dess varumärke; längden kräver att hela indexet tolkas, vilket är en spelares uppgift.
Flera filer på en gång? — ja, dra en hel markering; varje rad identifieras oberoende.
Relaterad sida: för att gå åt andra hållet — från filändelse till MIME-typ — används MIME-typsökning; för att hasha samma filer används Batch-filhash.