Curses and Hexes - Stego TJCTF 2016
Задание:
Дано изображение и требуется найти флаг.
Таск по решению похож на Grey Shades с предыдущего райтапа.
Открываем изображение в редакторе, в котором возможно посмотреть цвет (разделенный на каналы Red, Green и Blue).
Замечаем, что все три параметра цвета в пределах от 50 до 150, что наводит на мысли о переводе их в ASCII (стоит упомянуть, что 32 - номер символа пробела).
Пишем программу, которая делает следующее:
1. Проходит по вертикалям и изучает каждый пиксель
2. Получает все три цвета Red, Green и Blue .
3. Переводит номера цветов в ASCII символы.
4. Обьединяет все символы в строку.
Код программы:
from PIL import Image
#загружаем изображение
im = Image.open('curses_and_hexes_be8ff7fc6f52da613718cf26c2f8e5414bf34b57ac2203b7baff69558ffb05f3.png')
answer = ''
#конвентируем изображение в массив пикселей с тремя параметрами Red, Green и Blue
rgb = im.convert('RGB')
#проходимся по вертикалям (524 - высота, 308 - ширина )
for y in range(300):
for x in range(300):
#получаем цвет пикселя
r, g, b = rgb.getpixel((x, y))
#добавляем "символ" цвета в строку
answer+=chr(r)+chr(g)+chr(b)
В итоге мы получили отрывок из рассказа "The Metamorphosis".
Делаем поиск по символу " { " и находим флаг!
FLAG: tjctf{y0u'r3_a_w1z4rd_H4rry!!}
P.S. К данному решению можно было прийти и по-другому.
Достаточно погуглить "ctf png noise writeup" и первая ссылка приведет вас к похожему таску https://github.com/ctfs/write-ups-2014/tree/master/asis-ctf-quals-2014/white-noise
- Автор: drakylar
- Комментарии: 0
- Просмотры: 4610