Футболки 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!