Filtypedetektor

Filendelsen til en fil er bare en merkelapp — å gi nytt navn til virus.exe til foto.jpg endrer ingenting inni. Denne siden leser de første bytene i hver opplastet fil og sammenligner dem med over 60 ekte magiske signaturer: bilder, dokumenter, arkiver, lyd/video, fonter, kjørbare filer, databaser og nøkler. Man får den oppdagede typen, MIME-typen, filendelsene den typen vanligvis bruker, en advarsel når filendelsen strider mot innholdet, og der formatet har det, også det (bildedimensjoner, PDF-versjon, MP4-merke). Alt inspiseres lokalt i nettleseren.
Slipp filer her, eller klikk for å velge dem
En fil eller mange. Bare de første 512 bytene av hver leses; filene forlater aldri denne maskinen.
Ingen filer er valgt.
Detekteringstabellen vises her etter at filer er valgt og Oppdag er trykket.
Hva “treff” betyr: konsistent — filendelsen stemmer med det oppdagede formatet; avvik — innholdet er et annet format enn filendelsen tilsier (en omdøpt fil, eller verre); “ingen signatur” — de første bytene passer ingen kjent signatur, noe som er normalt for ren tekst, CSV og de fleste dataformater som ganske enkelt ikke har en header. Personvern: filene leses med nettleserens egen FileReader; ingenting lastes opp.

Hva er en filsignatur?

Nesten alle binærformater starter med en fast byte-sekvens — det magiske tallet — plassert der for at et program skal kunne kjenne igjen sine egne filer uten å stole på navnet. En PNG begynner alltid med de åtte bytene 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), en PDF med ASCII-teksten %PDF, en ZIP med PK\x03\x04 (initialene til Phil Katz, som designet formatet). Operativsystemer ignorerer for det meste disse bytene og ser på filendelsen i stedet — nettopp derfor “åpner seg fint” en omdøpt fil ingensteds, og derfor sniffer sikkerhetsverktøy innholdet.

Kjente første byte

ByteFormaterMerknad
89 50 4E 47 0D 0A 1A 0APNG-bilde\r\n-en beskytter mot ødelagte linjeskift
FF D8 FFJPEG-bildehver JPEG-ramme starter med en SOI-markør
25 50 44 46 2DPDF-dokument“%PDF-1.7” — versjonen følger
50 4B 03 04ZIP-arkivdocx/xlsx/odt/epub er ZIP-filer med en annen filendelse
D0 CF 11 E0Eldre Officedoc/xls/ppt/msi — OLE2-sammensatt fil
4D 5AWindows EXE“MZ”, etter Microsofts Mark Zbikowski
7F 45 4C 46Linux ELF\x7fELF — programmer og delte biblioteker
1A 45 DF A3Matroska/WebMEBML-beholderstart
75 73 74 61 72 ved offset 257TAR-arkivsignaturen gjemmer seg dypt i headeren

Slik avgjør detektoren

De første 512 bytene av hver fil sammenlignes med en tabell over signaturer i spesifisitetsrekkefølge: beholder-merker (RIFF…WAVE kontra RIFF…AVI kontra RIFF…WEBP, ISO-merkeboksene ved offset 8) sjekkes før deres generiske beholdere, og ZIP-baserte formater (EPUB, ODF, OOXML) før vanlig ZIP. Der et format bærer selvbeskrivende metadata, graver siden ett nivå dypere: PNG/GIF/BMP/JPEG/WebP-dimensjoner leses fra headerne, PDF-versjonen fra byte 5, MP4-merket og Java-klasseversjonen fra sine standardposisjoner. Filer som ikke treffer noe, får et tekstheuristisk gjennomløp (BOM, <?xml, <html, shebang, andel utskrivbare tegn) før de kalles ukjente.

Vanlige feil

“Det står ZIP, men filen er .docx” — det er riktig: en .docx er et ZIP-arkiv der første oppføring er [Content_Types].xml; detektoren gjenkjenner det tilfellet og rapporterer Office Open XML spesifikt. “Den sier ingen signatur, men filen åpner seg fint” — CSV, de fleste kildekoder og utallige vitenskapelige formater har ingen magiske byte i det hele tatt; “ingen signatur” er ikke en anklage. “Kan den si om filen er trygg?” — nei. Innholdssniffing sier hva en fil er, ikke hva den gjør; en EXE er en EXE enten den er et installasjonsprogram eller skadevare.

Ofte stilte spørsmål

Hvorfor bare 512 byte? — hver støttet signatur ligger innenfor de første 512 bytene (den dypeste er TARs ustar ved offset 257); å lese mer ville bremse store batcher uten grunn.
Oppdager den videolengde? — nei, bare beholderen og merket; lengde krever å parse hele indeksen, som er en avspillers jobb.
Flere filer samtidig? — ja, dra et helt utvalg; hver rad oppdages uavhengig.
Relatert side: for å gå den andre veien — filendelse til MIME-type — bruk MIME Type Lookup; for å hashe de samme filene, bruk Batch File Hash.