Сейчас на форуме: (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› подскажите md5 или нет |
Посл.ответ | Сообщение |
|
Создано: 07 сентября 2014 20:44 · Личное сообщение · #1 если кому не сложно гляньте dll call по этому адресу 100146CD (в качестве параметров строка и ее длинна). на выходе 16 байт это .text:1001538E and dword ptr [eax], 0 .text:10015391 and dword ptr [eax+4], 0 .text:10015395 mov dword ptr [eax+8], 67452301h .text:1001539C mov dword ptr [eax+0Ch], 0EFCDAB89h .text:100153A3 mov dword ptr [eax+10h], 98BADCFEh .text:100153AA mov dword ptr [eax+14h], 10325476 и код по адресу 100153B2 вроде бы намекает на md5, но что-то у меня не выходит получить такой же результат как в dll. пробовал и md5 и md4. то ли модифицированный, то ли несколько раз прогоняeтся... http://rghost.ru/57898444 ![]() |
|
Создано: 07 сентября 2014 21:07 · Личное сообщение · #2 |
![]() Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 сентября 2014 07:37 · Личное сообщение · #3 Code:
т.е. Code:
а тут константы раскиданы немного по другому с другой стороны, по идее 10015C16 - MD5_Update и 10015CA2 - MD5_Final. 100153B2 - MD5_Transform ![]() |
|
Создано: 08 сентября 2014 07:58 · Личное сообщение · #4 Двойной MD5 с солью. В PasswordsPro этот алгоритм называется MD5(HMAC). https://ru.wikipedia.org/wiki/HMAC ![]() |
|
Создано: 09 сентября 2014 20:37 · Личное сообщение · #5 Prober пишет: Двойной MD5 с солью. В PasswordsPro этот алгоритм называется MD5(HMAC). https://ru.wikipedia.org/wiki/HMAC да действительно оно, спс. есть два блока по $40 байт, один заполнен "6" другой "". и на входе в функцию помимо основного текста для хеширования, есть ключевое слово (раньше я думал просто доп проверка), с хешем которого ксорятся два блока по $40 байт, ну и потом работа с основным текстом... но все таки видимо алгоритм модифицирован. т.к. перепробовал несколько вариантов и не могу получить такой же хеш. буду наверно asm код копировать... ![]() |
|
Создано: 10 сентября 2014 09:43 · Личное сообщение · #6 zds пишет: но все таки видимо алгоритм модифицирован Не модифицирован, один в один. PPro дал такой же хеш, как DLL. ![]() |
|
Создано: 10 сентября 2014 12:52 · Личное сообщение · #7 zds Попробуйте ----- Stuck to the plan, always think that we would stand up, never ran. ![]() |
|
Создано: 11 сентября 2014 23:45 · Личное сообщение · #8 Prober пишет: Не модифицирован, один в один. PPro дал такой же хеш, как DLL. блин, видимо я очень криворук. перерыл множество примеров реализации, так и не смог подобрать нужный. в том числе и PPRro не выдает нужного хэша например исходные данные: ключ 01B43528 48 00 49 00 54 00 41 00 43 00 48 00 49 00 00 00 H.I.T.A.C.H.I... данные 01BF02AC 54 00 45 00 53 00 54 00 44 00 41 00 54 00 41 00 T.E.S.T.D.A.T.A. 01BF02BC 5F 00 54 00 45 00 53 00 54 00 44 00 41 00 54 00 _.T.E.S.T.D.A.T. 01BF02CC 41 00 5F 00 54 00 45 00 53 00 54 00 44 00 41 00 A._.T.E.S.T.D.A. 01BF02DC 54 00 41 00 5F 00 54 00 45 00 53 00 54 00 31 00 T.A._.T.E.S.T.1. результат 094BE2E8 8D 29 E3 18 27 50 11 BE 6E D7 69 7E 40 E1 04 21 .)..'P..n.i~@..! нашел вот такую асм реализацию http://rghost.ru/57966594 результат 40914afbb3e103024e50fcac1ab69bfc ARCHANGEL пишет: Попробуйте --> OpenSSL hmac<-- C к сожалению не знаю. могу только на Delphi и немного C# нашел такую реализацию через Cryptoapi Code:
результат такой же как и выше. Ppro тоже выдает такой же хэш http://rghost.ru/57966825 вобщем чувствую, что я где сильно туплю...как бы уже начал тупо переносить acm код, но просто из принципа хочется понять где косяк, да и чувствую в переносе будет куча багов ![]() |
|
Создано: 12 сентября 2014 02:48 · Личное сообщение · #9 zds На скрине ASCII-строки, сорки тоже для них же, на примере же блок данных на основе юникод-строк, а если работаете с блоками по 64 байта, зачем вообще строки сдались ? Если вы думали, что на примере строк упростили задачу - то получилось немного наоборот. zds пишет: как бы уже начал тупо переносить acm код Вы уж извините за прямоту, тема создана 7 числа, а на дворе 12-ое, этот код можно было наверное не один раз риппнуть и отшлифовать. p.s. Последний раз риппал 49к строк асм кода (писал кг к плагу для 3ds макса), на рип+дебаг ушло почти 8 часов, это я к тому, что когда это хеш или код "в одну сторону", то часто самым быстрым является именно рип+дальнейшая асм-вставка. ----- ds ![]() |
|
Создано: 12 сентября 2014 08:13 · Личное сообщение · #10 DimitarSerg пишет: Вы уж извините за прямоту, тема создана 7 числа, а на дворе 12-ое, этот код можно было наверное не один раз риппнуть и отшлифовать. p.s. Последний раз риппал 49к строк асм кода (писал кг к плагу для 3ds макса), на рип+дебаг ушло почти 8 часов, это я к тому, что когда это хеш или код "в одну сторону", то часто самым быстрым является именно рип+дальнейшая асм-вставка. да я бы рад сесть и пару вечеров полностью уделить проблеме. но в силу сложившихся жизненных проблем, могу пока уделить по 1-2 часа и то вечер через вечер... да и если бы я был профи как все кто мне ответил (спасибо всем) я уверен что хватило бы и пары часов, да и не было бы этой темы. ![]() |
|
Создано: 12 сентября 2014 08:16 · Личное сообщение · #11 Еще раз сравнил с PPro, действительно, есть нюанс при размере соли >16 байтов, с короткой солью результаты одинаковые. PPro все 64 байта соли, как и положено, ксорит с константами, а ваша программа только 16 начальных байтов. На примере ваших данных: 1. Берутся 64 байта 0x36, первые 16 байтов ксорятся с Unicode("TESTDATA"). 2. Сзади добавляются 14 байтов Unicode("HITACHI"). 3. Считается MD5 от этих 78 байтов --> DC40C30CCA656393BD992C70C0FC7D6B 4. Берутся 64 байта 0x5C, первые 16 байтов ксорятся с Unicode("TESTDATA"). 5. Сзади добавляются 16 байтов из п. 3. 6. Считается MD5 от этих 80 байтов --> B1E77F65200094BBD126BD2CBE6DC19B Результат тот же в вашей ДЛЛ и в ППро. Думаю, это несложно на любом языке написать, либо действительно рипнуть, если уж иначе не выходит. ![]() |
|
Создано: 12 сентября 2014 14:24 · Личное сообщение · #12 |
![]() |
eXeL@B —› Вопросы новичков —› подскажите md5 или нет |