[HTB] Quick R

В задании получаем адрес сервера. Подключаемся к нему и видим следующую картину:

Декодируем QR и получаем такую строчку:

То есть надо ещё уравнение решить. Но проблема в том, что на всё это есть только 3 секунды:

Значит надо писать скрипт. Тут возникает пара проблем. Во-первых, с сервера мы не получаем картинку. Мы получаем байты, которые после декодирования дают нам картинку. А для декодирования нужна именно картинка. Соответственно, надо создать изображение QR на основе этих байтов, потом декодировать, а потом решить задачку.

Ну давайте решать всё постепенно. Сначала подключимся к серверу и получим сами байты изображения:

Дальше попробуем определить какие байты отвечают за красный цвет и какие за белый. Выведем полученные данные на экран и увидим огромное полотно вот таких байт:

Ничего не понятно. Давайте разделим строки и посмотрим на какой строке есть и красные и белые знаки:

Так, теперь посмотрим на 6 строку в байтах:

Ну тут уже можно догадаться, что за белый цвет отвечает последовательность \x1b[0m\x1b[7m а за красный — \x1b[0m\x1b]41m.

Есть и другие байты, но они стоят по краям, возможно, просто для выравнивания.

Значит теперь определим красный и белый цвета, дальше разобьем строки по пробелам и оставим в строках только последовательности для белого и красного цветов:

Теперь создадим чёрно-белое изображение и заполним его данными:

Осталось только декодировать QR, решить уравнение и отправить ответ:

Полный скрипт:

--

--

awawa.fun

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store