Привет, Хабр!
Подводим итоги квеста от MBLT DEV 2018: разбираем задания и дарим подарки — билеты на конференцию, подписки на все продукты JetBrains и сертификаты Skyeng самым удачливым.
![](https://habrastorage.org/webt/jy/es/al/jyesal8obv3tvweuunflz05sqbw.png)
Знаем, что вам пришлось поломать голову. Автор ваших мучений — damnerd. Рассказываем, что же он придумал, и как вы должны были решать задания.
Вход в квест
По традиции спрятали его в видео. Даже на обычной скорости просмотра можно было увидеть шифр, в такт с музыкой проскакивающий на одной из сцен видео:
![](https://habrastorage.org/webt/li/wq/ft/liwqftanb1a9cfim22yhpppqloe.png)
Хотя некоторые ринулись записывать декоративные буквы из другой сцены:
![](https://habrastorage.org/webt/ft/ny/-_/ftny-_4efwhrhnmwjqecnehnzjc.png)
Переписываем шифр и получаем: aHR0 cHM6 Ly9t Ymx0 ZGV2 LnJ1 L3J1 L3F1 aXo=
Увидев на конце знак =
, моментально понимаем, что это строка, закодированная в формате base64. Недолго думая, выполняем
echo 'aHR0 cHM6 Ly9t Ymx0 ZGV2 LnJ1 L3J1 L3F1 aXo=' | base64 --decode
(либо гуглим base64 decode online) и получаем линк на вход в квест: https://mbltdev.ru/ru/quiz
В принципе, URL остался таким же, как в прошлый раз, ибо программисты оказались ленивыми и не поменяли его. Ходят слухи, что были и такие, кто «угадал» линку по памяти, либо показав свой скилл экстрасенсорики.
Задание 1
Нужно было перейти по ссылке и написать, название какой команды мы оставили в подсказке. При переходе мы показали картинку:
![](https://habrastorage.org/webt/66/w2/np/66w2npr5r2xjjzxbvy8qn7nuuhy.png)
Тут всё довольно просто: Source = исходный код. Смотрим, что в нём:
![](https://habrastorage.org/webt/pc/u-/3s/pcu-3sax4o3paf13780mpqa9z2a.png)
Здесь мы не стали запутывать человека каким-либо обфусцированным кодом или чем-то подобным, а вместо этого на самом видном месте самым очевидным способом (словами коровы) выдали подсказку. Как оказалось, наша попытка привлечь внимание обернулась для некоторых наоборот отвлечением внимания от подсказки. Многие в качестве ответа на вопрос вводили команду cowsay
, которая генерирует подобную ASCII-графику. Однако смотреть надо было именно на текст: It’s in the name. Dig it?! Имя команды было непосредственно в самой подсказке: dig. Собственно, имя команды мы и просили (потому что саму команду можно выполнить с одинаковым успехом при разном наборе параметров, а программисты ленивые и система проверки ответов глупая), так что это и было ответом на первый вопрос.
Задание 2
После выполнения команды “dig” нужно было увидеть подсказку, с помощью которой можно перейти к следующему шагу. Мы попросили написать её значение.
Возвращаясь к подсказке из прошлого задания, помимо слова dig, рядом стояло слово name, несущее в себе смысл domain name. Пососедству стоящие name и dig наводят на следующий шаг: необходимость поковырять (или покверить, если угодно) доменные записи для имени, где лежит страница с подсказкой. Конечно, по-умолчанию dig запрашивает A-запись, в которой ничего нет, кроме основной записи с IP-адресом. Надо было догадаться, что запросить необходимо TXT-запись:
> dig +nocmd +noall +answer q1.mbltdev.ru txt
q1.mbltdev.ru. 10108 IN TXT "quest@95.163.108.79:10022"
Либо загуглить dig online и воспользоваться простой веб-мордой, не читая маны по дигу:
![](https://habrastorage.org/webt/ef/oz/8i/efoz8ilbvhv2hjnwaoeti_6foec.png)
Непосредственно значение этой текстовой записи и было как ответом на задание, так и подсказкой к следующему действию — зайти по SSH на хост 95.163.108.79
под пользователем quest
на порт 10022
: ssh quest@95.163.108.79 -p 10022.
Задание 3
Мы загадали ребус о том, что общего у Android и iOS. Попросили вычислить пароль и ввести его.
Многие писали, что это слишком сложно. Но это ребус в квесте, который никто не может пройти! Но вообще всё было в тексте, даже слово Parent.
Пересечение android и apple → OS
Прародитель их ОС → Unix
lowercase(Unix) → unix
sha1(unix) → d13bbbd92b83ddaad994a12bd9d20dfba5fff139
> echo -n "unix" | shasum
d13bbbd92b83ddaad994a12bd9d20dfba5fff139 -
Как обычно, можно было загуглить sha1 online и вычислить сумму, не отходя от кассы.
Задание 4
Всё, что понадобилось для выполнения этого задания, лежало в домашней директории. Мы просили получить следующую подсказку после введения пароля из Задания 3 и написать её значение.
На этом этапе многие хотели сдаться и писали нам гневные комменты, но в действительности всё было очень просто.
![](https://media.giphy.com/media/vD2OMmOvhkDhS/giphy.gif)
В домашней директории лежит всего 4 файла, два из которых не при делах — .profile
и .bashrc
были почти полностью дефолтными для нового пользователя конфигами. Оставалось два файла с «пустым» названием. Кстати, даже SSH MOTD намекал на это своей фразой /\s/
. Это не странный смайлик, а регулярное выражение для пробельного символа. В имени первого из файлов был символ обыкновенного пробела (U+0020: SPACE). Второго — необычный пробел из китайской письменности (U+3000 IDEOGRAPHIC SPACE).
У пользователей iTerm2 на Mac OS была дополнительная трудность: этот эмулятор не хотел копировать необычный пробел. Обычный Terminal без труда копировал символ, и можно было просто выполнять над ним команды простым ⌘C-⌘V. Но для пользователей кривых эмуляторов, а также любителей извращений, были и другие методы, например, сделать ls -li
, чтобы узнать inode number файла, и дальше выполнять команды с помощью find
:
find . -inum 660402 | xargs cat
Кстати, эта команда просто выплёвывает в терминал много пустых строк. Тут знающие люди сразу могли догадаться, что это листинг программы на языке Whitespace, загуглить whitespace interpreter online и получить следующую подсказку. Незнающие люди могли просто догадаться, что надо как-то совместить два файла, которые есть у них в распоряжении. Дополнительной подсказкой было, что один из этих файлов имеет флаг на исполнение (+x) и перловый шебенг. Так или иначе, выполнение программы выдавало ответ: http://q1.mbltdev.ru/q.webp
Задание 5
В четвёртом задании мы спрятали ссылку http://q1.mbltdev.ru/q.webp. В пятом нужно было перейти по ней и ответить на вопрос.
Финальное задание было простым для разрядки обстановки. По данному URL’у была картинка в формате tiff
, сохранённая с разрешением webp
. Некоторые умные графические просмотрщики открывали её без вопросов. Некоторые не открывали. Но достаточно было спросить того, кто знает:
> file q.webp
q.webp: TIFF image data
> mv q.{webp,tiff}
В самой же картинке был простой вопрос:
![](https://habrastorage.org/webt/z8/2f/lw/z82flwvpzfhuuorkoa5kq5msjs4.png)
Ответ: 0. MBLT DEV всегда проходит в Москве. В этом году встречаемся 28 сентября.
Кстати, говорят, некоторые находили картинку обходным путём. Это было возможно, если пошариться по серверу из 4-го задания, потому что и страничка из первого задания, и картинка из последнего, и задания 3 и 4 хостились на одной машине (не забывайте про лень разработчиков). Если вкратце:
quest@questmblt2018:~$ grep root /etc/nginx/sites-enabled/quest
root /var/www/html;
quest@questmblt2018:~$ ls /var/www/html/
index.html index.nginx-debian.html q.webp
Post Mortem
Кстати, о лени разработчиков: мы хоть и знали, что не обойдётся в подобном квесте без кулхацкеров, но поленились защититься от всех возможных проблем. Например, народ начал переписываться broadcast сообщениями, мешая другим проходить квест.
![](https://habrastorage.org/webt/wg/yw/z9/wgywz9i6w127tqqzgs3ccqo_sxk.png)
Был какой-то умелец, который закачал на сервер 15 ГБ данных, исчерпав место на диске. Конечно же нашлись и скрипт-киддисы, запускавшие форк-бомбы, ломающие логин для других пользователей. Ну и не обошлось без «спам»-ботов, пытавшихся, зная правильные ответы, застолбить себе побольше шансов в финальной лотерее.
Приносим свои извинения тем, кому помешали недобросовестные участники.
Подарки и победители
3070 человек попытались пройти квест. Мы получили 666 ответов, почистили читеров, в итоге с квестом успешно справились 297 человек. Среди них мы и разыграли основные подарки.
Каждому участнику присвоили порядковый номер и с помощью генератора случайных чисел разыграли призы. Записали видео с выбором победителей. Имейлы скрыты из соображений приватности.
Билеты на конференцию мобильных разработчиков MBLT DEV 2018
Билеты получают Владислав Козлов, Дмитрий и Игорь.
Годовые подписки на любой продукт JetBrains
Подписки получают Павел Парфёнов, Вадим Скрипник и Андрей.
4 бесплатных занятия английским в онлайн-школе Skyeng
Сертификаты получают Сергей и Валентин.
2 бесплатных занятия английским в онлайн-школе Skyeng
Сертификаты получают Алексей и Евгений.
Остальным участникам квеста мы тоже отправили небольшие подарки. Проверяйте почты!
Встречаемся на MBLT DEV 2018
Конференция пройдёт 28 сентября в Москве. Участников ждут полезные доклады от разработчиков из Netflix, Uber, Revolut, Badoo и других компаний, нетворкинг и фан. Мы приготовили ещё несколько квестов с крутыми призами. Билеты доступны на сайте MBLT DEV.