27.11.2014 Views

HZV Mag #3 - HZV / Hackerzvoice / The Hackademy

HZV Mag #3 - HZV / Hackerzvoice / The Hackademy

HZV Mag #3 - HZV / Hackerzvoice / The Hackademy

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>HZV</strong> <strong>Mag</strong> <strong>#3</strong><br />

Système de crack distribué - par g0uZ<br />

Alors comment on organise tout ça ? Et bien<br />

encore une fois simplement : on va identifier<br />

nos travaux de manière unique avec les préfixes<br />

distribués au clients. Ces préfixes vont<br />

servir d'identifiant pour stocker les résultats.<br />

L'utilisation d'une base de donnée de type<br />

Berkeley (BDB) permettra de stocker l'état («<br />

todo » / « done » / « affected ») d'un grand<br />

nombre de « jobs » (travaux) sur une machine<br />

très modeste. Il sera bien entendu également<br />

possible de mettre en pause ou de reprendre<br />

un traitement. Créer et ouvrir une base de<br />

donnée BDB se fait en deux lignes de code :<br />

On dispose ensuite d'un ensemble de méthodes<br />

sur notre pointeur de base dbp qui<br />

nous permettent simplement d'ajouter : put(),<br />

de récupérer : get() des couples (clé,valeur) .<br />

L'attribution des travaux est horodatées de<br />

manière à pouvoir définir un délai après lequel<br />

le job sera de nouveau disponible pour le<br />

calcul. Pour éviter les problèmes de pertes de<br />

connexion le protocole prend le partie de ne<br />

jamais resté en communication avec le client<br />

inutilement. Dès que les informations sont obtenus<br />

la socket est fermée. Si un problème<br />

survient tout de même pendant la communication<br />

le job devra atteindre son timeout pour<br />

être remis « en circulation ». L'attribution des<br />

travaux et les dialogues client / serveur sont<br />

abordés précisément dans la partie suivante.<br />

Protocole de communication<br />

Pouvoir distribuer les différentes informations<br />

au clients pour le calcul il est nécessaire<br />

d'établir un dialogue standardisé. Le schéma<br />

ci dessous présente un tel dialogue. NB : le<br />

serveur est un simple serveur TCP multithreadé<br />

: un thread est créé pour chaque<br />

connexion.<br />

NB : pour des raisons de clarté seules les<br />

phases de connexion et de libération du canal<br />

du premier échange sont mentionnés.<br />

Module de « hash »<br />

L'utilisation de la librairie OpenSSL permet de<br />

développer rapidement des modules de calcul<br />

d'empreinte pour les algorithmes<br />

suivants (entre autre) :<br />

• LM (Lan Manager), utilisé dans les séries<br />

Windows 9x<br />

• NTLM (NT Lan Manager), utilisé principalement<br />

dans les authentifications réseau<br />

• SHA0 / SHA1, fonctions de hachage<br />

conçues par la NSA<br />

• MD5 (Message Digest 5), algorithme populaire<br />

inventé par Ronald Rivest<br />

:<br />

db_create(&dbp, NULL, 0);<br />

dbp->open(dbp,NULL, db.c_str(), NULL, DB_BTREE, DB_CREATE, 0664);<br />

Ç retour au sommaire<br />

Chaque algorithme possède sa complexité<br />

propre, le nombre de tentatives par seconde va<br />

donc dépendre directement de ce facteur.<br />

Le but de cet article n'étant pas d'étudier les<br />

différents algorithmes et mécanismes cryptographique,<br />

il semble inutile de s'y attarder.<br />

Le code de chaque module, relativement simple,<br />

47

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!