Урок 2. Настоящий тип файла и метаданные

file, сигнатуры, JAR и дамп процесса, exiftool и Base64.

Имя файла придумывает человек, поэтому верить ему нельзя. В олимпиадных задачах photo.jpg часто оказывается архивом, traffic.log — записью сетевого трафика, а файл без расширения — картинкой. Этот урок про две вещи: как за секунду узнать, что за файл перед вами, и что файл рассказывает о себе сам — его метаданные.

Первая команда: file

file читает первые байты и называет формат. Запускайте её сразу на все файлы задачи:

file *
data.bin:    gzip compressed data, from Unix, original size modulo 2^32 24
holiday.log: PNG image data, 1 x 1, 8-bit/color RGBA, non-interlaced
plugin.png:  Zip archive data, made by v3.0 UNIX, extract using at least v1.0, …
report.txt:  PDF document, version 1.4

Ни одно расширение здесь не совпало с содержимым — и это обычная ситуация на олимпиаде. Если в вопросе просят тип в виде type/subtype (такая запись называется MIME-тип), добавьте ключ:

file --mime-type -b holiday.log      # image/png

Сигнатура: первые байты файла

file работает по сигнатурам — постоянным байтам в начале файла. Их видно и глазами:

xxd holiday.log | head -1
00000000: 8950 4e47 0d0a 1a0a 0000 000d 4948 4452  .PNG........IHDR

Полезно помнить несколько сигнатур:

Начало файла Формат
89 50 4E 47 (.PNG) PNG
FF D8 FF JPEG
50 4B 03 04 (PK) ZIP, а значит и JAR, DOCX, APK
25 50 44 46 (%PDF) PDF
1F 8B gzip
42 5A 68 (BZh) bzip2
7F 45 4C 46 (.ELF) программа Linux
D4 C3 B2 A1 запись трафика PCAP

Если file пишет просто data, это не «пустой» файл: формат не распознан. Тогда смотрят первые байты сами и ищут вложенные файлы — об этом следующий урок.

file photo.jpg пишет Zip archive data. Что это значит? · 4 б.
Скачать файлы задания: l4_unknowns.zip
C10

C10. Картинка под чужим именем

10 б.

В наборе l4_unknowns.zip определите настоящий тип файла artifact_k.log. Сдайте MIME-тип в виде type/subtype.

Контейнеры смотрят списком, не запуская

ZIP, JAR, DOCX и APK — это один формат ZIP. Внутрь заглядывают командой unzip -l, даже если расширение другое:

unzip -l plugin.png

Программу или мод при этом не запускают. Всё, что нужно для ответа, видно из списка классов и из строк внутри них (strings), как в прошлом уроке.

Отдельный случай — дамп процесса: копия памяти работающей программы. Её не открывают специальными программами, сначала просто вытаскивают текст:

strings process.dmp | grep -i "http"
strings process.dmp | grep -i "key"

В памяти программы остаются адреса, ключи и пароли, с которыми она работала.

Если вопрос просит хеш файла (MD5 или SHA-256), считайте его от того самого файла, о котором спрашивают. Хеш архива и хеш класса внутри архива — разные числа:

md5sum work/com/example/Stealer.class
C12

C12. Настройки внутри JAR

10 б.

Файл artifact_q.png из того же набора на самом деле JAR. Не запуская его, найдите JSON-файл настроек и сдайте его путь внутри архива.

Задача ВСОШ: «Заражённый лаунчер Pinecraft»

Региональный этап 2025–2026, 9 класс. Игроки установили «улучшенный» лаунчер ZLauncher-Premium, и их аккаунты взломали. Даны установочный файл и дамп процесса лаунчера. Рекомендуемые утилиты: tar, unzip, jar, md5sum, strings, grep.

Файл задачи: task.tar.gz

Ход: распаковать архив → unzip -l лаунчера → найти класс, которому там не место → для хеша распаковать именно его → адрес и ключ искать строками в классе и в дампе.

ВСОШ-328

ВСОШ: «Заражённый лаунчер Pinecraft», 9 класс, вопрос 1/3

5 б.

Региональный этап 2025–2026, 9 класс.

MD5-хеш вредоносного файла в лаунчере. Ответ без обёртки.

Файлы задачи: task.tar.gz.

Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.

ВСОШ-329

ВСОШ: «Заражённый лаунчер Pinecraft», 9 класс, вопрос 2/3

5 б.

Региональный этап 2025–2026, 9 класс.

URL, куда отправляются пароли игроков, с полным абсолютным путём (с протоколом или без). Ответ без обёртки.

Файлы задачи: task.tar.gz.

Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.

ВСОШ-330

ВСОШ: «Заражённый лаунчер Pinecraft», 9 класс, вопрос 3/3

5 б.

Региональный этап 2025–2026, 9 класс.

Ключ для расшифровки логов лаунчера. Ответ без обёртки.

Файлы задачи: task.tar.gz.

Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.

Метаданные: что файл рассказывает о себе

Кроме содержимого, у файла есть служебные сведения: у фотографии — камера, дата и комментарий, у документа — автор, у PNG — текстовые поля. Всё это показывает одна команда:

exiftool photo.png

Смотрите поля с необычными названиями и длинными значениями: Comment, Author, Description, любые незнакомые. Если exiftool под рукой нет, текстовые поля обычно видны и через strings photo.png | head.

Base64: узнать на глаз и раскодировать

В метаданных и журналах часто лежит строка вроде eyJob3N0IjoiMjAzLjAuMTEzLjc3In0=. Это Base64 — способ записать любые байты латинскими буквами, цифрами и знаками + и /. Признаки: длинная строка без пробелов, длина делится на 4, в конце бывает один-два знака =. Base64 — не шифр, ключ не нужен:

echo 'eyJob3N0IjoiMjAzLjAuMTEzLjc3In0=' | base64 -d
{"host":"203.0.113.77"}

Если после раскодирования получился осмысленный текст — вы угадали. Если мусор — это другая кодировка или там зашифрованные данные. Перебирать варианты удобно в CyberChef: там есть кнопка «Magic», которая сама пробует популярные кодировки.

Метаданные легко подделать, поэтому для расследования это подсказка, а для олимпиадной задачи — частое место, где спрятан ответ.

В поле Comment записано dnNvc2h7dGVzdH0=. Что, скорее всего, нужно сделать? · 4 б.
Скачать файлы задания: l5_photo.png
C14

C14. Адрес в метаданных

10 б.

В метаданных l5_photo.png одно поле содержит Base64. Раскодируйте его и сдайте адрес в виде host:port.

Задача ВСОШ: «Шифры Нейрополимерной лаборатории»

Заключительный этап 2024–2025, 9 класс. Дана фотография, в которой «предыдущий аналитик не смог обнаружить ничего подозрительного на самом изображении». Рекомендуемые утилиты: exiftool, base64.

Файл задачи: definitely_not_a_sanity_check.png

ВСОШ-281

ВСОШ: «Шифры Нейрополимерной лаборатории», 9 класс

5 б.

Заключительный этап 2024–2025, 9 класс.

Найдите координаты, спрятанные в фотографии, и сдайте флаг.

Файлы задачи: definitely_not_a_sanity_check.png.

Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.

Задача ВСОШ: «Форензика», 9 класс

Региональный этап 2022–2023. В личные сообщения прислали картинку, на первый взгляд ничего необычного; нужно найти флаг, скрытый в файле. Рекомендуемые утилиты: grep, strings, проводник файловой системы.

Файл задачи: June_odd-eyed-cat.jpg

ВСОШ-11

ВСОШ: «Форензика», 9 класс

5 б.

Региональный этап 2022–2023, 9 класс.

В личные сообщения прислали картинку, на первый взгляд ничего необычного. Найдите флаг, скрытый в файле.

Файлы задачи: June_odd-eyed-cat.jpg.

Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.