Сейчас на форуме: vsv1, johnniewalker, NIKOLA (+7 невидимых) |
eXeL@B —› Крэки, обсуждения —› Разбор алгоритма RC6 |
Посл.ответ | Сообщение |
|
Создано: 18 сентября 2016 23:17 · Личное сообщение · #1 Всем привет! Столкнулся с защитой, основанной на RC6. К сожалению, информации по шифру очень мало. Статьи в Википедии (русская и английская) очень куцые, увы. Все, что пока что знаю на данный момент: регистрационное имя должно быть не менее 3х символов, длина серийника должна быть равна 32 символа. Используются следующие константы: 0x0B7E15163 и 0x09E3779B9 Подскажите, пожалуйста, куда копать в деле разбора RC6? Должен быть еще ключ, но я не пойму как его найти. Буду благодарен за любую информацию по делу! |
|
Создано: 19 сентября 2016 00:44 · Личное сообщение · #2 ну допустим сам алго определён - это хорошо. но каким образом он применяется в отношении серийника и имени - это уже от конкретного случая зависит | Сообщение посчитали полезным: Mefist0 |
|
Создано: 19 сентября 2016 07:44 · Личное сообщение · #3 |
|
Создано: 19 сентября 2016 09:13 · Личное сообщение · #4 Mefist0 пишет: но я не пойму как его найти Значит ты еще просто не задетектил процедуру инициализации ключа ) Mefist0 пишет: куда копать в деле разбора RC6 Куда и любой другой шифр на Фейстеле, задетектить 3 основные: инициализация (развертывание) ключа, и собственно крипт/декрипт. p.s. DimitarSerg (рабочий акк) | Сообщение посчитали полезным: Mefist0 |
|
Создано: 19 сентября 2016 15:55 · Личное сообщение · #5 Mefist0 пишет: Вот еще бы где найти описание алгоритма на человеческом языке хм. Этож крипто, о каком человеческом языке тут может идти речь? википедия даёт сухую основу, а суть операций можно уловить медитируя на исходник. Хотя зачем это? Если алго уже известен, то достаточно просто определить его процедуры в коде и реверсить в сторону входных/выходных значений. Разумеется, не помешало бы проверить соответствие ввода-вывода в какой-нибудь внешней проге, а то бывает и модифицированные алгоритмы попадаются. |
|
Создано: 19 сентября 2016 18:59 · Личное сообщение · #6 |
|
Создано: 19 сентября 2016 19:14 · Личное сообщение · #7 |
|
Создано: 19 сентября 2016 21:45 · Личное сообщение · #8 -=AkaBOSS=- Вот я пока что и застрял на поиске ключа. Есть куча однотипных операций, в которых происходят действия с 0x0B7E15163 и 0x09E3779B9. Эти числа пишутся в область памяти через один, иногда через один, но число используется одно и тоже. Пример куска стека на картинке в приложении. И эта область в памяти занимает (если я правильно подсчитал) 1D0h (464 dec). В моем случае начинается с 0018E700 и заканчивается 0018E530. Затем генерится похожий массив, но в другой области (0018F700). Что это? Расширение ключа? b6c3_19.09.2016_EXELAB.rU.tgz - stack.png |
|
Создано: 19 сентября 2016 21:55 · Личное сообщение · #9 тьху блин вот делать нечего сам алго ковырять? какой смысл реверсить то, что и так известно? если он уже определён (и проверен), то его можно воспринимать как чёрный ящик и проходить мимо, разбирая что именно шифруется и что происходит потом. Mefist0 пишет: Есть куча однотипных операций, в которых происходят действия с 0x0B7E15163 и 0x09E3779B9. в исходнике на который я давал ссылку, ясно видно где и что с ними делается процедура set_key устанавливает внутренний ключ шифрования на основе двух входный параметров - указателя на пользовательский ключ и его длины |
|
Создано: 19 сентября 2016 22:06 · Поправил: Mefist0 · Личное сообщение · #10 -=AkaBOSS=-, так и ковыряю алгоритм для того, чтобы понять, где сам пользовательский ключ. Потому как алго сразу начинает куда-то копировать эти два числа P и Q. У меня подозрения, что пользовательский ключ как раз находится в стеке между P и Q. Ведь как я понял этими константами "разбавляется" пользовательский ключ. Поправьте, если не прав. Исходники еще раз посмотрю, но я ориентируюсь пока что на формулу в Вики. |
|
Создано: 19 сентября 2016 22:14 · Личное сообщение · #11 |
|
Создано: 19 сентября 2016 22:32 · Личное сообщение · #12 -=AkaBOSS=- пишет: найди откуда вызывается эта функция и сможешь увидеть что в неё передаётся В функцию передаются длины имени и серийника, имя и серийник. А что с ними дальше происходит - непонятно. Я долго трейсил и не заметил обращений к этим переменным. Может пользовательский ключ быть жестко зашит в программе постоянно? |
|
Создано: 19 сентября 2016 22:53 · Личное сообщение · #13 |
|
Создано: 20 сентября 2016 07:52 · Личное сообщение · #14 |
eXeL@B —› Крэки, обсуждения —› Разбор алгоритма RC6 |
Эта тема закрыта. Ответы больше не принимаются. |