понедельник, 9 марта 2009 г.

MPI Md5 Bruteforce



Долго думая как бы еще опробовать кластер я решил написать md5 переборщик паролей для компьютеров с кластерной архитектурой MPI. Чтобы не парится с криптографией, я взял классический алгоритм вычисления md5 хеша (by Benjamin Grüdelbach 2005) и начал писать брутфорс: при переборе распараллелить программу, тем более что алгоритм хеширования у нас хороший(т.е. быстрый), достаточно просто. в нашем случае данные для перебора(а точнее словарь) загружаются в память всех узлов кластера и далее программа будет работать по циклу:

for(int i=myid+1;i меньше listp.size()&&!done;i+=n){
string hash = md5.getHashFromString(listp[i]);
if(hash==x_hash){
done=1;
Print("password is [" + listp[i]+ "]");
MPI_Bcast(&done,1,MPI_INT, myid,MPI_COMM_WORLD);
}
}
смысл в том что весь словарь разбивается на n участков, которые соответсвуют количеству узлов в кластере и далее идет паралельный цикл, вместо обычного i++ мы просто прибавляем количество узлов в кластере чтобы каждый узел обсчитал только отведенне ему данные. так же если вдруг перебор был успешным нужно разослоать всем узлам единицу в переменную done чтобы они прекратили считать хеши. вобщем то и все. вот так можно ускорить перебор паролей. Было бы интересно ускорить генерацию отдельного хеша, но об этом я еще буду думать. скоро программа будет доступна для скачивания тут.
а пока на sourceforge утверждают проект можно скачать вот тут
P.S все еще рассматривается идея о переводе на freebsd

Комментариев нет:

Отправить комментарий