eXeL@B —› Вопросы новичков —› Идентификация алгоритма |
Посл.ответ | Сообщение |
|
Создано: 12 декабря 2016 10:19 · Поправил: cryptX · Личное сообщение · #1 Уважаемые друзья, не подскажете какой хеш/црц (стандартный или нет ?) алгоритм предоставляет из себя эта функция ?, FindCrypt показывает на MD5, но выходной результат при MD5 другой. Вот функция: Code:
и вспомогательные процедуры: Code:
На входе передаю: 67452301EFCDAB8998BADCFE10325476 На выходе получается: EDF82238EAB733D6ABF2EC77C9AB9567 Заранее спасибо! |
|
Создано: 12 декабря 2016 09:22 · Личное сообщение · #2 Ну рипай, хуле тут думать ! А для начала можешь константы сравнить, вдруг где-то поменяно. ----- ds | Сообщение посчитали полезным: ajax |
|
Создано: 12 декабря 2016 10:12 · Поправил: DenCoder · Личное сообщение · #3 cryptX Да, это md5. IV посмотрите: v6, v7, v8, v9 должны быть 67452301h, 0EFCDAB89h, 98BADCFEh, 76543210h ----- IZ.RU | Сообщение посчитали полезным: cryptX |
|
Создано: 12 декабря 2016 18:20 · Поправил: cryptX · Личное сообщение · #4 |
|
Создано: 12 декабря 2016 17:27 · Личное сообщение · #5 |
|
Создано: 12 декабря 2016 18:56 · Личное сообщение · #6 cryptX пишет: На входе передаю: 67452301EFCDAB8998BADCFE10325476 На выходе получается: EDF82238EAB733D6ABF2EC77C9AB9567 а на вход данные передаются через программу, или вводятся вручную? там ведь надо корректно буфер оформить - по стандарту, данные хешируются блоками по 64 байта; после хэшируемых данных дописывается 1 установленный бит, а последний блок должен в конце содержать длину в битах. на конкретном примере, на входе в sub_11630D4 в ecx должен быть адрес буфера, оформленного таким образом: 67 45 23 01 EF CD AB 89 98 BA DC FE 10 32 54 76 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 00 00 00 00 00 |
|
Создано: 13 декабря 2016 10:04 · Поправил: cryptX · Личное сообщение · #7 -=AkaBOSS=- через программу. Вот смотри что у меня перед входом в функцию 11630D4(): как я понимаю в 12EF9C находится IV, в 12EFAC длина в битах. А уже в 12EFB4 данные которые нужно хешировать. На выходе получается это В 12ЕF9C уже выходные данные правильно ? |
|
Создано: 13 декабря 2016 12:09 · Поправил: -=AkaBOSS=- · Личное сообщение · #8 cryptX пишет: В 12ЕF9C уже выходные данные правильно ? ксли говорить о стандарте MD5 - нет, это промежуточные данные. Хэш перед использованием должен быть финализирован, как я описывал выше. Код основной трансформации, несомненно, MD5 - все константы, смещения, и раундовые функции соответствуют стандарту. Но вот как оно работает с блоками - это еще выяснить надо. Глядя на код, предполагаю что в ESI - общий размер данных для обработки, а в EBP - размер теущего блока. Если это так, тогда остальная фигня (все эти двойки и таймштамп в конце) выступают в роли эдакой "соли" в промежутках между кусками хэшируемых данных. Плюс виден еще и второй вызов трансформации на 1162F1D. Короч надо разбирать эту процедуру, тут что-то самописное. cryptX пишет: в 12EFAC длина в битах. 400h = 1024 1024/8 = 128 получается, 128 байт уже хэшировано? или как? reversecode пишет: обычный md5, функция transform иногда полезно читать не только шапку reversecode пишет: третий день тема создана вчера утром, между прочим reversecode пишет: что полный md5, не такой я ему это и объясняю, в общем-то и по скринам из #7 уже ясно что хэшируемые блоки формируются не по стандарту |
|
Создано: 13 декабря 2016 11:05 · Личное сообщение · #9 |
|
Создано: 14 декабря 2016 00:48 · Личное сообщение · #10 Спасибо за ответы! Далнейшая отладка показала что функция sub_11630D4() вызывается несколько раз, при первом визове у функций совпадает IV с МД5, но вот второй вызов уже использует хеш от первого вызова как IV, третий - хеш от второго как IV итд...да и при каждом вызове входные данные для хеширования различаются. А функция вроде "INIT UPDATE FINAL" так и не нашел, нужный хеш появляется сразу после последного вызова 11630D4(). Может в программе только используется функция transform()-a ?! Сделаю рип функций и дам знать правильны ли мои доводы. |
|
Создано: 14 декабря 2016 00:54 · Личное сообщение · #11 нет не может инициализация констант в INIT и только там где в цикле transform и есть UPDATE вообще в гугле найдите любой псевдокод реализации и сравните со своим банально даже в рейсе выше трансформа псевдокод посмотреть и сразу станет ясно что UPDATE Добавлено спустя 1 минуту рипать смысла нет есть смысл правильно поймать вход и выход в md5 или что у вас там и сравнить со стандартным а вы сравниваете средину промежуточных данных алгоса |
|
Создано: 14 декабря 2016 18:38 · Личное сообщение · #12 cryptX пишет: Далнейшая отладка показала что функция sub_11630D4() вызывается несколько раз, при первом визове у функций совпадает IV с МД5, но вот второй вызов уже использует хеш от первого вызова как IV, третий - хеш от второго как IV итд...да и при каждом вызове входные данные для хеширования различаются. это по сути и есть последовательное хеширование, блоками по 64 байта. хэш инициализируется один раз на старте расчёта, потом используется предыдущее состояние. в аттаче семпл с чистым использованием алгоритма. мож так понятнее будет, как оно работает 3d97_14.12.2016_EXELAB.rU.tgz - md5test.exe | Сообщение посчитали полезным: cryptX |
|
Создано: 14 декабря 2016 19:00 · Поправил: cryptX · Личное сообщение · #13 |
|
Создано: 14 декабря 2016 19:07 · Личное сообщение · #14 |
|
Создано: 14 декабря 2016 19:09 · Поправил: -=AkaBOSS=- · Личное сообщение · #15 cryptX пишет: Спасибо, но семпл что то не запускается. в каком смысле? там лишнего кода нет, поэтому гуёв он не рисует. предназначен исключительно для просморта под отладчиком или в дизасме. вдогонку - аттачу сорц на фасме. не факт, что с макросами будет всё понятно, но мало ли... dd45_14.12.2016_EXELAB.rU.tgz - md5.asm |
|
Создано: 15 декабря 2016 14:42 · Личное сообщение · #16 |
eXeL@B —› Вопросы новичков —› Идентификация алгоритма |
Эта тема закрыта. Ответы больше не принимаются. |