Detekce typu souboru

Přípona souboru je jen štítek — přejmenování virus.exe na photo.jpg uvnitř nic nezmění. Tato stránka čte první bajty každého nahraného souboru a porovnává je s více než 60 skutečnými magickými signaturami: obrázky, dokumenty, archivy, zvuk/video, písma, spustitelné soubory, databáze a klíče. Dostanete zjištěný typ, typ MIME, přípony, které tento typ obvykle používá, varování, když přípona odporuje obsahu, a tam, kde formát údaje obsahuje (rozměry obrázku, verze PDF, značka MP4). Vše se kontroluje lokálně ve vašem prohlížeči.
Sem přetáhněte soubory, nebo klikněte a vyberte je
Jeden soubor nebo mnoho. Čte se jen prvních 512 bajtů každého souboru; soubory nikdy neopustí tento počítač.
Nejsou vybrány žádné soubory.
Tabulka detekce se zobrazí zde, jakmile vyberete soubory a stisknete Zjistit.
Co znamená „shoda“: v pořádku — přípona souhlasí se zjištěným formátem; nesoulad — obsah je jiný formát, než jaký přípona uvádí (přejmenovaný soubor, nebo něco horšího); „žádná signatura“ — první bajty neodpovídají žádné známé signatuře, což je běžné u prostého textu, CSV a většiny datových formátů, které prostě nemají hlavičku. Soukromí: soubory se čtou vlastním FileReaderem prohlížeče; nic se nenahrává.

Co je signatura souboru?

Téměř každý binární formát začíná pevnou posloupností bajtů — magickým číslem — uloženou tam proto, aby program poznal své soubory, aniž by se spoléhal na název. PNG vždy začíná osmi bajty 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), PDF ASCII textem %PDF, ZIP bajty PK\x03\x04 (iniciály Phila Katze, který formát navrhl). Operační systémy tyto bajty většinou ignorují a dívají se místo toho na příponu — a právě proto přejmenovaný soubor nikde „neotevře správně“ a bezpečnostní nástroje kontrolují obsah.

Slavné první bajty

BajtyFormátPoznámka
89 50 4E 47 0D 0A 1A 0AObrázek PNG\r\n chrání před poškozením konců řádků
FF D8 FFObrázek JPEGkaždý rámec JPEG začíná značkou SOI
25 50 44 46 2DDokument PDF“%PDF-1.7” — verze následuje
50 4B 03 04Archiv ZIPdocx/xlsx/odt/epub jsou ZIP s jinou příponou
D0 CF 11 E0Starší Officedoc/xls/ppt/msi — složený soubor OLE2
4D 5AEXE pro Windows“MZ”, podle Microsoftu Marka Zbikowskiho
7F 45 4C 46Linux ELF\x7fELF — programy a sdílené knihovny
1A 45 DF A3Matroska/WebMzačátek kontejneru EBML
75 73 74 61 72 na posunu 257Archiv TARsignatura se ukrývá hluboko v hlavičce

Jak detektor rozhoduje

Prvních 512 bajtů každého souboru se porovnává s tabulkou signatur v pořadí specifičnosti: značky kontejnerů (RIFF…WAVE vs RIFF…AVI vs RIFF…WEBP, značky ISO na posunu 8) se kontrolují dříve než jejich obecné kontejnery a formáty založené na ZIP (EPUB, ODF, OOXML) dříve než prostý ZIP. Tam, kde formát nese vlastní popisná metadata, stránka jde o úroveň hlouběji: rozměry PNG/GIF/BMP/JPEG/WebP se čtou z jejich hlaviček, verze PDF z bajtu 5, značka MP4 a verze třídy Javy z jejich standardních posunů. Soubory, které neodpovídají ničemu, projdou textovou heuristikou (BOM, <?xml, <html, shebang, poměr tisknutelných znaků), než se označí jako neznámé.

Časté chyby

„Říká ZIP, ale soubor je .docx“ — to je správně: .docx je archiv ZIP, jehož první položkou je [Content_Types].xml; detektor tento případ rozpozná a uvede konkrétně Office Open XML. „Říká, že signatura chybí, ale soubor se otevře v pořádku“ — CSV, většina zdrojového kódu a nespočet vědeckých formátů nemá žádné magické bajty; „žádná signatura“ není obvinění. „Dokáže mi říct, zda je soubor bezpečný?“ — ne. Kontrola obsahu říká, čím soubor je, ne co dělá; EXE zůstává EXE, ať je to instalátor, nebo malware.

Časté dotazy

Proč jen 512 bajtů? — každá podporovaná signatura leží v prvních 512 bajtech (nejhlouběji je ustar v TARu na posunu 257); čtení dalšího by zpomalilo velké dávky bez užitku.
Zjišťuje délku videa? — ne, jen kontejner a jeho značku; délka vyžaduje zpracování celého indexu, což je úkol přehrávače.
Více souborů najednou? — ano, přetáhněte celý výběr; každý řádek se zjišťuje samostatně.
Související stránka: pro opačný směr — přípona na typ MIME — použijte vyhledávání typu MIME; pro hashování stejných souborů použijte Hromadný hash souborů.