Розширення файлу — лише мітка: перейменування virus.exe на photo.jpg нічого не змінює всередині. Ця сторінка читає перші байти кожного завантаженого файлу і порівнює їх з понад 60 справжніми магічними сигнатурами: зображення, документи, архіви, аудіо/відео, шрифти, виконувані файли, бази даних і ключі. Ви отримуєте визначений тип, MIME-тип, розширення, які цей тип зазвичай використовує, попередження, коли розширення суперечить вмісту, і, де формат це містить, додаткові дані (розміри зображення, версію PDF, бренд MP4). Усе перевіряється локально у вашому браузері.
Оберіть файли
Киньте файли сюдиабо клацніть, щоб вибрати їх Один файл або багато. Читаються лише перші 512 байтів кожного; файли ніколи не залишають цей комп'ютер.
Файли не вибрано.
Результати
Таблиця визначення з'явиться тут після того, як ви оберете файли і натиснете «Визначити».
Що означає «збіг»:узгоджено — розширення збігається з визначеним форматом; невідповідність — вміст має інший формат, ніж заявлено розширенням (перейменований файл або гірше); «немає сигнатури» — перші байти не збігаються з жодною відомою сигнатурою, що є звичайним для простого тексту, CSV і більшості форматів даних, які просто не мають заголовка. Приватність: файли читаються власним FileReader браузера; нічого не вивантажується.
Що таке сигнатура файлу?
Майже кожен двійковий формат починається з фіксованої послідовності байтів — магічного числа — щоб програма могла впізнати свої файли, не довіряючи назві. PNG завжди починається з восьми байтів 89 50 4E 47 0D 0A 1A 0A (“\x89PNG\r\n\x1a\n”), PDF — з ASCII-тексту %PDF, ZIP — з PK\x03\x04 (ініціали Філа Каца, який розробив формат). Операційні системи переважно ігнорують ці байти і дивляться на розширення — саме тому перейменований файл ніде «не відкривається як слід», а засоби безпеки перевіряють вміст.
Знамениті перші байти
Байти
Формат
Примітка
89 50 4E 47 0D 0A 1A 0A
Зображення PNG
\r\n захищає від пошкодження закінчень рядків
FF D8 FF
Зображення JPEG
кожен кадр JPEG починається з маркера SOI
25 50 44 46 2D
Документ PDF
“%PDF-1.7” — далі йде версія
50 4B 03 04
Архів ZIP
docx/xlsx/odt/epub — це ZIP з чужим розширенням
D0 CF 11 E0
Застарілий Office
doc/xls/ppt/msi — складений файл OLE2
4D 5A
Windows EXE
“MZ”, на честь Марка Збіковскі з Microsoft
7F 45 4C 46
Linux ELF
\x7fELF — програми і спільні бібліотеки
1A 45 DF A3
Matroska/WebM
початок контейнера EBML
75 73 74 61 72на зсуві 257
Архів TAR
сигнатура прихована глибоко в заголовку
Як детектор вирішує
Перші 512 байтів кожного файлу порівнюються з таблицею сигнатур у порядку специфічності: бренди контейнерів (RIFF…WAVE проти RIFF…AVI проти RIFF…WEBP, бокси бренду ISO на зсуві 8) перевіряються раніше за загальні контейнери, а формати на основі ZIP (EPUB, ODF, OOXML) — раніше за звичайний ZIP. Там, де формат містить самоописові метадані, сторінка заглядає на рівень глибше: розміри PNG/GIF/BMP/JPEG/WebP читаються з їхніх заголовків, версія PDF — з байта 5, бренд MP4 і версія класу Java — зі стандартних зсувів. Файли, які нічого не збігають, проходять текстову евристику (BOM, <?xml, <html, shebang, частка друкованих символів), перш ніж їх назвуть невідомими.
Типові помилки
«Каже ZIP, але файл .docx» — це правильно: .docx є архівом ZIP, перший запис якого — [Content_Types].xml; детектор розпізнає цей випадок і вказує саме Office Open XML. «Каже, що сигнатури немає, але файл відкривається» — CSV, більшість вихідного коду і безліч наукових форматів взагалі не мають магічних байтів; «немає сигнатури» не є звинуваченням. «Чи може він сказати, чи файл безпечний?» — ні. Аналіз вмісту каже, чим є файл, а не що він робить; EXE є EXE, незалежно від того, інсталятор це чи шкідливе ПЗ.
Часті запитання (FAQ)
Чому лише 512 байтів? — кожна підтримувана сигнатура міститься в перших 512 байтах (найглибша — ustar у TAR на зсуві 257); читання більшого сповільнило б великі пакети без жодної користі. Чи визначає він тривалість відео? — ні, лише контейнер і його бренд; тривалість потребує розбору всього індексу, це робота програвача. Кілька файлів одночасно? — так, перетягніть цілий вибір; кожен рядок визначається незалежно. Пов'язана сторінка: щоб піти у зворотний бік — від розширення до MIME-типу — скористайтеся Пошуком MIME-типу; щоб хешувати ті самі файли, використовуйте Пакетний хеш файлів.