Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   <<<MD5, minirelease, CUDA>>> (https://forum.antichat.xyz/showthread.php?t=62728)

Xserg 25.02.2008 17:27

<<<MD5, minirelease, CUDA>>>
 
Станет актуальным с выходом 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 интерфейс…

zl0y 25.02.2008 17:34

Все работает GeForce 8600GTX 2 гига памяти,только мне кажеться более разумным собрать ботнет и грузить его на 10-20% от всей мощности видеокарты но получить в итоге огромные мощности ;)

Delimiter 25.02.2008 17:38

Цитата:

Если ни кто (из более опытных программистов АНТИЧАТа ) не возьмется писать, продолжу сам.
.... прожолжай мну нравится! :d Тему нужно перенести в релизы от Сержа!

zl0y 25.02.2008 17:45

Серж,кстати неплохо бы еще ставить атаку по выбору цифры,буквы отдельно чтоб.

GlOFF 25.02.2008 17:49

Цитата:

Пока продумываю 3d интерфейс…
Серьезно... +1 ;) Без 3d идея будет не полной. :)

// P.S. Да не у всех такие девайсы.

iddqd 25.02.2008 17:55

автор наверно хотел сказать ГУИ....

Jes 26.02.2008 15:50

имхо , если перекомпилить под никс , можно максимальное быстродействие выжать ...

Momiji 02.03.2008 19:14

А на 8400М Gt бует пахать?

-=lebed=- 02.03.2008 19:45

Вопрос к Xserg А видюхи от ATI, например HD 2900 линейки (ядро R600) ведь содержат 320 унифицированных суперскалярных потоковых процессоров их заюзать не удастся? Ну там 64х5 ALU на самом деле и только один полноценный (синусы, косинусы и пр.) а четыре чисто выполняют опрации сложения и умножения, а в ядре G80 все 128 шт. (16х8 ALU )универсальные с полноценными арифметико-логическими устройствами, так!?

PS Для выислени MD5 нужна плавающая точка или достаточно обычого АЛУ ? Если заюзать мощь R600 не будет ли ещё быстрее перебор?

-=lebed=- 02.03.2008 19:47

Цитата:

Сообщение от Momiji
А на 8400М Gt бует пахать?

в ней всего 16 шт. универсальных суперскалярных процессоров ;)

iddqd 02.03.2008 19:50

16 сони-плейстейшн было бы идейнее подключить к бруту...
http://forum.antichat.ru/thread63171.html

Xserg 02.03.2008 20:15

-=lebed=-
копипаст с cracklab.ru
Только для nVidia 8xxx и новее.
Где-то читал , что конкуренты готовят нечто подобное.

там есть константа
// влияет на количество потоков (20*32)
// 8600 своими 32 процессорами больше не тянет
#define BLOKS 20 // be in need of integer
Это настройка на видеокарту (20 – GF8600GT) на (80- GF8800ULTRA)

----------------
на 8400 скорее всего будет ошибка по тамауту .

>>16 сони-плейстейшн было бы идейнее подключить к бруту...
Деньги давай – приспособлю. Скорость будет ~ 12 миллиардов п/с

zl0y 02.03.2008 20:18

Цитата:

Сообщение от Xserg
-=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

Xserg 02.03.2008 20:52

Сейчас я код набиваю:
Генератор последовательности паролей (2 шт).
Брут соленых хэшей.
Загрузка и сохранение результатов.
Детектор производительности видеокарты.
Интерфейс пользователя.
Потом займусь общей оптимизацией.

Работы много – времени не очень.

nex0 06.03.2008 22:46

Xserg, молодец, это очень крутая вещь!
Скорость на 8800 GTS 320 Mb (G80) ~183 mln pas/sec (а с разгоном ~251 mln pas/sec!!)
...правда, так только при бруте одного хеша, при бруте пятидесяти - ~41 mln pas/sec (c тем же разгоном 54 mln pas/sec)

-=lebed=- 06.03.2008 23:08

Цитата:

Сообщение от nex0
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 млн. пасс/сек.

Xserg 16.03.2008 16:29

Уязвимость MySql хешей


Для тех кто не знает MySql хеш вычисляется так:

Код:

#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 предпоследнего перебираемого символа путем недолгого перебора:
Код:

int mlb = (hash1 - hash0 ) & 0xff;
for (DWORD ii=mlb;ii<0x80000000;ii+=0x100){
if (((ii + ((ii << 8) ^ hash0 )) & 0x7fffffff)==hash1) {
                printf("%.8X \n",ii);
                hash11=ii; // f2
                break;    }}


Так выглядит алгоритм перебора 6 символов
Код:

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)==hash11) {
// ----- -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 можно будет за полдня подобрать коллизию к любому хешу.

*.exe 16.03.2008 23:02

у меня: 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.

че за шляпа? (((

}{0TT@БЬ)Ч 17.03.2008 00:30

первый раз пробовал тоже что то писал, ща не помню уже что:) пробуй дрова поставить те что автор указывал.

*.exe 17.03.2008 23:16

Цитата:

Сообщение от }{0TT@БЬ)Ч
первый раз пробовал тоже что то писал, ща не помню уже что:) пробуй дрова поставить те что автор указывал.

Качнул Дрова. поставил терь короче он мне выдает что типо файл с листом хешей не найден (((


Код:

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...

че за нафиг? (((

Xserg 17.03.2008 23:27

Цитата:

Сообщение от Xserg
Командная строка:
nvCUDA.exe -f=mypas.txt -s=7 -e=7
-f= файл с паролями до 50 шт. типа admin:9987d22788e810116a45109f2ea88648
-s= начальное количество символов в пароле 6 - by default
-e= конечное количество символов в пароле 8 - by default

Создай файл C:\md5.txt
Запиши туда хеши md5
запускай
nvCUDA.exe -f=C:\md5.txt -s=6 -e=9

[Paran0ik] 19.03.2008 17:00

еще бы заюзать видяшку для работы с радужными табличками...

Xserg 19.03.2008 17:51

Цитата:

Сообщение от [Paran0ik]
еще бы заюзать видяшку для работы с радужными табличками...

Проверять по таблице ускорения не получится.
А вот генерировать таблицы можно подумать, только нужно где-то алгоритм генерации найти.

[Paran0ik] 19.03.2008 18:13

Цитата:

А вот генерировать таблицы можно подумать, только нужно где-то алгоритм генерации найти.
ну я это и имел ввиду, прошелся по гуглу - сходу алгоритмов никаких не нашел, но уделю этому потом свое время, а насчет проверки по таблице - тот же пассвордпро ищет хеши по одному...т.е. поиск 2х хешей по радужным таблицам будет в 2 раза дольше, 3х - в три раза дольше и т.д. я думаю с использованием мультипроцессоров видеокарты можно увеличить скорость поискам по таблицам большого количества хешей...

-=lebed=- 19.03.2008 18:19

исходники http://www.antsight.com/zsl/rainbowcrack/rainbowcrack-1.2-src.zip

Basurman 19.03.2008 19:39

*.exe
прежде чем запустить такую комманду, сделай cd MD5 ради хохмы...

Автор +5

Hardover 26.03.2008 03:13

Перезалейте пожалуйста

Xserg 27.03.2008 01:17

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

Теперь вплотную займусь таблицами

aquam 19.04.2008 12:46

Отличная и нужная разработка!
 
Если у кого получится скомпилить под Linux, просьба отчитаться о результатах!

Xserg 19.04.2008 20:28

Генератор радужных таблиц на nVidia 8xxx+ (md5)
RainbowTableGeneratev01 (copy 2).rar (Размер: 217.06 Кб)
+ исходник , ( сортировщик и крекер - rainbowcrack-1.2-src )
Dll V2.0 для таблиц.

Командная строка
RainbowTableGenerate.exe md5 numeric 1 5 3 1000 10000 test 64
64 – число процессоров в вашей видеокарте.

Скорость генерации цепочек на GF8600 ~21млн./сек
Где то в 10 раз быстрее чем AMD3500+

Трудности на nVidia :
отсутствие аппаратного ускорения при делении целых чисел.
+ ошибки компилятора при работе с ( unsigned long long )

ShAnKaR 23.04.2008 23:29

Цитата:

Сообщение от aquam
Если у кого получится скомпилить под Linux, просьба отчитаться о результатах!

под линукс вот это немного подправить можно http://majuric.org/software/cudamd5/source/

ShAnKaR 11.05.2008 02:45

под линукс нормально это собирается почти без правки http://www.troopers08.org/content/e6/e496/BELENKO_Andrej.zip
nvcc -c ./MD5_RFC1321_GPU.c
потом с gcc все остальное.
у меня на 9800gtx 125-122 M p/s кажет

n4e/\@ 12.05.2008 16:36

Под Вистой я так понял работать не будет, потому что под нее нет Cuda или я не прав?

devton 13.05.2008 06:19

Ето самый полезный самопальный софт на Ачате :)
теперь у каждого хакерка с видяшкой нвидиа есть свой маааленький суперкомпутер =-()

flankerx 20.05.2008 13:05

Народ, а зачем велосипед изобретать?
http://www.elcomsoft.com/md5crack.html

zl0y 20.05.2008 15:03

Цитата:

Сообщение от flankerx
Народ, а зачем велосипед изобретать?
http://www.elcomsoft.com/md5crack.html

Тут более раньше идея зародилась.

-=lebed=- 20.05.2008 16:42

Затестил, на одном хэше скорость на Nv8600gt ~60-83млн. пасс/сек. (md5хэш)
ЗЫ Автору + и респект! Пусть работает дальше. Ограничение в 50 хэшей в списке можно обойти?

Xserg 20.05.2008 18:26

Извиняюсь, но до середины июня ничего не ждите.

Для бурта в промышленных масштабах до 4000 хешей (ограничение текстурных констант) будет скорость, в 4 раза медленнее чем для одного.

-=lebed=- 20.05.2008 18:34

Цитата:

Сообщение от Xserg
Извиняюсь, но до середины июня ничего не ждите.
Для бурта в промышленных масштабах до 4000 хешей (ограничение текстурных констант) будет скорость, в 4 раза медленнее чем для одного.

именно это и нужно!

flankerx 21.05.2008 08:45

Цитата:

Сообщение от zl0y
Тут более раньше идея зародилась.

Это не так. Элком выпустил EDPR с поддержкой CUDA в октябре 2007, а фриварную md5crack -- да, м.б. позже, в середине апреля.


Время: 04:45