Сейчас на форуме: zombi-vadim, zds (+4 невидимых) |
eXeL@B —› Программирование —› нужно опознать криптоалгоритм |
Посл.ответ | Сообщение |
|
Создано: 21 сентября 2013 01:44 · Личное сообщение · #1 Доброго времени суток всем! Ковыряя ресурсы одной игрушки, наткнулся на расшифровку данных по какому-то алгоритму. На самопал слабо похоже - если разработчик и решает защитить ресурсы своим алго, то обычно дальше xor/rol/sub никто не заходит. А тут что-то хитрое, с расшифровкой по ключу (который намертво зашит в код). Поэтому мне и кажется, что тут был использован какой-то готовый алгоритм. Опознать его мне не удаётся - констант в коде нет, криптосёрчеры молчат, а я в криптографии не силён. Я рипнул и перевёл код, но понимания это не принесло. Сорец в аттаче. ЗЫ: нет, разворачивать принцип мне не нужно. Просто хочу узнать, что это за алго. 480f_21.09.2013_EXELAB.rU.tgz - algo.cpp |
|
Создано: 21 сентября 2013 02:03 · Личное сообщение · #2 |
|
Создано: 21 сентября 2013 02:11 · Поправил: DimitarSerg · Личное сообщение · #3 Очень похоже на IDEA (процедура mul, у тебя weirdproc )... нашёл в DcpCrypt (искал по and $FFFF) add reversecode А вы шутрее оказались add2: Ну и собственно у Шнейера на сайте: Code:
----- ds | Сообщение посчитали полезным: -=AkaBOSS=- |
|
Создано: 21 сентября 2013 05:07 · Поправил: -=AkaBOSS=- · Личное сообщение · #4 reversecode, DimitarSerg - большое спасибо! Возник еще один вопрос: а можно ли трансформировать ключ обратно к 128-битному виду? я нашёл такое описание: Code:
Проблема в том, что в программе зашит уже расширенный ключ, и мне кажется, что в данном случае он не является трансформированным 128-битным, а представляет собой просто рандомный набор. Или я ошибаюсь? ADD мдя. проспался, почитал описание алгоритма повнимательнее... получается, что исходный ключ сначала расширяется по алгоритму, который описан выше, а потом ЕЩЕ РАЗ трансформируется для получения ключа для дешифровки... ладно, буду разбираться... |
|
Создано: 21 сентября 2013 13:20 · Поправил: reversecode · Личное сообщение · #5 |
|
Создано: 22 сентября 2013 02:07 · Поправил: -=AkaBOSS=- · Личное сообщение · #6 reversecode пишет: такую тему с таким алго уже на лабе поднимали Но я уже покопал исходники разных реализаций алгоритма, порипал код (в аттаче). Ключ всё-таки получилось вернуть к 128-битному виду, но возник неожиданный нюанс - при использовании во внешних приложениях результат расшифровки не совпадает. Code:
В общем, мне нужна помощь... опять. 97cc_22.09.2013_EXELAB.rU.tgz - algo.cpp /ADD Таки разобрался cо своим вопросом. Несовпадения возникали из-за несоответствия байтового порядка. Стандартные утилиты (CrypTool etc) при шифровании/расшифровке по-умолчанию преобразуют входящие данные и ключ в big-endian, а та реализация алгоритма, с которой я столкнулся и рипнул, работала с тем что дают и не выёживалась) Проблема решена - тему закрываю. |
eXeL@B —› Программирование —› нужно опознать криптоалгоритм |
Эта тема закрыта. Ответы больше не принимаются. |