31 декабря 2007 года в 23:00 по Гринвичу.
Обновлено: В комментах Ширяевым обещана Темная тема на мобилках во втором квартале года!
Не смотря на своеобразный юмор господина Ширяева, загадка вышла достаточно интересной, поэтому я решил поделится её решением в развлекательно-образовательных целях.
Кому не интересны хитросплетения непонятных терминов могут спокойно перейти шутить в комментарии. Для те же, кто остался, продолжаю.
Давайте рассмотрим поближе картинку, которую приложил Денис:
Денис Ширяев
Сходу можно сделать пару наблюдений: PNG картинка 4 на 4 пикселя без прозрачности может хранить 48 байт информации, при условии, что глубина цвета составляет 24 бита. А ещё последние 3 пикселя данной картинки имеют черный цвет #000000, это значит, что информация вероятно заполнялась по слева-направо, сверху-вниз.
Отлично можно сканировать наш файлик! Примеры кода будут на Go, потому что в других языках я разбираюсь слабо.
Я так и не понял: это нюанс работы Go или Основа опять сделала что-то страшное с картинкой, но все цвета были 48-битными и имели вид а-ля #2С2С31310D0D. Поэтому возвращаем им первоначальный вид, совершив битовый сдвиг на 1 байт.
Окей, информацию считали, что мы получили:
Сходу я лично заметил одно: с информацией что-то не так. Что в ASCII, что в UTF-8, что в Win1251 буквы находятся близко, тут же ряд разбросан, 0 потом сразу 222, подозрительно всё это!
Понимая, что я захожу в тупик решил перечитать комменты. Денис упомянул Base64. Причем тут вообще Base64 подумал я. Ведь Base64 служит для того чтобы байты передать как строку, а не как картинку. И решил погуглить, вдруг Денис просто заюзал какой-то сервис, а потом ляпнул про Base64 для красного словца. Гуглить пришлось не долго, сервис был найден:
Впрочем радоваться было рано. Основа походу покорёжила PNG-файл и сайт файлик не кушал.
Image was not encoded with this service, corrupt or invalid password.
Не беда! Начнем реверсить! За две минуты я узнал массу полезной информации о работе сервиса:
- Текст до 3 букв кодируется 1 цветом без искажений
- Для кириллицы используется Win1251
- Текст из 4 и более букв кодируется более непрогнозируемым количеством байт
- Частое повторение букв практически не приводило к увеличению количества цветов на картинке
Становилось понятно: используется компрессия. Учитывая, что у сервиса есть опциональное шифрование, я понадеялся, что Ширяев не был со мной настолько жесток.
Определить алгоритм компрессии задача сложная, особенно когда у тебя нет магического заголовка. Но я решил просто попробовать парочку популярных. LZW успеха не дал, зато 2 раунда Deflate сработали! К слову именно этот алгоритм используется в самих PNG, выходит что помимо встроенной компрессии, автор прогнал его ещё по самому сообщению, спрятанному в картинке.
Как в последствии оказалось, шаг с конвертированием из ASCII в Win1251 был излишним, потому что сообщение не содержало кириллицы, но на всякий случай почему бы и нет:
На выходе получаем заветный Base64, о котором заикался Денис:
Декодим Base64 в строку:
Получаем некий набор байтов в двоичном представлении:
Каждый байт придется конвертировать в десятичную систему:
Ура, число!
Пришлось ещё немного подумать, чтобы понять, что это UNIX timestamp. То есть время прошедшее с 1 января 1970 года.
Спасибо за внимание, все свободны, надеюсь было интересно! Ширяев останься, с тебя настоящая дата выхода темной темы!
Чувак, ебать ты умный
Следующая стадия интеллекта — сделать геймбой в Майнкрафте:
Поскольку ты оказался намного трудолюбивее чем я рассчитывал, в Q2 сдаем темную тему в приложениях, для начала там (:
Комментарий недоступен
Вот стоило только дату задать, так сразу зашевелились. Респект
Денис, где ошибка? Действительно ли Основа исказила цвета PNG? Или зашифрованная дата разгадана верно?
Да, я хуево пошутил (:
Ты просто хотел вернуть 2007-й, понимаю.
Комментарий недоступен
Но ты не ///
Комментарий недоступен
Если пересобрать PNG с такими же цветами, то она весит меньше (114 кб вроде, против 131) и тот сайт умеет её декодировать. К слову это можно считать вторым методом разгадки.
Ого, я на твоей обложке и это не бaг.
Отдал честь зеркальными мерами.
Комментарий недоступен
Комментарий недоступен
Служу Ширяешеству!
Well played! Я когда эту херню увидел был немного в щи и был уверен, что комитетский сервак все пожал до недекодируемого состояния
Комментарий недоступен
Но ведь это не Ширяев.
Комментарий недоступен
Ладно, я с вами. Поменяю аватарку, когда появится темная тема.
А так вот почему вы все аватарки поменяли. А я то думал просто
Прости, что украли твою аватарку
Комментарий недоступен
1-4-9-8
Комментарий недоступен
Павел хорошо смимикрировал
С детства я не мог уловить значения выражений "Сектор Газа" и "Еврейский вопрос". Если словосочетание "сектор газа " ,благодаря одноименной группе, и рождало какие то ассоциации (я представлял,что в этом секторе все ругаются матом,потому что там газ),то "еврейский вопрос" решительно оставлял меня без каких либо образов и зацепок к осмыслению. Безликая эфемерность "еврейского вопроса" упорно мелькала по телевидению и в прессе,при этом никто не объяснял, в чем он заключается. К шестнадцати годам я пришел к мысли,что это некий антипод русскому вопросу"что делать?". Возможно,ушлые евреи давно знали ответ на вопрос"что делать"...но при этом,зная как ответить на "русский вопрос" они не знали ответ на свой, а не знали они ответа ,поскольку не знали самого вопроса. По всей видимости, евреи пустили какой то слух о существовании "еврейского вопроса", вопроса,ответив на который, все измениться.. и вот их задача найти этот вопрос и ответить на него!
Как нам известно, вся еврейская культура наполнена аллегориями, хохмами и загадками.Мне всегда казалось подозрительным одно название,напрямую отсылающее к евреям..а именно "семь сорок". Я точно не помню,вроде, это как то связано с каким то танцем. Я почувствовал,что танцы тут не причем,в первую очередь это должно было быть связано с еврейским вопросом. Семь и сорок- на первый взгляд, не пересекающиеся цисла. Но только на первый.
33+7=40. Только в этом случае я вижу логику этих цифр. 33- это то невидимое число, которое всегда скрывалось под тенью семи и сорока. 33-именно столько лет, по еврейским сказаниям, было последний раз Иисусу Х. доводим 33 до абсолюта: 3+3=6.
Короче, "еврейский вопрос"решен..
ОТВЕТ: 6
Доллар стоит 66. Никите уже 16 и он в 11 классе. 66 - 16 - 11 = 39.
2019 - 39 = 1980. В 1980 году Игорь Николаев окончил Московский институт культуры.
Неспроста это, ох неспроста. Задумайтесь.
Еврейский вопрос это:
КАК НАМ ПОЛУЧИТЬ БОЛЬШЕ ДЕНЕГ? КАК НАМ ПОЛУЧИТЬ БОЛЬШЕ ВЛАСТИ?https://www.youtube.com/watch?v=vh_LuJ02694
Совсем забыл. Реп с исходниками, кому интересно, можно найти здесь: https://github.com/L11R/shiryaev-date-extractor
Где ты пропадал, когда на Аляску ARG подкинули, там твой талант был бы как никогда кстати https://tjournal.ru/alaska/61587 https://tjournal.ru/alaska/61683 https://tjournal.ru/alaska/61775 https://tjournal.ru/alaska/61823
Хз, первый раз вижу эти посты(
Видимо тогда чем-то сильно занят был.
Темная тема - это не тема для шуток
Это белый. Чёрный — #000000.
Точно! Спасибо, исправил.
Комментарий недоступен
Охуенно сработано и не хуже расписано, спасибо!
Как раз минут 15 назад досмотрел "Игра в имитацию", так что читать было вдважды интересней
ЯННП
На ТЖ новый флешмоб с аватарками Ширяева?
Это протест
Верните стену
Комментарий недоступен
Нет, я участник другого протеста
Комментарий недоступен
Хм. И в правду видел где-то подобное. Я просто бекендщик, мы тут обычно используем Base64, чтобы в JSON'ках гонять.
Вполне хорошая идея малую картину так закодировать, чтобы лишнее соединение не создать из-за неё
во втором квартал года!
Я бы ещё раз обновил.
Комментарий недоступен