![]() |
eXeL@B —› Вопросы новичков —› Как подобрать добавочные байты, чтобы сошлась MD5 сумма файла? |
<< . 1 . 2 . 3 . >> |
Посл.ответ | Сообщение |
|
Создано: 23 июня 2018 19:20 · Личное сообщение · #1 Прошу немного просветить про МД5. Вобщем есть прошивка под контроллер. В ней проверяется целостность байт по следующей схеме: Считается MD5 сумма, заданного количества байт (все полезные байты прошивки). Потом эта сумма криптуется алгоритмом RSA с 1760 битным ключем. Менять RSA ключи нельзя, они проверяются. (Вернее можно, но придется прошивку в корне переписать). Что я хочу сделать. Увеличить размер проверяемых байт (например) на размер блока МД5, 64 байта. И подобрать эти последние добавленные байты, так чтобы сумма МД5 нового файла прошивки сошлась с суммой оригинальной прошивки. Соответственно вопросы: 1. Не преувеличиваю-ли я размер добавляемых байт? Может достаточно добавить 4 - 16 байт? 2. Есть какие-то известные брутфорсы, которые допускают ввести начальную МД5, отличную от стандартной (0123456789ABCDEFFEDCBA9876543210), и считающую размер в битах для финального блока не от нуля, а от заданного размера? ![]() |
|
Создано: 23 июня 2018 22:15 · Личное сообщение · #2 Там точно не участвует размер кода? - Откуда такая уверенность? Я выше писал, что этот размер я поменяю, на какой надо. Цифры этого размера не учавствуют в формировании МД5, эти цифры прописаны в конце лицензии полученной из МД5. Их можно просто изменить и все, даже МД5 под них не придется корректировать. И проверками занимается код из этой самой прошивки? Даже немного сложнее, полная прошивка разбита на бут и саму прошивку. Проверка МД5, для байт из бут-области, идет из обоих этих частей. На данный момент я пофиксил эти проверки, все работает. Но мне придется каждый раз править файл именно прошивки, который обновляет прошивку в контроллере, чтобы все работало как надо. Поэтому и надо подогнать МД5 бут-байт, чтобы контроллер спокойно обновлялся стоковой прошивкой. Взял бы уже реализацию мд5 на понятном тебе языке да посмотрел. Где-ж его взять-то? Автор BarsWF не пишет на Делфи. Да я в принципе понимаю алгоритм МД5. Я даже себе утилитку сам написал, для подсчета этого хеш, без всяких исходников и доп-модулей. У меня желание переписать именно BarsWF под ввод начального вектора и начального размера. Это, насколько мне известно, самый быстрый брутер. Если перепишу, то уж комп с нужной видюхой ATI или nVidia точно найду. И буду брутить на них. ![]() |
|
Создано: 23 июня 2018 22:18 · Личное сообщение · #3 Kuzya69 пишет: Где-ж его взять-то? Автор BarsWF не пишет на Делфи. Да я в принципе понимаю алгоритм МД5. Я даже себе утилитку сам написал, для подсчета этого хеш, без всяких исходников и доп-модулей. У меня желание переписать именно BarsWF под ввод начального вектора и начального размера. Это, насколько мне известно, самый быстрый брутер. Если перепишу, то уж комп с нужной видюхой ATI или nVidia точно найду. И буду брутить на них. Ну так загляни в алгоритм для куды например в md5_kernel.cu, ничего знакомого не видишь? ----- 2 оттенка серого ![]() |
|
Создано: 23 июня 2018 22:28 · Поправил: dosprog · Личное сообщение · #4 Разберись с алгоритмом на Си. Арифметика там практически такая же, как и в Паскале. Вопросы и отпадут Вообще, Паскаля скоро уже не будет, прими как факт, - так что время зря не потратишь, по-любому. А хочешь - можешь взять семпл у паскальщиков - не проверял: ![]() |
|
Создано: 23 июня 2018 22:33 · Поправил: Kuzya69 · Личное сообщение · #5 Ну так загляни в алгоритм для куды например в md5_kernel.cu, ничего знакомого не видишь? Да НЕКОТОРЫЕ Си-шные команды я понимаю. Дворд-константы от формулы T[i] = [4294967296 * abs(sin(i))] вижу, константы сдвигов, индексов двордов..... Все вижу. Но переписать и скомпилить сам не смогу. (Может скомпилить и смогу, или попрошу кого-нибудь). Разве вам самим не интересно заиметь такой брутер с расширенным функционалом? Разберись с алгоритмом на Си. Я в принципе иногда перевожу на Делфи коротенькие, и не сильно заумные Си-шные сырцы. Но тут проект явно мне не по зубам. ![]() |
|
Создано: 23 июня 2018 22:41 · Личное сообщение · #6 Я нихера не понял, но в принципе есть еще вариант в автоматическом режиме делать правку - заменять RSA ключ на свой. Да если-бы так просто, мне просто щас придется писать целый роман. Давайте примем за аксиому, что нельзя. Давайте на МД5 прицелимся. Если надо объясню. Я и так сокращаю свои посты, чтобы не писать весь алгоритм проверки, там все проверки "цепляются" друг за друга. К тому-же RSA ключей там 5 штук, и они (не все) после криптовки по AES-128 передаются в управляющую программу для проверки. ![]() |
|
Создано: 23 июня 2018 22:42 · Поправил: dosprog · Личное сообщение · #7 Kuzya69 пишет: Я в принципе иногда перевожу на Делфи коротенькие, и не сильно заумные Си-шные сырцы. Оно, конечно, полезно, - для общего развития. - но непродуктивно по факту. ) Когда задолбёшься этим заниматься, придёшь сам, к чему говорю. Kuzya69 пишет: Разве вам самим не интересно заиметь такой брутер с расширенным функционалом? ) Тебе честно сказать?.. Смотри сам. Оцениваю эту затею в убитый на виртуальную проблему выходной. С непредсказуемым результатом. ![]() |
|
Создано: 23 июня 2018 22:45 · Поправил: f13nd · Личное сообщение · #8 Code:
Я к тому что это просто мд5. Сишного в нем только оператор присвоения ("=") Ну может еще пара загогулин. ----- 2 оттенка серого ![]() |
|
Создано: 23 июня 2018 22:58 · Поправил: Kuzya69 · Личное сообщение · #9 Когда задолбёшься этим заниматься, придёшь сам, к чему говорю. Да я это и сам понимаю. Просто, несколько лет назад, я вообще не умел программировать и знал слегка только Фортран в рамках институтской программы. Я поступил в институт в 1986 году. Я стараюсь изучать Си, но у меня это плохо получается (может возраст сказывается). Делфи-то мне помог один мальчишка изучить, спасибо ему. Я к тому что это просто мд5. Сишного в нем только оператор присвоения ("=") Верю и вижу, но тут нет начальной размерности пароля и начального вектора. А где их искать дальше, я не знаю. Тем более не знаю как их изменить, как заставить прогу принимать еще два параметра из командной строки. Можно конечно попробовать заняться мазохизмом. Загрузить прогу в Олли, и найти там (с машинным асмом вроде особых проблем нет). Потом написать лоадер. Но это сущее извращение. А уж как быть с CUDA я вообще в пролете. ![]() |
|
Создано: 23 июня 2018 23:04 · Поправил: dosprog · Личное сообщение · #10 Ну, выложил ссылку на алго MD5 на Паскале. Задай короткую строку и добавку к ней, переменной длины, посчитай её (строки) md5, запомни ёе (md5), инкрементируй первый байт строки и добавляй к ней по байту (из добавки) с перебором, пересчитвыая md5 для новой строки до получения запомненной суммы. ) О результатах, плизз, отпиши. ..только убедись сперва, что там по ссылке не полова. ![]() |
|
Создано: 23 июня 2018 23:21 · Поправил: Kuzya69 · Личное сообщение · #11 Ну, выложил ссылку на алго MD5 на паскале.... О результатах, плизз, отпиши. Зачем все это, доказать что я знаю Делфи или МД5? В первом случае могу выложить свою реализацию, во втором - так-же докажет моя реализация. Правда у меня более короткий по количеству кода, но более медленный алгоритм, там все в циклах.. Меня он устраивает, для подсчета МД5. Но для брута он будет медленным, так-же как и выложенный вами по ссылке. Я поэтому и зацепился за BarsWF. Там как обещает автор и SSE и CUDA и поддержка AMD-ATI видюх. по ссылке не полова. Что такое "полова"? ![]() |
|
Создано: 23 июня 2018 23:26 · Личное сообщение · #12 |
|
Создано: 23 июня 2018 23:29 · Личное сообщение · #13 |
|
Создано: 23 июня 2018 23:30 · Поправил: dosprog · Личное сообщение · #14 |
|
Создано: 23 июня 2018 23:34 · Личное сообщение · #15 |
|
Создано: 23 июня 2018 23:44 · Личное сообщение · #16 Kuzya69 пишет: Давайте примем за аксиому, что нельзя. Давайте на МД5 прицелимся. Давайте. md5 - это криптографическая хеш-функция, т.е. он проектировался таким образом, чтобы подобрать данные под заданный хеш было невозможно за разумное время. Про брут 2^64 забудь - даже если перебирать со скоростью триллион хешей в секунду, на это уйдет 200 дней; если же скорость будет более реальной, скажем миллиард хешей в секунду, то и вовсе лет 500. ![]() |
|
Создано: 24 июня 2018 00:03 · Личное сообщение · #17 то и вовсе лет 500. Да что-же все про одно и то-же? Да я прекрасно понимаю сложность. Но МД5 устроен так, что изменение даже одного бита влечет лавинное изменение практически всех бит хэша. Поэтому МД5 может сойтись и на самых первых итерациях, когда ключ маленький. Тем-более мне не нужно искать "осмысленный", состоящий из печатаемых символов пароль, мне нужны чисто байты. Это конечно опять-же усложняет перебор, но и дает надежду на более раннее завершение брута. Может кто показать в исходнике BarsWF места, где инициализируются начальный вектор, начальный размер пароля, и где вычитываются параметры командной строки, для всех шести вариантов программы (AMDBrook, CUDA, SSE2 соответственно под 32 и 64 битные версии). Буду пробовать сам победить это, если никому это не нужно. ![]() |
|
Создано: 24 июня 2018 00:04 · Поправил: dosprog · Личное сообщение · #18 |
|
Создано: 24 июня 2018 00:12 · Личное сообщение · #19 Kuzya69 пишет: изменение даже одного бита влечет лавинное изменение практически всех бит хэша. Поэтому МД5 может сойтись и на самых первых итерациях, когда ключ маленький Я вот этого не улавливаю, почему такой вывод? И не "практически всех", а всех. Если представить хеш-функцию (рипемд160) в виде графа и установить значения всех бит, кроме любого последнего, там несолько сотен тождеств получится из примерно 297к. Каждый вшивый бит определяет результат. ----- 2 оттенка серого ![]() |
|
Создано: 24 июня 2018 00:13 · Поправил: kunix · Личное сообщение · #20 Kuzya69 пишет: Да я прекрасно понимаю сложность. Нет, вы не понимаете ![]() Вам тут написали, что даже 2^64 нет смысла пытаться подобрать, а вы хотите 2^128. Kuzya69 пишет: Поэтому МД5 может сойтись и на самых первых итерациях, когда ключ маленький. Не, ну конечно, может! Также, теоретически, я могу угадать секретный ключ от пентагона и спиздить дохуилиярд. Вспоминается анекдот про блондинок и динозавра ![]() ![]() |
|
Создано: 24 июня 2018 00:14 · Поправил: Kuzya69 · Личное сообщение · #21 |
|
Создано: 24 июня 2018 00:16 · Личное сообщение · #22 dosprog пишет: ..при том же размере данных.. Это не важно. Если данные меньше 5 байт, можно выкинуть последний раунд (с небольшой модификацией хеша), но и это не даст существенного прироста. Добавлено спустя 4 минуты Kuzya69 пишет: Поэтому МД5 может сойтись и на самых первых итерациях, когда ключ маленький. А может и не сойтись. И вероятность тут не 50 на 50, лол ![]() ![]() |
|
Создано: 24 июня 2018 00:23 · Личное сообщение · #23 |
|
Создано: 24 июня 2018 00:25 · Личное сообщение · #24 |
|
Создано: 24 июня 2018 00:31 · Личное сообщение · #25 Kuzya69 пишет: и так далее Ну, если 69 это твой год рождения, то внукам завещай, чтоб комп с брутилкой не выключали ![]() Добавлено спустя 5 минут f13nd пишет: Я вот этого не улавливаю, почему такой вывод? Он, наверное, думает, что раз даже малейшее изменение входных данных полностью перемешивает биты хеша, то это как-то повышает вероятность случайно попасть на нужный хеш. Но до сих пор не понимает, что хочет выиграть в лотерею "1 из 340282366920938463463374607431768211456". ![]() |
|
Создано: 24 июня 2018 00:42 · Поправил: f13nd · Личное сообщение · #26 |
|
Создано: 24 июня 2018 00:57 · Поправил: Kuzya69 · Личное сообщение · #27 |
|
Создано: 24 июня 2018 00:59 · Личное сообщение · #28 |
|
Создано: 24 июня 2018 01:09 · Поправил: Kuzya69 · Личное сообщение · #29 Скорость перебора ерунда, если за тебя топит леди Фортуна. Не, ну это уже по кругу идем. То-ли десяток тыщ итераций в секунду, то-ли миллионы. Во втором случае фортуна быстрее откликнется. Делай на дельфи из того, что дали. Да сделаю, если с BarsWF не поможете. Только напишу заново, сам, без циклов и на асм-вставках. ![]() |
|
Создано: 24 июня 2018 01:12 · Личное сообщение · #30 |
|
Создано: 24 июня 2018 01:17 · Личное сообщение · #31 |
<< . 1 . 2 . 3 . >> |
![]() |
eXeL@B —› Вопросы новичков —› Как подобрать добавочные байты, чтобы сошлась MD5 сумма файла? |