Fájltípus-felismerő — a bájtok döntenek, nem a név
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 kiválasztása
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.
Eredmények
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ájtok
Formátum
Megjegyzés
89 50 4E 47 0D 0A 1A 0A
PNG-kép
a \r\n a sorvég-sérülés ellen véd
FF D8 FF
JPEG-kép
minden JPEG-képkocka SOI-jelzővel kezdődik
25 50 44 46 2D
PDF-dokumentum
„%PDF-1.7” — a verzió ezt követi
50 4B 03 04
ZIP-archívum
a docx/xlsx/odt/epub ZIP-ek kiterjesztésben
D0 CF 11 E0
Régi Office
doc/xls/ppt/msi — az OLE2 összetett fájl
4D 5A
Windows EXE
„MZ”, Mark Zbikowski, a Microsoft munkatársa után
7F 45 4C 46
Linux ELF
\x7fELF — programok és megosztott könyvtárak
1A 45 DF A3
Matroska/WebM
EBML konténer kezdete
75 73 74 61 72a 257. eltolásnál
TAR-archívum
az 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ó.