[Из песочницы] Прохождение квеста от mail.ru

Под катом описание того, как я прошел квест от mail.ru (квест). Если не хотите портить впечатление от квеста, не ходите под кат.

Если нет приветственной страницы
В самом начале после перехода по ссылке я увидел картинку, что квест не предназначен для мобильных устройств. Запустив девелоперскую консоль хрома, я нашёл в style.css блок media и изменил 1200 px на 120 px, после этого увидел первоначальную страницу.

Решение 1-го задания
Первое задание было простым — в исходном коде страницы было указанно секретное слово: white.

Решение 2-го задания
Ответ так же в исходном коде страницы, а именно в комментариях.

Ответ: W3C.


Решение 3-го задания
Ответ в исходном коде, необходимо перейти в конец страницы, которая содержит 10 000 строк.

Ответ: молодец.


Решение 4-го задания
Вопрос с неправильной кодировкой, необходимо указать кодировку в браузере UTF-8 и получить ответ: кракозябры

Решение 5-го задания
В исходном коде страницы есть изображение sequence.gif. Открываем его в отдельной вкладке, жмём «обновить» и видим ответ: джиф.

Решение 6-го задания
В исходном коде страницы есть изображение, но на него указывает неправильная ссылка. Открываем её в отдельной вкладке, исправляем имя файла на blok_shema.png. В итоге получаем алгоритм подсчёта факториала 10. Поисковая строка яндекса хорошо умеет считать факториал.

Ответ: 3628800.


Решение 7-го задания
В исходном коде страницы есть закодированная подсказка, декодируем её при помощи link получаем: «Если координаты у вас получаются не в Москве, значит вы что-то делаете не так.»

Дальше я посмотрел координаты Москвы, сопоставил с тем, что находится на странице, преобразовал и получил следующие координаты: 55°47.48916′N 37°32.94132′E. Ввёл их в Яндекс.карты и получил улицу Уго Чавеса, ответом была фамилия данного политического деятеля.


Решение 8-го задания
Следующие задание я решил наугад, не понял текст. Увидел в исходном коде страницы файл mikrotochka.png и открыл его, дальше я просто ввел my.com и попал на следующий уровень

Решение 9-го задания
Задача на знание систем счисления: 7+7 =14 в десятичной системе. Соотвественно число 16 — это число в восьмеричной системе счисления. Осталось число 49 перевести в восьмеричную систему счисления и получить результат: 61

Решение 10-го задания
Так как я не помнил коды данных символов, я просто нашел их в интернете и скопировал. ±§¤

Решение 11-го задания
Смотрим в исходном коде страницы имя файла. Скачиваем его, смотрим мета-данные и получаем ответ: Yarrrost.
Команды для ubuntu
sudo apt-get install jhead
wget puzzle.mail.ru/exif.jpg
jhead -v exif.jpg

Решение 12-го задания
В этом задании вызываем в консоле отладчика функцию stepbystep ().
Код
for (i=0; i<10000; i++) { stepbystep() }

Решение 13-го задания
В этом задание надо зашифровать текст: vigenere при помощи ключа: cipher и шифра Виженера для этого я воспользовался этой ссылкой

Ответ: xqvlrvtm


Решение 14-го задания
На данной странице присутствуют ip-адреса, записанные одним числом. Вот статья автора квеста о данной форме записи.
Команды для Linux
$ ping 0×5E64B4C9
PING 0×5E64B4C9 (94.100.180.201) 56(84) bytes of data.
64 bytes from 94.100.180.201: icmp_seq=1 ttl=55 time=52.8 ms
^C
 — 0×5E64B4C9 ping statistics — 1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 52.849/52.849/52.849/0.000 ms
$ host 94.100.180.201
201.180.100.94.in-addr.arpa domain name pointer ko.mail.ru.

Получаем ответ: ko.mail.ru.

Решение 15-го задания
На странице записано время в unix timestamp, можно воспользоваться online конвертером или командой date
Команда для Linux
date -d '01/01/2020 00:00:00' +»%s»

Ответ: 1577836800

P.S. Учтите, что время на машине, где запускаете команду, должно быть в UTC. Если нет, то необходимо запускать с указанием смещения по времени, в моём случае +7.


Решение 16-го задания
Задание, на которое я потратил больше всего времени, так как gimp упорно заливал не так, как мне хотелось. Поэтому я воспользовался этим онлайн редактором и получил нужный результат: 42.

Решение 17-го задания
В этом задании мы видим изображение в формате png, закодированное в base64. Я воспользовался данной ссылкой для получения изображения, в итоге получилось: spam.

Решение 18-го задания
Данное задание я решил методом перебора. A=1. А дальше прикинув что:
Решение
C+D=9
C+E=10
B+B>10
B — чётное число,
соотвественно B может быть 6 или 8.

Методом перебора я получил ответ: 1,8,4,5,6

Решение 19-го задания
Сначала я попросил подсказку
nslookup -type=TXT podskazka.donkeyhot.org
Server: 10.11.101.6
Address: 10.11.101.6#53

Non-authoritative answer:
podskazka.donkeyhot.org text = «NATO alphabet»

Затем наяндексил эту статью из wiki. Сопоставил изображения с алфавитом и получил ответ: AMIGO.


Решение 20-го задания
Для начала включим форму ввода и кнопку.
document.getElementsByName('answer')[0].disabled=false;
document.getElementsByName('btna')[0].disabled=false;

Итак, мы видим таблицу, в которой есть черные и белые прямоугольники. Предполагаю, что это может быть двоичный код, соответственно, это может быть: 01101110 или 10010001. Далее я нашёл таблицу соответствия между буквами и двоичным кодом link 01101110 соответствует «n». Значит белый прямоугольник — »0», а чёрный — »1». Остальные буквы:
01100101 - e
01111000 - x
01110100 - t

Ответ: next.

Решение 21-го задания
Смотрим исходный код, видим, что присутствует изображение: message_digest.png открываем его и получаем 16-ный код:
 6074c6aa3488f3c2dddff2a7ca821aab

Вбиваем хэш в Яндекс и в этой статье находим ответ: 5555

Решение 22-го задания
Изображены печеньки, значит надо посмотреть cookie. Я смотрел через Chrome DevTools → Network→cookies.jpg→Request Headers и увидел: secret=we_have_cookies, соответсвенно ответ: we_have_cookies

Решение 23-го задания
Тут мы видим ребус «кофе в квадрате». Запишем кофе на английском языке, заменим букву «О» на »0». Получается c0ffe. Теперь умножаем c0ffee*c0ffe, получаем (link) ответ: 9180E4DC0144

Решение 24-го задания
Для начала определим системы счисления. 221 не делится на 2,3,5, соотвественно дальше перебираем простые числа. Получаем 13 и 17. Так как в первом числе есть символ «e», то соответсвенно это число в 17-ричной системе счисления, теперь просто приводим числа к одной системе счисления и складываем, получаем ответ: 13,17, GEEK

Решение 25-го задания
Самое интересное на мой взгляд задание. Для начала я начал искать подсказки. Следуя рекомендациям в исходном коде, я полез в HTTP-заголовки. Было два заголовка:
X-Podskazka-1:Eto russkiy tekst
X-Podskazka-2:Zashifrovan shifrom prostoy zameny

После этого стало ясно, что надо применять частотный анализ текста. Написал небольшой скрипт, который определил частотность.
import collections
# -*- coding: utf-8 -*-

fl = open("file.txt")
text = fl.read()

c = collections.Counter(text.decode('utf-8').replace(',','').lower())

total_word_count = sum(c.values())
for word, count in c.most_common(33):
    print word, count, count*1.0/total_word_count

Нашёл таблицу частотности букв в wikipedia
Составил таблицу:
Таблица соответствия
Таблица соответствия
Исходный текст Частотность букв русского языка
Ь О
Ш Е
О А
И И
В Н
У Т
Щ С
Д Р
Й В
Ф Л
Х К
Ю М
Ж Д
К П
П У
Э Я
Н Ы
Е Ь
С Г
Р З
Ц Б
Т Ч
А Й
Л Х
Ы Ж
З Ш
Б Ю
Г Ц
Я Щ
Ч Э


Потом воспользовался этим сайтом

Получив частотный словарь, я начал выбирать слова из 3-х букв. Вот первые соответствия, я выписал их в том порядке, в котором находил.

хох — как 
хохиш — какие
хохиш-диць — какие-либо
хьнко-диць — когда-либо
уихьнко — никогда
пышнь — моего.

Потом я решил расшифровать одну фразу. Выбор пал на:

Цедь ьхьдь тшвещшз тойьф куэ, хьнко пе

Частично дешифрованная фраза
Было около *е*ы*е* *а*о* дн*, когда мы

Дальше стал искать соответствия:

тшнь — чего
фикипь — видимо
твь — что
Фраза стала:
Было около четы*е* ча*ов дн*, когда мы

По смыслу подходила фраза:

Было около четырёх часов дня, когда мы

А дальше я вбил эту фразу в кавычках в поисковую строку яндекса и узнал, что эта фраза из романа «Золотой жук». Название романа и являлось ответом.

Для поиска слов использовал эту ссылку


Спасибо за внимание!

Комментарии (2)

  • 4 октября 2016 в 12:51

    0

    Спасибо, я последний не осилил, он самый затратный по времени, а его-то как раз у меня и не было.
  • 4 октября 2016 в 13:02

    0

    Ох, ну раз пошла такая пьянка — немного дополню в стиле «что имел в виду автор»:
    7
    Задание — это сообщения формата NMEA, который является стандартным для GPS-приемников. Формат координат немного отличается от того, что кушает Google Maps, поэтому нужно сконвертировать.
    8
    Текст исключительно для отвода глаз. О микроточках
    12
    Вообще все задачи решаются без программирования — не все же знают JS. Можно просто расковырять исходный код и декодировать base64 ответ. Ну или зажать кнопку на клавиатуре монеткой (-:
    23
    Там еще есть подсказка: в коде ASCII-арт надпись с перепутанными строками. Легко можно понять, где верхняя и где нижняя и перебором восстановить остальные. Получаем gopher://donkeyhot.org/. Вспоминаем, что такое gopher. Ставим клиент или плагин для бразуера, переходим по URL, читаем подсказку.

© Habrahabr.ru