En fils endelse er blot en etiket — at omdøbe virus.exe til foto.jpg ændrer intet indeni. Denne side læser de første bytes i hver uploadet fil og matcher dem mod over 60 rigtige magiske signaturer: billeder, dokumenter, arkiver, lyd og video, skrifttyper, programmer, databaser og nøgler. Man får den registrerede type, MIME-typen, de endelser, som typen normalt bruger, en advarsel, når endelsen strider mod indholdet, og hvor formatet bærer det (billeddimensioner, PDF-version, MP4-brand). Alt inspiceres lokalt i browseren.
Vælg filer
Slip filer her, eller klik for at vælge dem Én fil eller mange. Kun de første 512 bytes i hver læses; filerne forlader aldrig denne computer.
Ingen filer valgt.
Resultater
Registreringstabellen vises her, når filer er valgt, og der er trykket på Registrér.
Hvad “match” betyder:konsistent — endelsen stemmer overens med det registrerede format; uoverensstemmelse — indholdet er et andet format, end endelsen angiver (en omdøbt fil, eller værre); “ingen signatur” — de første bytes matcher ingen kendt signatur, hvilket er normalt for ren tekst, CSV og de fleste dataformater, der simpelthen ikke har en header. Privatliv: filerne læses med browserens egen FileReader; intet uploades.
Hvad er en filsignatur?
Næsten alle binære formater starter med en fast bytesekvens — det magiske tal — placeret der, så et program kan genkende sine egne filer uden at stole på navnet. En PNG begynder altid med de otte bytes 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), en PDF med ASCII-teksten %PDF og en ZIP med PK\x03\x04 (initialerne på Phil Katz, der designede formatet). Operativsystemer ignorerer for det meste disse bytes og kigger i stedet på endelsen — netop derfor “åbner” en omdøbt fil ingen steder, og derfor undersøger sikkerhedsværktøjer indholdet.
Kendte første bytes
Bytes
Format
Note
89 50 4E 47 0D 0A 1A 0A
PNG-billede
\r\n beskytter mod ødelagte linjeskift
FF D8 FF
JPEG-billede
hver JPEG-ramme starter med en SOI-markør
25 50 44 46 2D
PDF-dokument
“%PDF-1.7” — versionen følger efter
50 4B 03 04
ZIP-arkiv
docx/xlsx/odt/epub er ZIP-filer, der bærer en endelse
D0 CF 11 E0
Ældre Office
doc/xls/ppt/msi — OLE2-sammensatfilen
4D 5A
Windows EXE
“MZ”, efter Microsofts Mark Zbikowski
7F 45 4C 46
Linux ELF
\x7fELF — programmer og delte biblioteker
1A 45 DF A3
Matroska/WebM
EBML-containerstart
75 73 74 61 72ved offset 257
TAR-arkiv
signaturen gemmer sig dybt i headeren
Hvordan detektoren afgør det
De første 512 bytes i hver fil sammenlignes med en tabel over signaturer i specificitetsrækkefølge: containerbrands (RIFF…WAVE vs. RIFF…AVI vs. RIFF…WEBP, ISO-brandbokse ved offset 8) tjekkes før deres generiske containere, og ZIP-baserede formater (EPUB, ODF, OOXML) før almindelig ZIP. Hvor et format bærer selvbeskrivende metadata, graves der et niveau dybere: PNG-, GIF-, BMP-, JPEG- og WebP-dimensioner læses fra deres headere, PDF-versionen fra byte 5, MP4-brandet og Java-klasseversionen fra deres standardoffsets. Filer, der ikke matcher noget, får en tekstheuristik (BOM, <?xml, <html, shebang, andel af udskrivbare tegn), før de kaldes ukendte.
Almindelige fejl
“Den siger ZIP, men filen er .docx” — det er korrekt: en .docx er et ZIP-arkiv, hvis første post er [Content_Types].xml; detektoren genkender det tilfælde og oplyser Office Open XML specifikt. “Den siger ingen signatur, men filen åbner fint” — CSV, de fleste kildekoder og utallige videnskabelige formater har slet ingen magiske bytes; “ingen signatur” er ikke en anklage. “Kan den fortælle, om filen er sikker?” — nej. Indholdsundersøgelse siger, hvad en fil er, ikke hvad den gør; en EXE er en EXE, hvad enten det er et installationsprogram eller malware.
Ofte stillede spørgsmål
Hvorfor kun 512 bytes? — alle understøttede signaturer ligger inden for de første 512 bytes (den dybeste er TAR's ustar ved offset 257); at læse mere ville gøre store batcher langsommere uden grund. Registrerer den videoens varighed? — nej, kun containeren og dens brand; varighed kræver, at hele indekset læses, og det er en afspillers opgave. Flere filer på én gang? — ja, træk en hel markering ind; hver række registreres uafhængigt. Relateret side: for at gå den anden vej — fra endelse til MIME-type — brug MIME-typeopslag; for at hashe de samme filer brug Batch-filhash.