Урок 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) |
|
1F 8B |
gzip |
42 5A 68 (BZh) |
bzip2 |
7F 45 4C 46 (.ELF) |
программа Linux |
D4 C3 B2 A1 |
запись трафика PCAP |
Если file пишет просто data, это не «пустой» файл: формат не распознан. Тогда смотрят первые байты сами и ищут вложенные файлы — об этом следующий урок.
C10. Картинка под чужим именем
В наборе 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. Настройки внутри JAR
Файл artifact_q.png из того же набора на самом деле JAR. Не запуская его, найдите JSON-файл настроек и сдайте его путь внутри архива.
Задача ВСОШ: «Заражённый лаунчер Pinecraft»
Региональный этап 2025–2026, 9 класс. Игроки установили «улучшенный» лаунчер ZLauncher-Premium, и их аккаунты взломали. Даны установочный файл и дамп процесса лаунчера. Рекомендуемые утилиты: tar, unzip, jar, md5sum, strings, grep.
Файл задачи: task.tar.gz
Ход: распаковать архив → unzip -l лаунчера → найти класс, которому там не место → для хеша распаковать именно его → адрес и ключ искать строками в классе и в дампе.
ВСОШ: «Заражённый лаунчер Pinecraft», 9 класс, вопрос 1/3
Региональный этап 2025–2026, 9 класс.
MD5-хеш вредоносного файла в лаунчере. Ответ без обёртки.
Файлы задачи: task.tar.gz.
Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.
ВСОШ: «Заражённый лаунчер Pinecraft», 9 класс, вопрос 2/3
Региональный этап 2025–2026, 9 класс.
URL, куда отправляются пароли игроков, с полным абсолютным путём (с протоколом или без). Ответ без обёртки.
Файлы задачи: task.tar.gz.
Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.
ВСОШ: «Заражённый лаунчер Pinecraft», 9 класс, вопрос 3/3
Региональный этап 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», которая сама пробует популярные кодировки.
Метаданные легко подделать, поэтому для расследования это подсказка, а для олимпиадной задачи — частое место, где спрятан ответ.
C14. Адрес в метаданных
В метаданных l5_photo.png одно поле содержит Base64. Раскодируйте его и сдайте адрес в виде host:port.
Задача ВСОШ: «Шифры Нейрополимерной лаборатории»
Заключительный этап 2024–2025, 9 класс. Дана фотография, в которой «предыдущий аналитик не смог обнаружить ничего подозрительного на самом изображении». Рекомендуемые утилиты: exiftool, base64.
Файл задачи: definitely_not_a_sanity_check.png
ВСОШ: «Шифры Нейрополимерной лаборатории», 9 класс
Заключительный этап 2024–2025, 9 класс.
Найдите координаты, спрятанные в фотографии, и сдайте флаг.
Файлы задачи: definitely_not_a_sanity_check.png.
Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.
Задача ВСОШ: «Форензика», 9 класс
Региональный этап 2022–2023. В личные сообщения прислали картинку, на первый взгляд ничего необычного; нужно найти флаг, скрытый в файле. Рекомендуемые утилиты: grep, strings, проводник файловой системы.
Файл задачи: June_odd-eyed-cat.jpg
ВСОШ: «Форензика», 9 класс
Региональный этап 2022–2023, 9 класс.
В личные сообщения прислали картинку, на первый взгляд ничего необычного. Найдите флаг, скрытый в файле.
Файлы задачи: June_odd-eyed-cat.jpg.
Флаг сдаётся в поле ниже и засчитывается и в карточке задачи на платформе. Число попыток общее с платформой, как на олимпиаде. Полный разбор открывается кнопкой с ключом под заданием.