Fájltípus-felismerő

Egy fájl kiterjesztése csak címke — ha a virus.exe nevét photo.jpg-re változtatják, belül semmi nem változik. Ez az oldal minden feltöltött fájl első bájtjait beolvassa, és 60+ valódi mágikus aláírással veti össze: képek, dokumentumok, archívumok, hang/videó, betűkészletek, futtatható fájlok, adatbázisok és kulcsok. Megkapja a felismert típust, a MIME-típust, a típushoz szokásosan használt kiterjesztéseket, egy figyelmeztetést, ha a kiterjesztés ellentmond a tartalomnak, és azt, hol hordozza a formátum az információt (képméretek, PDF-verzió, MP4-márka). Minden helyben, a böngészőben vizsgálódik.
Fájlok ide húzhatók, vagy kattintással választható ki
Egy vagy több fájl. Mindegyiknek csak az első 512 bájtja olvasódik; a fájlok soha nem hagyják el ezt a gépet.
Nincs kiválasztott fájl.
A felismerési táblázat itt jelenik meg, miután fájlok kiválasztása és a Felismerés gomb megnyomása megtörtént.
Mit jelent az „egyezés”: egyező — a kiterjesztés egyezik a felismert formátummal; eltérés — a tartalom más formátum, mint amit a kiterjesztés állít (átnevezett fájl, vagy ennél rosszabb); „nincs aláírás” — az első bájtok nem egyeznek egyetlen ismert aláírással sem, ami normális sima szövegnél, CSV-nél és a legtöbb adatformátumnál, amelyeknek egyszerűen nincs fejlécük. Adatvédelem: a fájlok a böngésző saját FileReader-ével olvasódnak; semmi nem töltődik fel.

Mi az a fájlaláírás?

Szinte minden bináris formátum fix bájtsorozattal kezdődik — a mágikus szám — amelyet azért helyeztek oda, hogy egy program felismerhesse a saját fájljait a név megbízása nélkül. Egy PNG mindig a nyolc 89 50 4E 47 0D 0A 1A 0A bájttal kezdődik („\x89PNG\r\n\x1a\n”), egy PDF az ASCII %PDF szöveggel, egy ZIP a PK\x03\x04 bájtokkal (Phil Katz kezdőbetűi, aki a formátumot tervezte). Az operációs rendszerek többnyire figyelmen kívül hagyják ezeket a bájtokat, és inkább a kiterjesztést nézik — éppen ezért „nyílik meg rendesen” az átnevezett fájl sehol, és ezért szippantanak a biztonsági eszközök a tartalomba.

Híres első bájtok

BájtokFormátumMegjegyzés
89 50 4E 47 0D 0A 1A 0APNG-képa \r\n a sorvég-sérülés ellen véd
FF D8 FFJPEG-képminden JPEG-képkocka SOI-jelzővel kezdődik
25 50 44 46 2DPDF-dokumentum„%PDF-1.7” — a verzió ezt követi
50 4B 03 04ZIP-archívuma docx/xlsx/odt/epub ZIP-ek kiterjesztésben
D0 CF 11 E0Régi Officedoc/xls/ppt/msi — az OLE2 összetett fájl
4D 5AWindows EXE„MZ”, Mark Zbikowski, a Microsoft munkatársa után
7F 45 4C 46Linux ELF\x7fELF — programok és megosztott könyvtárak
1A 45 DF A3Matroska/WebMEBML konténer kezdete
75 73 74 61 72 a 257. eltolásnálTAR-archívumaz aláírás a fejléc mélyén rejtőzik

Hogyan dönt a felismerő

Minden fájl első 512 bájtját összevetjük az aláírások táblázatával, a specifikusság sorrendjében: a konténer-márkák (RIFF…WAVE vs. RIFF…AVI vs. RIFF…WEBP, ISO-márkadobozok a 8. eltolásnál) hamarabb ellenőrződnek, mint az általános konténerek, a ZIP-alapú formátumok (EPUB, ODF, OOXML) pedig a sima ZIP előtt. Ahol egy formátum önleíró metaadatot hordoz, az oldal egy szinttel mélyebbre ás: a PNG/GIF/BMP/JPEG/WebP méretek a fejlécükből olvasódnak, a PDF-verzió az 5. bájtból, az MP4-márka és a Java-osztályverzió a szabványos eltolásaikból. Azok a fájlok, amelyek semmire sem illeszkednek, szöveges heurisztikai ellenőrzésen mennek át (BOM, <?xml, <html, shebang, nyomtatható arány), mielőtt ismeretlennek minősülnének.

Gyakori hibák

„ZIP-et mond, de a fájl .docx” — ez helyes: a .docx egy ZIP-archívum, amelynek első bejegyzése a [Content_Types].xml; a felismerő ezt az esetet felismeri, és konkrétan az Office Open XML-t jelenti. „Nincs aláírás, mégis rendesen megnyílik” — a CSV, a legtöbb forráskód és számtalan tudományos formátum egyáltalán nem tartalmaz mágikus bájtokat; a „nincs aláírás” nem vád. „Meg tudja mondani, biztonságos-e a fájl?” — nem. A tartalomszimatolás azt mondja meg, hogy a fájl micsoda, nem azt, hogy mit csinál; egy EXE EXE marad, akár telepítő, akár kártevő.

GYIK

Miért csak 512 bájt? — minden támogatott aláírás az első 512 bájton belül van (a legmélyebb a TAR ustar-ja a 257. eltolásnál); több olvasása nagy kötegeket lassítana, haszon nélkül.
Felismeri a videó hosszát? — nem, csak a konténert és annak márkáját; a hossz az egész index elemzését igényli, ami lejátszó feladata.
Több fájl egyszerre? — igen, egész kijelölés húzható be; minden sor önállóan kerül felismerésre.
Kapcsolódó oldal: az ellenkező irány — kiterjesztés MIME-típushoz — a MIME-típuskereső; ugyanezen fájlok kivonatolásához a Kötegelt fájlkivonat használható.