Итоги квеста, который вы прошли. Или нет

    Привет, Хабр!


    Подводим итоги квеста от MBLT DEV 2018: разбираем задания и дарим подарки — билеты на конференцию, подписки на все продукты JetBrains и сертификаты Skyeng самым удачливым.




    Знаем, что вам пришлось поломать голову. Автор ваших мучений — damnerd. Рассказываем, что же он придумал, и как вы должны были решать задания.


    Вход в квест


    По традиции спрятали его в видео. Даже на обычной скорости просмотра можно было увидеть шифр, в такт с музыкой проскакивающий на одной из сцен видео:




    Хотя некоторые ринулись записывать декоративные буквы из другой сцены:




    Переписываем шифр и получаем: 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


    Нужно было перейти по ссылке и написать, название какой команды мы оставили в подсказке. При переходе мы показали картинку:



    Тут всё довольно просто: Source = исходный код. Смотрим, что в нём:



    Здесь мы не стали запутывать человека каким-либо обфусцированным кодом или чем-то подобным, а вместо этого на самом видном месте самым очевидным способом (словами коровы) выдали подсказку. Как оказалось, наша попытка привлечь внимание обернулась для некоторых наоборот отвлечением внимания от подсказки. Многие в качестве ответа на вопрос вводили команду 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 и воспользоваться простой веб-мордой, не читая маны по дигу:




    Непосредственно значение этой текстовой записи и было как ответом на задание, так и подсказкой к следующему действию — зайти по 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 и написать её значение.


    На этом этапе многие хотели сдаться и писали нам гневные комменты, но в действительности всё было очень просто.



    В домашней директории лежит всего 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}

    В самой же картинке был простой вопрос:




    Ответ: 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 сообщениями, мешая другим проходить квест.




    Был какой-то умелец, который закачал на сервер 15 ГБ данных, исчерпав место на диске. Конечно же нашлись и скрипт-киддисы, запускавшие форк-бомбы, ломающие логин для других пользователей. Ну и не обошлось без «спам»-ботов, пытавшихся, зная правильные ответы, застолбить себе побольше шансов в финальной лотерее.


    Приносим свои извинения тем, кому помешали недобросовестные участники.


    Подарки и победители


    3070 человек попытались пройти квест. Мы получили 666 ответов, почистили читеров, в итоге с квестом успешно справились 297 человек. Среди них мы и разыграли основные подарки.


    Каждому участнику присвоили порядковый номер и с помощью генератора случайных чисел разыграли призы. Записали видео с выбором победителей. Имейлы скрыты из соображений приватности.


    Билеты на конференцию мобильных разработчиков MBLT DEV 2018



    Билеты получают Владислав Козлов, Дмитрий и Игорь.


    Годовые подписки на любой продукт JetBrains



    Подписки получают Павел Парфёнов, Вадим Скрипник и Андрей.


    4 бесплатных занятия английским в онлайн-школе Skyeng



    Сертификаты получают Сергей и Валентин.


    2 бесплатных занятия английским в онлайн-школе Skyeng



    Сертификаты получают Алексей и Евгений.


    Остальным участникам квеста мы тоже отправили небольшие подарки. Проверяйте почты!


    Встречаемся на MBLT DEV 2018


    Конференция пройдёт 28 сентября в Москве. Участников ждут полезные доклады от разработчиков из Netflix, Uber, Revolut, Badoo и других компаний, нетворкинг и фан. Мы приготовили ещё несколько квестов с крутыми призами. Билеты доступны на сайте MBLT DEV.

    e-Legion

    83,00

    Лидер мобильной разработки в России

    Поделиться публикацией
    Комментарии 35
      0
      Поздравляю счастливчиков!
      Спасибо за квест.
      Четвёртый вопрос был и вправду неплохим.
      К сожалению сложность вопросов весьма сильно разбросана. Пятый оказался на пару минут. А третий… Вопрос спорный. Но ок, прошёл и его.
      Жаль, ничего не выйграл.
      К слову, ничего в почту не пришло. Наверное, я в числе читеров. Решал всё сам, но ок, читер, так читер.
        0
        И мне ничего не пришло. Странно у них отсев читеров работает как-то. Ну да и ладно, квест весёлый был :)
          0

          Такая же фигня :-(
          А вообще странно: не ахти какие ценные подарки, а "читеров" больше половины.

            0
            Таки-пришло. Но посчитали, что я не прошёл квест. Хотя да, таки-прошёл.
            Начал дома, недопрошёл.
            Потом прошёл на работе.
            Да пофиг. Я не за призами квест проходил.
              0
              Пока писал, в почту упало второе письмо. Видимо от удачной сессии браузера.
              Там указано, что я прошёл. Приз тот же, но чуть больше.
              Поздравляем, ты прошёл квест от MBLT DEV!

              Мы знаем, было непросто. Сегодня мы подвели итоги квеста: более 3000 участников, из которых только 297 решили все 5 заданий. Читай подробный отчёт в хабрапосте.

              Получается, учёт вёлся не по e-mail, а по сессиям.
          0
          А какая связь, если не секрет, между Android, iOS и sha1?
            0
            На почту ещё придёт, письма в очереди на отправку. Если через 30 минут так ничего и не придёт, напишите мне, будем разбираться.
              0
              Пришло. Да, видимо почтовые олени Санты бегут неторопливой рысцой.
              Спасибо за подарок! Мне он не пригодился, но всё равно спасибо.
                0
                А на вопрос этой ветки сможете ответить, или затрудняетесь? Что общего у двух операционок с разными ядрами и криптоалгоритма, как через одно надо было догадаться выйти на другое?
                  0
                  en.wikipedia.org/wiki/IOS OS family Unix-like, based on Darwin (BSD), macOS
                  https://en.wikipedia.org/wiki/Android_(operating_system) OS family Unix-like

                  немного притянуто, но все-таки unix
                    0
                    Ок, понял. Надо было догадаться, что лучше искать в en.wiki. А при чем тут sha-1?
                      0
                      когда в консоли подключаешься по ssh
                      ssh quest@95.163.108.79 -p 10022
                      там была подсказка, что надо было сделать lowercase а потом sha1
                        0
                        Спасибо, понял. Жаль, что без подсказки связи между этими словами не видать вообще. То есть, недостаточно было просто найти ответ.
              0
              в задании 2 выполнял dig к mbltdev.ru, потом дошло, что надо к q1.mbltdev.ru
              в 3 сначала думал что общее у android и ios буквы io, пытался от какой-то их комбинации взять sha1 и получить пароль, потом уже подумал про parent
              ну а в 4 чего только не делал, пока не додумался что можно попробовать перловый скрипт применить к пустому файлу. причем так и делал, брал inode number и вызывал скрипт с файнд по inode

              и в почту мне тоже ничего не пришло, хотя я точно не читер :) а все, увидел про очередь)
                0
                А где список тех кого посчитали честными победителями? меня кажется в этом списке нет и письмо на почту пришло будто я не справился с квестом хотя я его прошел.
                  0
                  > Так или иначе, выполнение программы выдавало ответ

                  А расскажите как по-кошерному нужно было это запустить? Интересуют варианты помимо `./*` :)
                    +1
                    хз, как по кошерному. я сначала
                    ls -il
                    нашел inode number «пустого» файла, затем запустил как-то так
                    find . -inum INODE_NUMBER -exec \.' ' {}
                      +1
                      А я воспользовался идеей из этой статьи.
                      Выполнил команду:
                      select i in *; do perl ./' ' $i; done
                      — получил список файлов
                      — напечатал номер нужного мне
                      — enter
                      — …
                      — profit
                        0
                        высший пилотаж)
                          0
                          Я не быстро, но после многих разных попыток изучения файлов доступными способами нашел такое решение:
                          ./' ' *
                          (предполагая, что во втором имени некий не-пробел, и это таки сработало)
                            0
                            perl ./*
                            Слабоумие и Отвага)))
                          0

                          Можно так:


                          ls -a
                          ls -1 | xxd -p
                          cat ./\ 
                          find $'./\xe3'* -exec bash -c "cat {} | perl ./\ " \;

                          Но я по-другому делал, а консольное решение потом для интереса поискал.


                          Открыл SSH, нашел файл с пробелом, пропуск в выводе ls не заметил. Запускаю, ничего не происходит. Подключился через WinSCP, там видно еще один файл с кракозябрами в имени. Думаю, то ли так надо, то ли мусор какой-то, внутри пробелы. Скачал на всякий случай.
                          Изучил код, это какой-то интерпретатор. Еще поизучал, он оказывается принимает пробелы. Запустил файл, скопировал пробелы из другого, вставил в терминал, нажал Ctrl+D.

                            0
                            quest@questmblt2018:~$ ls -1 | od -cb
                            0000000      \n 343 200 200  \n
                                    040 012 343 200 200 012
                            0000006
                            quest@questmblt2018:~$ ./' ' < `printf "\343\200\200"`
                            http://q1.mbltdev.ru/q.webp
                            

                            0
                            Проблемы вызвало только третье задание.

                            Пересечение Андроид и Эппл -> телефон, сотовый, связь, корпус, процессор, тачскрин, экран, кирпич, далее у меня были совсем странные идеи типа Америка со всеми вариантами написания и даже планета Земля и всякие роботизированные яблоки. Гугл по запросам яблоко робот выдает неплохие картинки.

                            Родитель от предыдущих вариантов -> Ну тут фантазия разгулялась. От Белла до кремния. Количество вариантов было ну очень большое. И пробовать все надо на 2 языках. Ну кто его знает на каком языке вы ответ посчитаете верным.
                              0
                              У меня было вот так (git bash):


                              и я сначала пробовал побитовое И и ИЛИ четырехбайтовых строк. Потом помедитировал на вопрос, сообразил про Unix, и уже потом догадался, что это наверно Unicode-символы)
                                0
                                Мне повезло. Мой клиент эмодзи сразу увидел. С вашим ужасом вообще непонятно что делать.
                                  0
                                  я эти комбинации нагуглил) ну яблоко и робот. и так было понятно из задания про Андроид и иОС
                                0
                                А я сначала по символам робота и яблока стал искать робот Apple и наткнулся на относительно свежую новость от 19 апреля 2018г:
                                В преддверии Дня Земли компания Apple представила нового робота по имени Daisy. Он разбирает на части смартфоны iPhone, чтобы извлекать из них ценные материалы для повторного использования.
                                Предыдущего робота, предназначавшегося для разборки iPhone, звали Liam, он был представлен Apple в 2016 году.

                                но sha1(liam) не подходил ко входу в терминал.
                                +1
                                Привет, спасибо за квест, письмо пришло :) Удивлен, что справилось так мало участников, и немного поднял свое чсв :D
                                Убил 4 часа, впервые узнал что такое dig, да и вообще с unix не сильно-то и знаком.
                                  +1
                                  Поздравляю тех мобильных разработчиков, кто удачно прошел квест. Я не смог. Про команду DIG не знал, каюсь, так как редко сталкиваюсь с необходимостью делать то, что эта команда делает. По поводу 3го вопроса, никогда бы не смог его пройти. Разрабатывал еще под первые iPhone, и тогда, и сейчас iOS не был UNIXом, впрочем, равно как и Android.
                                    0

                                    katiem, а давайте попросим штатного дизайнера и нарисуем электронные сертификаты для те кто прошел?
                                    Так сказать для повышения ЧСВ (и дырку на обоях закрыть).

                                      +1
                                      Напишите мне в личку, я сделаю вам сертификат)
                                      +1
                                      Юху, я все таки выиграл, появился лишний повод подтянуть английский) Правда успел расстроиться по поводу отсутствия письма, но оказалось гугл закинул письмо в спам(
                                        0
                                        Блин! Я вводил в ответ на четвертый вопрос, ответ на 5-й! И не мог понять, какого черта я не перехожу на следующий вопрос! Ппц. Я просто не смог подумать, что ответом может быть линк на файл! Поскольку посчитал что запустить интерепретатор whitspace это совсем просто, хоть и пришлось мучаться через inode и find
                                        Эх, ну ладно, получается квест я прошел, технически, все ответы нашел, просто вводил не тот ответ в 4-м задании :)
                                        Спасибо!
                                          0

                                          Использовал iTerm2 и на четвертом вопросе и правда столкнулся с проблемой в имени второго файла. Сделал через find . -exec, среди простыни мусора нашлась одна строка с ссылкой.

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

                                          Самое читаемое