Итак, что у нас имеется?
Олег Тиньков сказал бы «НИ-**-*». Но я скажу, что у нас есть фото и это уже ого-го сколько.
С чего начать? Конечно же с классики...
Просмотр ни по слоям, ни по каналам, ни по информации внутри файла не даёт нам никаких значимых артефактов на изображении.
Что же тогда делать?
Изображение не выглядит как сгенерированное ИИ, и если изначально оригинал был без встроенной стеганографии (автор не знаком с группой «Каста»), то наверняка его можно найти. Сравнив оба файла, можно обнаружить различия — возможно, это натолкнёт нас на мысль, в каком направлении двигаться дальше.
Итак, размер нашего изображения — 2160×2160, формат PNG. При поиске по картинке сразу переключимся на вкладку «Точные совпадения» в Google или «Сайты» в «Яндексе», чтобы отсеять то, что нам явно не подходит.
Google не может предложить ничего путного, а вот «Яндекс» даёт источник с нужным нам размером (не средним 😁).
Скачиваем исходное изображение и делаем дифф с тем, что дано в задаче. При получении разницы сразу заскейлим её так, чтобы она была видна невооружённым взглядом.
❗️ Важное обновление
Статья, в которой находилась исходная картинка, была удалена. Чтобы не искать оригинал по другим ресурсам, прикладываю файл.
Оригинальная картинка: скачать.
Приблизив результат диффа, видим, что по всему изображению в красном канале разбросаны биты. Чтобы убедиться, что они находятся именно в LSB, можно при построении диффа взять другой коэффициент и пройтись по остальным слоям изображения.
Diff между оригиналом и картинкой из задачи
Вот теперь точно видно, что в изображении есть какая-то информация, которой там изначально не было. Так как вся разница сосредоточена только в красном канале, возьмём для дальнейшего изучения только его.
Если присмотреться к соседним столбцам в нашей матрице, видно, что изменённые пиксели находятся не на одной высоте, а расположены со смещением по вертикали.
Предположим, что информация «размазана» по изображению равномерно, и сдвиги в соседних рядах по горизонтали или вертикали связаны с тем, что интервал между пикселями с информацией не является делителем ширины или высоты изображения.
Дальнейшие манипуляции можно повторить как для случая с вертикальной записью строки, так и для горизонтальной.
Также отметим, что в столбцах и строках, которые мы видим, есть пропуски. Учитывая наше допущение о равномерности распределения информации, считаем, что там тоже есть данные, которые мы не подсветили диффом из-за того, что бит не менялся.
С тем, чтобы определить период между битами, думаю, справитесь сами... И в итоге, получив значение этого периода (правильный в контексте решения период по горизонтали), соберём по изображению все биты и составим из них строку. Записав всё в файл, получим текст песни и флаг в конце!
Вокруг шум, пусть так, не кипишуй, всё ништяк