| 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  | 
| 
 | 
Создано: 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 —› Вопросы новичков —› Идентификация алгоритма | 
| Эта тема закрыта. Ответы больше не принимаются. | 










 
 Для печати