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

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

Источник: eieio.games

☑️ Чекбокс — один из простейших элементов веб-страниц. Один клик ставит галочку внутри пустого квадрата, еще один — снимает ее. Такие интерактивные галочки можно встретить на страницах регистрации аккаунта, в онлайн-анкетах и голосованиях.

Но что будет, если разместить на одной странице сразу миллион чекбоксов? Выяснить это решил американский разработчик Нолен Роялти, который в июне 2024 года запустил сайт onemillioncheckboxes.com (One Million Checkboxes, или OMCB).

На сайте был просто миллион пустых чекбоксов. Если один из посетителей сайта кликал по квадратику, галочка на этом месте появлялась для всех остальных посетителей — пока кто-нибудь не кликнет вновь и не «деактивирует» ее.

Роялти запустил сайт без особой цели, он рассчитывал, что на него зайдет несколько сотен пользователей. Но всего за две недели на страницу зашли 500 тысяч пользователей, которые нажали на галочки 650 миллионов (миллионов!) раз. 11 июля Нолен объявил, что сбросил все чекбоксы в «неактивное» состояние, но как только будет проставлена каждая галочка на сайте, тот прекратит свое существование. На это понадобилось всего четыре часа. С тех пор сайт заморожен.

eieio.games

Казалось, на этом история шуточного сайта закончена. Но в конце августа Роялти опубликовал пост, в котором рассказал о группе энтузиастов, которые придумали, как сообща шифровать послания и изображения в чекбоксах — и заставили разработчика понервничать, потому что он думал, что сайт взломан.

По словам Нолена, он понимал, что если дать людям возможность рисовать что-то в интернете, они начнут рисовать непристойные вещи. Поэтому в случае с OMCB он придумал такой ход: ширина «полотна» подстраивалась под ширину окна браузера пользователя. Если даже он «выбьет» галочками слово, видно оно будет только ему и другим пользователям, которые откроют браузер ровно на ту же ширину. Стоит окну с сайтом оказаться на несколько пикселей шире, и вместо сообщения пользователи увидят просто случайный набор пустых и заполненных галочек.

Информацию о том, какие галочки заполнены, а какие нет, разработчик хранил в двоичном коде: допустим, строчка 1101… означала, что среди первых четырех галочек заполнены все, кроме третьей. Состояние всего миллиона галочек записывалось в одну строчку небольших по меркам современного веба размеров — 125 килобайт.

Однажды Нолен решил посмотреть, как эта строчка бы выглядела, если бы она кодировала текст (здесь мы опустим технические подробности, но отметим, что в определенных условиях компьютер интерпретирует двоичную последовательность 1101 0000 как десятичное число 104, а то, в свою очередь, может интерпретироваться как латинская буква h. Число 105 будет означать букву i, и так далее по всему алфавиту; подробнее можно прочитать в статье про ASCII на «Википедии»).

В текстовом представлении длинного числа, кодирующего состояние галочек на сайте, Роялти увидел повторяющуюся строчку, напоминающую адрес некоего сайта. Сначала разработчик запаниковал, думая, что его взломали и кто-то записал в базу данных ссылку на вредоносный ресурс — ведь никаких полей для ввода текста не было предусмотрено! На самом деле, никакого взлома не было. Ссылка, которую он увидел, вела на сайт, который в свою очередь вел на Discord-сервер под названием «Checking Boxes» («Заполняем Галочки»).

На сервере Нолена узнали и задали ему такой вопрос: «Ты уже видел, как твой сайт выглядит, если представить его в виде картинки 1000 на 1000 пикселей?». Нолен не видел. А выглядел он вот так:

eieio.games

Вот что произошло: группа подростков, сидевшая в этом сервере, скачивала данные обо всех заполненных галочках и рисовала их в виде полотна тысячу на тысячу пикселей. Черный пиксель — если галочка заполнена. Белый — если нет.

Но они не просто наблюдали за тем, как заполняется полотно. Они еще и написали ботов, которые расставляли «пиксели» так, чтобы получались различные послания. Например, текст: «be gay do crime» («будь геем, совершай преступления»). И название игры Noita. И картинки из мемов. И QR-код со ссылкой на Discord-сервер.

Ссылка на сайт, которую нашел Нолен, тоже была частью этой операции: внизу «изображения» они прятали URL в виде двоичного кода.

Роялти пишет, что к моменту его входа на сервере было около 20 человек, а позже группа выросла до 60 — пришли те, кто тоже смогли разгадать послания среди галочек. Вместе они не только рисовали статичные черно-белые картинки: они экспериментировали с кодированием цвета и даже встраивали на сайт анимированные гифки, кадр за кадром. В июле Нолен предупредил участников сервера, что вскоре собирается выключить сайт; на прощание они прокрутили на нем гифку с Риком Эстли из клипа Never Gonna Give You Up.