Футболки Challenge
После стольких разговоров и комментариев о конкурсе футболок Pixels Camp в этом году пора рассказать вам, как мы пришли к его идее.
Все началось с вопроса: «Каким будет дизайн футболок в Pixels Camp v3.0?». После некоторого мозгового штурма нам пришла в голову идея взять несколько старых «дрянных» названий песен и сыграть каламбуры со ссылками на код.
Конечно, ящик Пандоры был открыт, и вот несколько почетных предложений, брошенных в хаос:
- «Du Hash (Du Hash Mix?)»
- "Разбудите меня, прежде чем идти идти"
- «Реагируйте! Не делай этого »
- "Это SYN"
После очень трудного голосования мы решили использовать эти пять названий песен:
- «Shells Like Teen Spirit»
- «Уберите MySQL»
- «Разбуди меня, когда закончится установка npm»
- «Ты будешь моим завитком?»
- «Из этого рождаются сладкие мечты».
«Веселая часть» футболок была решена, но чего-то еще не хватало. «Что будет с вызовом в этом году?» - спрашивали мы.
Пришло время запачкать руки.
Понг с мозгами
Так родилась очень простая идея для первого шага испытания: Давайте возьмем названия песен и воспроизведем их на футболках с блоками кода« ASCII art ».
Мы взяли все пять названий и продублировали каждую в две разные футболки, одну позитивную и одну негативную, слияние обоих образовало бы полный блок кода. После непродолжительных поисков мы нашли эту элегантную игру в понг, созданную на JavaScript от Gabriel Dubé.
Careca и мне пришлось создать Perl-скрипт (да, Perl, что еще?), Который с помощью растровой маски и файла JavaScript с кодом pong генерировал положительные и отрицательные ASCII-арт-версии каждого названия песни.
Мы взяли игру в понг и начали ее минимизировать, чтобы блок кода имел точные размеры, чтобы соответствовать футболкам, мы сделали это с помощью великолепных дизайнерских навыков Nuno.
В ходе этого процесса мы создали пять разных версий одной и той же игры в понг, каждая из которых выводила разные фрагменты кода для мозгов. Но, что усложняло задачу, каждая деталь не могла работать сама по себе. Чтобы добиться успеха в этом шаге, вам нужно будет взять все десять разных футболок, соединить их в пары, «обыграть» пять итоговых игр в понг, получить пять разных награжденных фигурок и, наконец, отсортировать эти части в правильном порядке, чтобы получить это конечный результат:
++++++++++[>+++++++++++>++++++++++++>++++++++++>+++++<<<<-]>++.>>+++++.<.>----.<<----.>-----.>>----.<--.--.<<+.+++.>>>+.<<+.>++++..>.<---.<<++.>>>+++++.---.<<<----.>>++++.<+.>---.<<---.>>>++.<+.
Этот код для мозгов переводится как pixels.camp/tee/br41nfuck3d, что ведет к следующему шагу.
Мы также поместили переменную с именем «ts» в середину каждого отдельного блока кода с URL-адресом, который приведет к «ярлыку», где участники могут получить каждый кусок мозгового куска, не играя в игру («умные» будут пропускать все Pong веселье).
Пи Станция
В этом шаге мы получили вдохновение от викторины и отправились дальше в историю. Следуя указанному URL-адресу на последнем этапе, участники попадали на страницу с одноразовым блокнотом (OTP).
Наличие одноразового блокнота означало, что у нас должна быть нумерованная станция, передающая какое-то зашифрованное сообщение, которое будет дешифровано секретными агентами нашего пиксельного лагеря.
Как мы могли организовать радиопередачу с минимальными усилиями и без бюджета?
Ответ был: отличный Raspberry Pi. Есть библиотека, которая может превратить простой RPi 1 в FM-станцию pifm. Его очень просто использовать: просто получите звуковой файл, выберите частоту FM и запустите его - pifm будет использовать вывод GPIO для передачи радио.
Все, что нам нужно было сделать, это создать OTP, зашифровать сообщение и сгенерировать с ним WAV-файл. Наша версия OTP состояла из идентификатора агента и набора случайно сгенерированных трехзначных кодов ASCII.
Поразмыслив, мы решили сгенерировать пять разных одноразовых паролей, каждый из которых имеет свой идентификатор агента. Каждый OTP будет чередоваться каждый час в данном URL-адресе, что означает, что вы будете получать другой OTP каждый час, в зависимости от времени, когда вы попали на страницу.
С помощью сгенерированных одноразовых паролей все, что нам нужно было сделать, это зашифровать сообщение с помощью простого метода шифрования. Был выбран шифр XOR, и сообщение, которое приведет к следующему шагу, было: У вас есть 108 минут, чтобы ввести свой идентификатор и эти числа: 04 08 15 16 23 42..
Мы снова использовали несколько простых инструментов, macOS say и sox, и с небольшой помощью Python мы создали два сценария: один для генерации файла OTP, а другой - для генерации WAV с речевым сообщением, зашифрованным с помощью OTP.
Затерянный в ZX Spectrum
Мы подумали, что было бы круто заставить участников немного погулять и поработать на поле. В этот момент у cdeath возникла прекрасная идея упомянуть один великий культовый сериал Lost, который обожает и ненавидит большой фандом.
Давайте установим старую машину и заставим их печатать« Числа , как они это делали на острове», - сказал он… Итак, мы сделали это.
Проблема заключалась в том, что нам нужна была старая машина и кто-то с большим количеством энергии и опыта, чтобы написать для нее код. После некоторого обсуждения мы использовали ZX Spectrum, во-первых, потому что он был частью детства большинства из нас (ностальгия в воздухе), а во-вторых, потому что Bandersnatch Black Mirror »- это тренд, и даже новые поколения будут люблю трогать настоящий ZX Spectrum.
Не хватало только человека, который написал бы код ZX Spectrum ... Итак, как какой-то злой злодей в мультсериале, мы бросили наживку, чтобы посмотреть, не упадется ли кто-нибудь на нее, и знаете что? Селсо с радостью отвечал за поиск функционального ZX Spectrum, создание кода и решение всех проблем, связанных с загрузкой программы (во время этого процесса в штаб-квартире Bright Pixel существовали некоторые риски припадков, вызванных светочувствительной эпилепсией) .
Подробнее об этом вы можете прочитать здесь.
Итак, все, что участникам нужно было добраться до последнего шага, - это найти ZX Spectrum где-нибудь в Pixels Camp и вставить свой идентификатор агента, а затем цифры, как объяснено в сообщении, полученном на последнем шаге. Как только вы это сделаете, вы получите еще одно зашифрованное сообщение OTP.
Возле люка
Итак, мы подошли к заключительному этапу нашей задачи. Наименее техничный из всех шагов, но, вероятно, и самый энергичный. К настоящему времени у участников уже будет новое зашифрованное сообщение с выхода ZX Spectrum. Все, что им нужно было сделать, это вернуться к одноразовому паролю и начать дешифрование этого нового сообщения точно с того места, где было расшифровано последнее сообщение.
В результате получился URL-адрес PasteBin https://pastebin.com/6UCAx4kY, который содержал это сообщение В лабиринте, возле люка….
Опять же, следуя духу последнего шага, мы хотели заставить участников двигаться и искать финальную награду, как настоящую охоту за сокровищами. На этот раз мы хотели, чтобы они вышли на улицу, поэтому мы вышли на улицу в красивый Лиссабонский парк Эдуарда VII, расположенный недалеко от места проведения Pixels Camp, и стали искать место, где можно спрятать наше маленькое сокровище.
Прямо посреди парка находится лабиринт из живой изгороди - идеальное место, чтобы спрятать наши сокровища. После прогулки по парку мы обнаружили, что в лабиринте есть один-единственный люк (канализационная яма), и это было бы отличное место, чтобы спрятать наши сокровища.
Само сокровище представляло собой не более чем коробку с геокэшингом, содержащую два идентификатора значка Pixels Camp: один для победителя соревнования на футболку, который можно было обменять только один раз, а другой для всех участников, которые смогли пройти испытание до конца.
Конец
Вот так и воплотился в жизнь великий конкурс футболок Pixels Camp V3.0. Благодаря большим командным усилиям всех, кто в нем участвует, а также получению большого удовольствия от процесса.
Все, что мы надеялись, это то, что участники получат столько же удовольствия, сколько и мы во время выполнения задания. И, судя по полученным отзывам, мы считаем, что достигли своей цели.
Это была статья с точки зрения команды Bright Pixel, которая бросила вызов, если вы хотите знать, как это было с точки зрения участника, вы можете прочитать эту статью, сделанную одним из членов команды-победителя: Https://killmaster.github.io/2019/03/24/the-tshirt-challenge.
Также вы можете проверить весь код, использованный в задаче, здесь: https://github.com/PixelsCamp/tshirt-gate
Мы хотели бы поздравить команду-победителя, Карлос Мартинс, Тьяго Диас, Жоана Рихо и Франсиско Беллини, а также всех других участников, которые достигли конца испытания, за их усилия и стойкость, Ты хорошо поработал.
Нам не терпится принять участие в испытании футболок Pixels Camp в следующем году.
Увидимся в версии 4.0!