Райтап на задачу «Шахматы с Момо»

skydaemon

Автор:

skydaemon

27 октября 2026

10

27.10.2026
Шахматы с Момо
Категория:

Stegano

Задача «Шахматы с Момо»

Автор:

3T0T_FL4G_1MB4

Первая кровь:
AlexB
Сложность:
hard
Дата публикации:
25.10.2025
Решений:
49
Рейтинг:
4.6/5
Ссылка:
Решать

Описание

Я хотел спрятать флаг на самом видном месте, а спрятал на невидимом

Исходное изображение LovelyMomo.png

Начнём решение с визуального осмотра, главное — не переусердствуйте ;). Ничего необычного, впрочем, глазами не видим. Отправим картинку в https://aperi.bug-makers.ru/ и тут уже интереснее:

Анализ исходного изображения в AperiSolve

Альфа-канал выглядит не совсем обычно, а конкретно — как шахматная доска:

Шахматный узор в альфа-канале изображения

Объясняет название. Но что нам даёт такой паттерн? Это не похоже на сами данные (хотя и можно предположить, что в каких-то местах альфы он ломается и прячет в себе нагрузку). Тут сделаем небольшое отступление. Что вообще представляет собой альфа-канал? По сути, это слой изображения, отвечающий за его прозрачность. Если у нас RGBA-изображение и при этом его пиксели полностью непрозрачны, то значение альфы для каждого пикселя равно 255. Задача, очевидно, завязана на альфа-канале, поэтому изучим его внимательнее, начнём с общей статистики, для чего воспользуемся набором утилит ImageMagick:

identify -verbose LovelyMomo.png
Статистика альфа-канала в ImageMagick

Здесь уже видим за счёт чего альфа получает такой паттерн — значения примерно половины пикселей выставлены в 254. Но это всё ещё не данные. А что, если это указатели? Если альфа выступает в задаче в роли указателя на конкретные пиксели, проверим самые незаметные данные этих пикселей — младшие биты RGB. Допустим, А=254 — извлекаем значение из LSB RGB, А=255 — пропускаем. Тут уже не обойтись без питона, накидаем небольшой скрипт, который будет идти по изображению слева направо, сверху вниз, извлекать из пикселей, где значение альфы = 254, LSB и сшивать их:

Скрипт извлечения младших битов RGB по значению альфа-канала

Запустим скрипт и в самом начале потока получим:

Начало извлечённого потока с флагом

Сдаём флаг. И грустим по кроссоверу, которого мы так и не дождались :(

Иллюстрация к завершению разбора «Шахматы с Момо»
Если вы нашли опечатку или ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter

Также по теме:

Райтап на задачу «496 отличий»

/Разборы задач

Райтап на задачу «496 отличий»

Разбор задачи «496 отличий»: двоичная подсказка в изображении, поиск иконки и извлечение скрытых данных.
Прочитать

5

Райтап на задачу «Really deep bzzz»

/Разборы задач

Райтап на задачу «Really deep bzzz»

В эту странную игру про пчёлок кто-то напихал пасхалок, может, даже флаг где-то спрятал.
Прочитать

21