Три в одном: текст в цвете букв

стеганография · задача 09   pngцветascii

Картинка с надписью «coffee maybe?» и подсказка про чай «с цветами». zsteg и Stegsolve ничего не находят.

Платформа
CTF (флаги вида DUCKERZ{…})
Носитель
PNG
Приём
цвет каждой буквы = три кода ASCII (R, G, B)
Инструменты
пипетка (GIMP, Paint, KolourPaint), CyberChef
Статус
решено

Сначала глаза, потом инструменты

Если описать картинку словами до запуска утилит, ответ почти виден: каждая буква надписи своего цвета, и все цвета тусклые, сероватые. Ярких чистых цветов вроде #FF0000 нет.

Почему тусклые: если в R, G и B лежат коды букв (примерно 65–125), каждый канал получается средним по яркости, и цвет выходит «грязным». Это почти подпись такого приёма.

Механизм

Цвет — это три числа R, G, B. Каждое число — код одного символа. Отсюда и название: три символа в одном цвете. А «чай с цветами» означает «с цветами букв».

hex
#484558
72 69 88
HEX
#4E4F54
78 79 84
NOT
#455321
69 83 33
ES!
Мой пример: слово «hex» покрашено так, что цвета читаются как «HEXNOTES!»

Как снять цвета

  • GIMP: пипетка (клавиша O) → клик в центр буквы → в окне цвета поле «HTML-нотация».
  • Paint в Windows: «Палитра цветов» → «Изменить цвета», там поля R, G, B.
  • Кликать нужно в середину толстой части буквы: края сглажены, и там цвет смешан с фоном.

Перевод в символы: CyberChef → From Decimal или одна строка Python:

python3 -c "print(''.join(chr(int(h[i:i+2], 16)) for h in ['484558','4E4F54','455321'] for i in (0, 2, 4)))"
HEXNOTES!
полная таблица цветов и флаг (спойлер)
БукваЦветR G BСимволы
c #44554368 85 67DUC
o #4B455275 69 82KER
f #5A7B6E90 123 110Z{n
f #6F215F111 33 95o!_
e #695F77105 95 119i_w
e #616E7497 110 116ant
m #5F6D7995 109 121_my
a #5F666195 102 97_fa
y #766F75118 111 117vou
b #726974114 105 116rit
e #655F74101 95 116e_t
? #65617D101 97 125ea}
DUCKERZ{no!_i_want_my_favourite_tea}

Почему не сработали Stegsolve и zsteg

Они ищут то, что не видно: отдельные биты и каналы. Здесь данные лежат в явном значении цвета, которое видно глазом. Битовые плоскости его только размазывают. Видимую аномалию надо «прочитать», а не «проявить».