Pull to refresh

Comments 38

Задача интересная, уже присоединился к обсуждению))

UFO landed and left these words here

Я вижу что есть все символы 0-9 и все буквы кроме Y, W. Скорее всего какой-то base-36. Исходя из того что есть нуль и буква O, эта кодировка применена не для человекочитаемости. Может быть, какое-то хитрое представление чего-то известного вроде числа PI - но наличие такого большого количества возможных символов не похоже не рандомный выхлоп. Возможно эту строку нужно как-то нарезать на подстроки которые гуглятся. И почему это именно для разработчиков, почему не для математиков/криптографов?

И почему это именно для разработчиков, почему не для математиков/криптографов?

Потому что дальше не математическая/криптографическая задача.

Да и кодирование в base** это не криптография, а способ предоставления информации в другой размерности.

дальше не математическая/криптографическая задача.

Откуда вам это известно?

а способ предоставления информации

Что-то я не вижу никакой информации в строке "2E3GX3C3U93E4JK545I35M69L6Q6N78F91PAF9D0CED0GEAF91GQHZRJ6K95LON1TN4QB2S0TMVVR".

Всего лишь 77 чисел с повторами.

Откуда вам это известно?

Дошел до осмысленной фразы. Дальше нет смысла продолжать, т.к. завтра утром на работу, и скорее всего к тому времени уже все решат.

Далеко не факт что завтра решат. Пока никто не был сильно близок

Как раз не хватало новогоднего айтишного квеста)

Недавно попадалась публикация на Хабре, еще времен пещерного периода, о сложности восприятия текстовой информации набранной заглавными буквами)

Если не затруднит, ткните пожалуйста носом (в ссылку). Не нашел, а интересно.

Пожалуйста, журнал помнит все: "Почему текст, набранный заглавными буквами, трудно читать" - https://habr.com/ru/articles/103659/

ЧатГПТ минут 5 думал, но выдал фразу. Не знаю правильную или нет)

Дипсик тоже минут 5 скрипел, но не отгадал. Тоже не знаю, правильно это или нет.

UFO landed and left these words here

Тут написано подробнее куда отправлять результат на проверку

"Получить и указать"
указать где?

Нужно расшифровать, прислать решение кодом на любом языке и полученный текст. Тут написано подробнее куда отправлять результат

С учетом того, что это base36, то энтропия преобразованного сообщения в байтах ~ 232 бита ( AES-256 , к примеру, это 256 битов и он ломается только квантовым компьютером ).
Есть предположение, что это на 70% шифр XOR с ключом L=7. Но даже перебор ключа это ~ 2^56 вариантов.

Результаты нейросети :/

энтропия преобразованного сообщения в байтах ~ 232 бита

Так в байтах или в битах?

Никакого AES тут не может быть никак, ведь это шутка а не кусок переписки Павла Дурова. Может быть, какой-нибудь шифр Цезаря.

L может быть и 11 тоже.

base 36 раскладывается на строку из байтов, а ее энтропия измеряется битами. А метод Казински показал, что L скорее всего 7 или 14 :)

Это и не AES , это сравнение с AES, чтобы наглядно понять, что энтропия сравнима с промышленным стандартом

кстати, там ребята расшифровали уже и все оказалось еще сложнее) нужно было изначальное сообщение очистить от шума, потом бейс36, потом пройтись квадратичной функцией и потом применить шифр Цезаря со сдвигом

Так что мой расчет неправильный :)

Пусть весёлый тамада телеграмм-группы сделает просмотр его ресурса без регистрации и без смс хотя бы на время интересного конкурса - тогда я смогу ознакомиться с прогрессом других участников, с подсказками и с результатом конкурса в целом. Некоторые каналы в телеге ведь можно читать без регистрации и смс. Всё-таки, я - хабраюзер, читающий статью на Хабре и имеющий права писать комментарии на Хабре.

Чем там мог быть полезен метод Касински мне не понятно - в шифротексте повторяется только "D0" и "V". Что там можно чистить от шума в такой короткой строке - тоже не понятно.

base 36 раскладывается на строку из байтов, а ее энтропия измеряется битами.

Но ведь base36 можно разложить ещё и на биты, а энтропию можно посчитать ещё и в байтах. Энтропия строчки из 77 символов равна либо семидесяти семью байтам (77 * 1), либо триста сорока шести с половиною байт (36 * 77 / 8). Как прити к энтропии в 232 бита мне непонятно.

исходная строка base36 - декодировали в 56 байт

энтропия Шеннона для этих 56 байт ~ 4.2 бит/на байт

общая энтропия сообщения 4.2×56 = 235 бит ( 232 было округлением )

эти 235 бит не мера криптостойкости, а мера неопределенности данных

у нас 235 бит значит данные не полностью случайны - в них есть избыточность/структура

вывод: 235 бит энтропии это не реальная криптостойкость сообщения, а статистическая мера данных. И это случай, когда энтропия вводила в заблуждение, так как данные были структурированным текстом, замаскированным шумом и преобразованиями

что касается шума в строке - там каждый 5 символ это буквально шум, что написано в подсказке в тг

внимательно посмотрите на декодированную бейс36 строку. метод Касински обнаружил повтор в 9 байт, расстояние между повторами 14 байт. вывод L= 1, 2, 7, 14 ( множители числа 14 ). Вероятнее всего был ключ 7, но если бы это был XOR, который я предполагал изначально. Но это не XOR, а кастомный шифр, который без подсказок в тг решался только брутфорсом

encrypted_text = "2E3GX3C3U93E4JK545I35M69L6Q6N78F91PAF9D0CED0GEAF91GQHZRJ6K95LON1TN4QB2S0TMVVR"
alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
key_hex = "6ce0acaddfdbbf41a511bfa8f3007a983ade5a"
key = bytes.fromhex(key_hex)

def base36_decode(s, alphabet):
num = 0
for ch in s:
num = num * 36 + alphabet.index(ch)
return num.to_bytes((num.bit_length() + 7) // 8, 'big')

encrypted_bytes = base36_decode(encrypted_text, alphabet)
decrypted_bytes = bytes(encrypted_bytes[i] ^ key[i % len(key)] for i in range(len(encrypted_bytes)))

result_text = ""
for byte in decrypted_bytes:
if 32 <= byte <= 126:
result_text += chr(byte)
else:
break

print("Исходная строка (base-36):")
print(encrypted_text)
print("\nКлюч XOR (hex):")
print(key_hex)
print("\nРезультат расшифровки:")
print(result_text)

Исходная строка (base-36):
2E3GX3C3U93E4JK545I35M69L6Q6N78F91PAF9D0CED0GEAF91GQHZRJ6K95LON1TN4QB2S0TMVVR

Ключ XOR (hex):
6ce0acaddfdbbf41a511bfa8f3007a983ade5a

Результат расшифровки:
happy new year 2026

но это неправильно :(

alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Есть ли надежды что хотя бы эта строчка тут правильна? Ведь мы не знаем ничего ни про что и алфавит может быть любым. Я вижу эту строчку в любой программе по расшифровке base36.

предположение что алфавит 36 = 26 букв+10цифр, вроде как угадано верно, наличие ключа в общем то это подтверждает...

Суть алфавита в том чтобы прописать каждому символу цифровое значение, например первый элемент алфавита, 0, имеет первый индекс, тоже 0, символ A имеет цифровое значение 11, итд. А может быть, тут алфавит такой что первый символ Q, второй 4 - то есть совсем рандомный, а не стандартный. Подобрать правильный алфавит и может быть выскочит что-то другое осмысленное.

Прошу пояснить откуда взялся этот ключ? Как нам вообще можно было догадаться что нужно использовать для дешифровки именно этот ключ?

key_hex = "6ce0acaddfdbbf41a511bfa8f3007a983ade5a" # как вы его получили?

Например когда я расшифровывал у меня другой ключ получился, вот этот: 42f4bfb68682be51f248a3ace052689a38da4d68 подставьте в свой код.

P.S. Я не считаю это решением вообще, ни свое ни ваше.

походу ваш результат гораздо правильнее и реалистичнее...

И как до этого решения можно было додуматься без подсказок? Вы в своем уме? Вот реально бред полный, в следующий раз придумайте что-то по лучше.

Так победитель додумался же

Sign up to leave a comment.

Articles