eXeL@B —› Программирование —› Что это за алгоритм? |
Посл.ответ | Сообщение |
|
Создано: 18 июля 2012 20:21 · Поправил: Vovan666 · Личное сообщение · #1 Наткнулся на игру (кому интересно jigs@w puzzle 2), без ключа там Blowfish хрен сбрутишь, но меня интересует другое. Есть процедура, чем-то напомнила Base32, но явно не оно. Делал через брутфорс, вроде генерируется, но все-равно может зависнуть или не правильно сбрутить. Можно-ли как-то обратить этот алгоритм? Сделал простенький очищенный пример (см. аттач) Code:
Что самое интересное внутренняя функция Code:
Используется в игре несколько раз с разным количеством раундов(PUSH 5). PS. Защита в игре это пример девелоперам как надо делать защиту. a889_18.07.2012_EXELAB.rU.tgz - base.exe |
|
Создано: 18 июля 2012 21:01 · Личное сообщение · #2 |
|
Создано: 18 июля 2012 21:08 · Поправил: Vovan666 · Личное сообщение · #3 |
|
Создано: 18 июля 2012 21:22 · Поправил: -=AkaBOSS=- · Личное сообщение · #4 строка для примера: GNLKVWKZ7VTS алфавит: ABCDEFGHJKLMNPQRSTUVWXYZ23456789 индексы символов строки согласно алфавиту в hex и bin: G - 0x06 00110 N - 0X0C 01100 L - 0x0A 01010 K - 0x09 01001 V - 0x13 10011 W - 0x14 10100 K - 0x09 01001 Z - 0x17 10111 7 - 0x1D 11101 V - 0x13 10011 T - 0x11 10001 S - 0x10 10000 объединяем: 100001000110011111011011101001101001001101001010100110000110 разбиваем по восемь: 1000 01000110 01111101 10111010 01101001 00110100 10101001 10000110 переворачиваем и переводим в хекс: 0x86, 0xA9, 0x34, 0x69, 0xBA, 0x7D, 0x46, 0x08 хэш получен! зы. сталкивался с похожей шнягой, когда ковырял BlueBerry Flashback /ADD ARCHANGEL пишет: это и не хэш, ибо обратим Aбсолютно верно! Это просто такой компактный способ хранения данных По сути напоминает ASCII7 |
|
Создано: 18 июля 2012 21:23 · Поправил: VodoleY · Личное сообщение · #5 Vovan666 я тут бился об стену головой. учти что бейс есть не только 32 З.Ы. у бейса 32 пару тройки алфовитов http://en.wikipedia.org/wiki/Base32 0040128E |> \6A 05 |PUSH 5 имхо разрядность битовая 2^5=32 алго должен быть штатный ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 18 июля 2012 21:27 · Личное сообщение · #6 Из описания -=AkaBOSS=- следует, что это и не хэш, ибо обратим. Ведь можно перевернуть обратно, перевести в двоичную систему, объединить октеты и разделить на строки по пять символов, далее эти короткие строки переводим в число, используем числа как индескы для алфавита, восстанавливая тем самым входную строку. ----- Stuck to the plan, always think that we would stand up, never ran. |
|
Создано: 18 июля 2012 21:32 · Поправил: VodoleY · Личное сообщение · #7 ARCHANGEL пишет: Из описания -=AkaBOSS=- следует, что это и не хэш, ибо обратим. а все бейсы обратимы по определению. это не хеш, это видимо один из алфовитов бейс32 З.Ы. все бейсы 32 отличаюца алфовитом где L l заменена на 1 0 O тоже заменены и там еще пару символов под разным соусом выкинуты. аля для читаемости хеша, и чтоб было труднее попутать символы ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 19 июля 2012 00:07 · Поправил: FrenFolio · Личное сообщение · #8 Сейчас ради интереса глянул в отладчике, - это стандартный алгоритм Base32, только с собственной таблицей символов. Единственный нюанс, сбивающий с толку, состоит в том, что здесь не сопоставляется каждому 5-битному блоку в бинарном виде (0d (=00000b) - это 1-ый символ в таблице, а 31d (=11111b) - последний) соответствующий ему по индексу символ из таблицы, а результат будет форматированным - в виде числа 64 бита длиной, без строкового представления. Для примера выше, из массива 8 hex-чисел = {0x08, 0x46, 0x7D, 0xBA, 0x69, 0x34, 0xA9, 0x86} получаем строку "STV7ZKWVKLNG". Поэтому для написания обратной функции (Decrypt Base32) после ее вызова с этим массивом байт (восстановления исходной строки 12 символов) получившуюся строку еще предстоит переписать с обратным порядком символов. Вот, для наглядности: Vovan666 пишет: Используется в игре несколько раз с разным количеством раундов(PUSH 5). А разное количество раундов тут говорит о том, что будет использоваться другое основание для расчета (там универсальная функция). То есть в общем случае так: Base2^X, где X - это число раундов (точнее, размер блока, в битах, для определенного основания). ----- Программист SkyNet |
|
Создано: 19 июля 2012 09:26 · Личное сообщение · #9 |
eXeL@B —› Программирование —› Что это за алгоритм? |
Эта тема закрыта. Ответы больше не принимаются. |