Станет актуальным с выходом GF9800 Когда скорость перебора паролей возрастет до 2 миллиардов в секунду. О процессах Nvidia в сравнении с многоядерными Pentium совместимыми // для понимания исходников Чтобы получить 4-кратное увеличение скорости перебора на 4-ядерном Pentium, нужно запустить одновременно (например) 4 PasswordsPro. Ну это в принципе все что можно выжать. С процессорами Nvidia немного по-другому. Мультипроцессоров в GF8800GTX – 16 штук. Причем в каждом мультипроцессоре 8 процессоров, итого 128. Каждый процессор Nvidia выполняет инструкцию за 4 такта (GF9800 2400 МГц. ), но 8 процессоров в 32 потоках выполняют одинаковую инструкцию тоже за 4 такта. т.е. (128*4) 512 потока на GF8800ULTRA будут выполнятся с той же скоростью как на 128-ядерном Pentium 1500 МГц Теперь о недостатках: Инструкции чтения-записи в глобальную память выполняются за 400..600 тактов. Решается запуском большего количества потоков, чем процессоров*4. Со скоростью инструкция за 4 такта процессора выполняют только одинаковые инструкции. Если потоки разошлись следует использовать __syncthreads(); В MD5 все инструкции синхронные. Работа только с видеопамятью - сильно тормозит, туда-сюда данные перекачивать. Release V2.01 nvCUDA_md5.exe nvCUDA_md5.rar nvCUDA_md5.cu (исходник) Необходимые библиотеки dll.rar Скорости для GF8800GT (112 процессоров 1.625Гц.) 1 hash 400млн.. п/c 2..9 hashs 400 - 310 млн.. п/c 9..1000000 hashs 310 – 200 млн.. п/c Командная строка: nvCUDA_md5.exe c=loweralpha-numeric f=md5pas.txt s=1 e=9 b=70 o=find.txt c=набор символов из charset.txt f=файл откуда берем хеши s=начальная длинна пароля e=конечная длинна пароля (15 max) b=(( количество процессоров ) / 8) *5 или экспериментируем. o=файл куда будут записываться найденные пароли Mini Release nvCUDA.exe XP необходимо установить последние драйверы ForceWare: 169.21 MD5 хеши // Заточено на популярную GF8600GT Предварительная атака 2..5 символов (0x21..0x7f) Командная строка: // перебирает 0..9,a..z nvCUDA.exe -f=mypas.txt -s=7 -e=7 -f= файл с паролями до 50 шт. типа admin:9987d22788e810116a45109f2ea88648 -s= начальное количество символов в пароле 6 - by default -e= конечное количество символов в пароле 8 - by default Необходимые библиотеки dll.rar (158кб.) // cudart.dll , cutil32.dll Собранный файл + Исходник nvCUDA.rar (82кб.) Тестим скорость, описываем глюки. У меня на GeForce 8600 GT TOP ~ 105 mln pas/sec Если ни кто (из более опытных программистов АНТИЧАТа ) не возьмется писать, продолжу сам. Mini Release nvCUDAsql.exe MySql хеши Командная строка: nvCUDAsql.exe -f=mysqlpas.txt -s=4 -e=10 -sl=91 –bl=20 -f= файл с паролями до 50 шт. типа hash:6cb1963d2018c3ea -s= начальное количество символов в пароле 4 - by default -e= конечное количество символов в пароле 10 - by default -sl= 25 , 35 , 71 , 91 наборы символов -bl=производительность видеокарты. (20 - 128) Собранный файл + Исходник ncCuda_mysql.rar (81кб.) Скорость перебора одного хеша 8 000 000 000 000 п/c. на GF8600GT Ps 2 b3d3l - Pupkin-Zade c xakep.ru обещал премию выписать. Пока продумываю 3D интерфейс…
Все работает GeForce 8600GTX 2 гига памяти,только мне кажеться более разумным собрать ботнет и грузить его на 10-20% от всей мощности видеокарты но получить в итоге огромные мощности
Вопрос к Xserg А видюхи от ATI, например HD 2900 линейки (ядро R600) ведь содержат 320 унифицированных суперскалярных потоковых процессоров их заюзать не удастся? Ну там 64х5 ALU на самом деле и только один полноценный (синусы, косинусы и пр.) а четыре чисто выполняют опрации сложения и умножения, а в ядре G80 все 128 шт. (16х8 ALU )универсальные с полноценными арифметико-логическими устройствами, так!? PS Для выислени MD5 нужна плавающая точка или достаточно обычого АЛУ ? Если заюзать мощь R600 не будет ли ещё быстрее перебор?
-=lebed=- копипаст с cracklab.ru Только для nVidia 8xxx и новее. Где-то читал , что конкуренты готовят нечто подобное. там есть константа // влияет на количество потоков (20*32) // 8600 своими 32 процессорами больше не тянет #define BLOKS 20 // be in need of integer Это настройка на видеокарту (20 – GF8600GT) на (80- GF8800ULTRA) ---------------- на 8400 скорее всего будет ошибка по тамауту . >>16 сони-плейстейшн было бы идейнее подключить к бруту... Деньги давай – приспособлю. Скорость будет ~ 12 миллиардов п/с
Сделай автодетект видяхи типа ComboBox на форме и так выбираешь свою видеокарту GeForce 6800 GeForce 8800 GeForce 8600
Сейчас я код набиваю: Генератор последовательности паролей (2 шт). Брут соленых хэшей. Загрузка и сохранение результатов. Детектор производительности видеокарты. Интерфейс пользователя. Потом займусь общей оптимизацией. Работы много – времени не очень.
Xserg, молодец, это очень крутая вещь! Скорость на 8800 GTS 320 Mb (G80) ~183 mln pas/sec (а с разгоном ~251 mln pas/sec!!) ...правда, так только при бруте одного хеша, при бруте пятидесяти - ~41 mln pas/sec (c тем же разгоном 54 mln pas/sec)
Goto http://forum.xakep.ru/m_1073574/mpage_1/key_/tm.htm#1086487 трясти бабло с ихнего админа... (правда он за слова не отвечает...) PS требуемый порог был 35 млн. пасс/сек.
Уязвимость MySql хешей Для тех кто не знает MySql хеш вычисляется так: Code: #include <windows.h> #include "stdafx.h" #define DWORD unsigned int DWORD hash0,hash1,hash11; void pen_mysql(unsigned char * data) { DWORD f1 = 0x50305735,f2 = 0x12345671; DWORD fadd = 7; for (;*data;data++) { f1 = f1 ^ ((( (f1 & 0x3f) + fadd ) * *data ) + (f1 << 8)); f2 = f2 + ((f2 << 8) ^ f1 ); fadd = fadd + *data; } hash0= f1 & 0x7fffffff; hash1= f2 & 0x7fffffff; } int _tmain(int argc, _TCHAR* argv[]) { char pass[]="MySqlH"; pen_mysql((unsigned char *)&pass); printf("Pass:%.8x%.8x:%s: \n",hash0,hash1,pass); Сразу бросается в глаза, что алгоритм последовательный, и можно в цикле перебирать последний символ. Но главная уязвимость – это то что можно найти f2 предпоследнего перебираемого символа путем недолгого перебора: Code: int mlb = (hash1 - hash0 ) & 0xff; for (DWORD ii=mlb;ii<0x80000000;ii+=0x100){ if (((ii + ((ii << 8) ^ hash0 )) & 0x7fffffff)==hash1) { printf("%.8X \n",ii); [COLOR=red]hash11[/COLOR]=ii; // f2 break; }} Так выглядит алгоритм перебора 6 символов Code: unsigned char simv[] ="asdfghjklqwertyuiopzxcvbnmASDFGHJKLQWERTYUIOPZXCVBNM"; DWORD len=sizeof(simv)-1; DWORD f1 = 0x50305735, f2 = 0x12345671; DWORD fadd = 7; for (char i6=0; i6<=len ; i6++ ){ DWORD f6f1 = f1 ^ ((((f1 & 0x3f) + fadd ) * (DWORD)simv[i6]) + (f1 << 8)); DWORD f6f2 = f2 + ((f2 << 8) ^ f6f1 ); DWORD f6ad = fadd + simv[i6]; for (char i5=0; i5<=len ; i5++ ){ DWORD f5f1 = f6f1 ^ ((((f6f1 & 0x3f) + f6ad ) * (DWORD)simv[i5]) + (f6f1 << 8)); DWORD f5f2 = f6f2 + ((f6f2 << 8) ^ f5f1 ); DWORD f5ad = f6ad + simv[i5]; for (char i4=0; i4<=len ; i4++ ){ DWORD f4f1 = f5f1 ^ ((((f5f1 & 0x3f) + f5ad ) * (DWORD)simv[i4]) + (f5f1 << 8)); DWORD f4f2 = f5f2 + ((f5f2 << 8) ^ f4f1 ); DWORD f4ad = f5ad + simv[i4]; for (char i3=0; i3<=len ; i3++ ){ DWORD f3f1 = f4f1 ^ ((((f4f1 & 0x3f) + f4ad ) * (DWORD)simv[i3]) + (f4f1 << 8)); DWORD f3f2 = f4f2 + ((f4f2 << 8) ^ f3f1 ); DWORD f3ad = f4ad + simv[i3]; for (char i2=0; i2<=len ; i2++ ){ DWORD f2f1 = f3f1 ^ ((((f3f1 & 0x3f) + f3ad ) * (DWORD)simv[i2]) + (f3f1 << 8)); DWORD f2f2 = f3f2 + ((f3f2 << 8) ^ f2f1 ); if ((f2f2 & 0x7fffffff)==[COLOR=red]hash11[/COLOR]) { // ----- -1 ----------------------- DWORD f2ad = f3ad + simv[i2]; for (char i1=0; i1<=len ; i1++ ){ DWORD f1f1 = f2f1 ^ ((((f2f1 & 0x3f) + f2ad ) * (DWORD)simv[i1]) + (f2f1 << 8)); DWORD f1f2 = f2f2 + ((f2f2 << 8) ^ f1f1 ); if (((f1f1 & 0x7fffffff)==hash0)&((f1f2 & 0x7fffffff)==hash1)){ printf("Pass:%.8x%.8x:%c%c%c%c%c%c: \n",f1f1,f1f2,simv[i6],simv[i5],simv[i4],simv[i3],simv[i2],simv[i1]); printf(" ok \n"); int c = getchar(); return 0; } } // ----- -1 ----------------------- } }}}}} printf(" false \n"); int c = getchar(); return 0; } Получается - 8 символьный пароль можно найти за тоже время, что и 7 символьный. На GF8600 получается 150 миллиардов п/сек. А на GF9800 можно будет за полдня подобрать коллизию к любому хешу.
у меня: 8600 GTS 128мб в CMD выдает: C:\>C:\1\nvCUDA.exe -f=mypas.txt -s=7 -e=7 Device Emulation (CPU) Clock rate: 1.350 Mg There is no device supporting CUDA. че за шляпа? (((
первый раз пробовал тоже что то писал, ща не помню уже что пробуй дрова поставить те что автор указывал.
Качнул Дрова. поставил терь короче он мне выдает что типо файл с листом хешей не найден ((( Code: C:\>C:\MD5\nvCUDA.exe -f=mypas.txt -s=6 -e=7 GeForce 8600 GTS Clock rate: 1.458 Mg There is no mypas.txt file. Press ENTER to exit... че за нафиг? (((