Тестируем. Нужна помощь. Приветствую всех! Предлагаю всем желающим протестировать брутер MD5 под linux http://rnsd.ru/md5 файл удален! Внось заинтересовавшимся, в ЛС. компилируем так: Запуск: Теперь подробнее о параметрах: После запуска некоторое время ни чего не отображается, так как идет обработка параметров и файла. После этого будет произведен запуск потоков и появится надпись: которая будет обновляться раз в 3 секунды, первое значение: "активные потоки", второе значение: "изначально запущенные потоки". При нахождении пароля, рядом с этой надписью появится сообщение: Не обращайте внимание на последний символ "▒" Это потому, что вывод еще не доработан, идет тестирование основных функций. По окончанию работы появится красная надпись: Ну тут все понятно, сколько проверено паролей и сколько паролей найдено. Такая надпись появится для каждого из потоков. Ну и чуть ниже появится: Последнее сообщение отладочное =) не пугайтесь. 0x3e это нормальный код завершения. Теоретически должен поглощать файлы, размер которых меньше (кол-ва оперативки)*2 и не превышает 4Гб. Так что пробуйте. Ах да чуть не забыл, прошу еще запускать между двух вызовов date, как то так: эдакий счетчик производительности. Отписывайтесь здесь, копируя вывод программы, и характеристики железа. Заранее благодарю за помощь! ADD: версия для i386
Рабочие сервера жалко, вот под OSx брут нормальный, я пищал бы от радости. Если совсем уж никто не откликнется, моякни в личку, есть 20+ площадок с разной конфигурацией FreeBSD\CentOS. Можно будет попробовать погонять на выходные.
хм... и вправду... а зачем нужны брутеры? p.s. брутер в дальнейшем планируется интегрировать в сервис, аналогичный hashcracking.ru и прочее. А вообще писался в рамках освоения asm в linux.
Может быть позже, если доделаю... Пока что, жду помощи в тестировании. p.s. по сути это и есть исходники, только в не совсем удобочитаемом виде.
Я смог поглядеть на кусок кода , отвечающий за генерацию хеша md5 и там все очень далеко от идеала , если говорить про скорость работы . Компилируется нормально , но вот при запуске пишет ./brute -f ./md5.txt -c a -l 5:10 Error, need check the source code! (Code 00000008)
Ошибка из-за размера файла, он мал... мне надо на огромных файлах проверить... Что именно в годе излишне? хотя б один фрагмент...
А какой минимальный размер файла ? мне надо узнать максимальную скорость , которая разумеется получится только при одном хеше ... Ну это очень долго объяснять , но у тебя сейчас скорость примерно в 2 раза меньше , чем это все возможно написать , если конечно не брать во внимание схему генерации очередного пароля и проверки хешей на валидность . Думаю что даже СИ компилятор сможет прооптимизировать лучше , чем сделано в данный момент ...
после хеша на новую строку переведи дважды, это если хеш один. А вот теперь складывается впечатление, что ты "пустослов". И кода ты не смотрел. Всегда когда пишете о подобном, конкретизируйте иначе ваши слова пусты! Си лучше? но но... интересно как add: он по сути своей ориентирован на работу с большими Файлами. И к тому же, конечная оптимизация еще не проводилась, но основная её часть уже проведена.
Вот кусок из твоей программы : mov eax, [esi+4] mov ebx, [esi+8] and ebx, eax not eax and eax, [esi+0Ch] or eax, ebx add eax, [esi] add eax, [edi] add eax, 0D76AA478h rol eax, 7 add eax, [esi+4] mov [esi], eax А вот как это надо было сделать : mov eax, ecx xor eax, edx and eax, ebx xor eax, edx lea ebp, [ eax + 0D76AA478h + ebp ] add ebp, [edi] rol ebp, 7 add ebp, ebx Как говорится , почуствуйте разницу , а заодно всю мощь и красоту ассемблера
Что, что это за ересь? Ты бы для начала обусловил где, что у тебя находится, на начало этого кода. Ну предположим, что на начало кода, в ecx находится "B". Что находится в edx и ebx? Безусловно радует, что вы прочли некоторые статьи по оптимизации и предложили использовать вместо пары Add Однако не пойму почему вместо приемника используется ebp, а не eax, вероятный копипаст из статьи??? Прошу заметить, что такая оптимизация проводится на последнем этапе разработки, так сказать "финальная оптимизация".
Я в курсе, что это первый проход блока FF, я спрашивал про твой "аналог". Прочитай сообщение предыдущее, я его дописывал в то время, когда ты ответил.
На начало кода, в ecx как и положено находится "С" mov esi, 67452301h mov ebx, 0EFCDAB89h mov ecx, 98BADCFEh mov edx, 10325476h mov eax, ecx xor eax, edx and eax, ebx xor eax, edx lea esi, [ eax + 0D76AA478h + esi ] add esi, dword [ edi + 00h ] rol esi, 7 add esi, ebx
Вынужден согласиться такой вариант, более оптимален, правда чуть с другими регистрами, но это уже не суть важно. p.s. ну как удалось запустить с одним хешем?
Конечно работает , но скорость перебора паролей не показывается , найденые пароли в консоли затираются , а в файл не сохраняются . /brute -f ./hashs.txt -l 5 -c a -t 1 Work thread: 1/1 ...Thread checked 11881376 passwords, found 1 password. Work thread: 0/1 ... In file 2 uniq hash, and 0 duplicate Program was finished. Return code: [00000038] Никаких статей я не читаю , а только сам иногда их пишу ... В качестве приемника тут можно использовать все что угода , например ebp , это все от кодера зависит как ему надо сделать . А элементарные знания основых команд процессора и принциа их работы , а также практика и опыт позволяют писать такие как ты выразился "оптимизированные куски" , хотя это далеко не оптимизированный код и конструкции такого типа ( lea ebp, [ eax + 0D76AA478h + ebp ] ) должны писаться сразу , потому что дальше там все намного сложней и серьезней идет . И еще один момент - строчки в коде такие как "/var/www/Coding/md5/v1/pass_gen.txt'" говорят , что если на линус тачках стоит и запущен к примеру веб-сервак Апач с дефолтным путем установки , то с такой машины будут утекать все найденные пароли из этого файла ...
КрепЁж , вот ссылка ( http://leopard.500mb.net/1.asm ) на дисассмеблированный текст , причем даже с человаческим названием ссылок , считай что это исходники , если прога полностью на асме написана . И еще отдельно ссылка ( http://leopard.500mb.net/md5.asm ) на сам код для генерации md5 хеша