Bonjour,
Vous vous ennuyez cet été ? Vous avez du temps à perdre ? Vous voulez avoir votre nom (ou pseudo) partout sur le web ? Vous avez une carte graphique qui supporte CUDA ou OpenCL mais vous ne savez pas vous en servir ?
Ces projets sont pour vous !
Ce que je vous propose ici ce n'est pas un, mais deux projets de brutforce sur GPGPU.
Contexte
Pour ceux qui étaient à la ndh et qui ont assisté à la conférence de Lucas Fernandez sur le cracking de mot de passe sur GPGPU, ces projets s'inscrivent directement dans cette continuité. Lucas a notamment présenté un certain nombre d'outil qui exploitent les GPU pour faire du cracking de md5 et qui présente des performances plutôt mitigées par rapport à la puissance de calcul théorique. Seul BarsWF semble s'en sortir pas trop mal selon ses propres benchmarks.
Le soucis principal avec BarsWF est qu'il est close-source et ne fonctionne que sous Windows.
Objectifs
Les objectifs de ces deux projets sont communs, seul la réalisation diffère (fère). Le burforce développé doit :
0) Être Open Source.
1) Présentent des performances supérieurs ou égales à celles de BarsWF et des autres.
2) Être portable Linux / Windows / Mac (à voir selon les système à disposition).
3) Obtenir des performances portables (des perfs qui ne s'effondrent pas si un change d'OS ou de carte graphique).
4) Utiliser les CPUs en plus des GPUs.
5) Être facilement extensible pour gérer plusieurs types hash.
6) (bonus) Passer à l'échelle sur des clusters regroupants un total de 300 GPUs.
Premier projet
Le premier projet, consiste à :
0) Faire de vrais benchmarks pour comparer les différents projets existants (cf la section Quelques liens).
1) Étudier le code de différents brutforce comme cumd5 ou oclcrack pour identifier le ou les goulet(s) d'étranglement.
2) Choisir un brutforcer à modifier (suivant notamment les objectifs 0, 2, 4, 5).
3) Le modifier si nécessaire pour remplir l'intégralité des objectifs.
La modification du brutforce devra entre autre inclure le support de multiples cartes graphiques si ce support n'est pas déjà intégré.
Deuxième projet
La deuxième approche consiste à coder un brutforcer from scratch (ou presque). Le but est de coder un brutforce qui s'appuie sur un runtime (une librairie) capable notamment de placer des tâches (un cas particulier des threads) sur les différents CPU/GPU disponibles et de gérer les transferts de données vers RAM/GPU quand nécessaire.
Cette approche est un peu usine à gaz mais devrait donner de bons résultats avec un code final plus simple... Au prix d'un surcoût bien évidemment.
Pourquoi deux projets distincts ?
Et bien pourquoi pas ?
L'avantage d'utiliser un runtime est indéniablement la facilité avec laquelle les performances deviennent portables ainsi que tout un tas de détails que le programmeur peut ignorer. C'est une approche de légèrement plus haut niveau. Cependant le prix de la prise en main du runtime et le surcoût à l'exécution ne doivent pas être négligés.
C'est pourquoi je propose deux projets qui aboutieront à deux logiciels différents qui pourront par la suite être comparés au niveau des différents objectifs sus-cités.
Profil recherché
Avant tout des gens motivés, qui savent coder en C ou C++ même sans prétendre à la maîtrise.
Si possible des gens avec une carte graphique supportant CUDA ou OpenCL à disposition de manière à pouvoir faire des tests qui ressemblent à quelque chose. Mais ce n'est pas obligatoire puisque nvcc (le compilateur pour CUDA) propose un mode d'émulation.
Si possible avec Linux et Windows de manière à pouvoir faire des comparaisons avec les brutforce n'existant que sous windows comme BarsWF.
Pourquoi je ne le fais pas moi-même ?
C'est vrai que ça irait certainement plus vite à faire moi-même. Cependant, je n'ai pas de temps à consacrer à ces projets, y'en a qui sont pas en vacances. :p
Le but est aussi de vous permettre de faire joujou avec CUDA/OpenCL. Et de faire tourner votre programme sur des machines de guerre.
Pour ce qui est du support de plusieurs cartes graphiques, j'ai de quoi tester à porté de main.
Pour ce qui est de tester l'objectif 6 (le passage à l'échelle sur cluster), je dois pouvoir obtenir les accès sur ce genre de bestiole.
Ces projets seront bien évidemment encadrés par moi-même et seront rémunérés par une notoriété à toute épreuve (ou pas). ou en vidéos pour adulte...
Je suis bien entendu disponible pour toute information complémentaire.
Quelques liens
Les framework
CUDA : framework d'exploitation GPGPU de nvidia http ://www.nvidia.com/cuda
OpenCL : une API standard de programmation d'accélérateurs http://www.khronos.org/opencl/
Quelques projets similaires (liens piqués honteusement dans les slides de Lucas)
BarsWF : le concurrent à éliminer http://3.14.by/en/md5
oclhashcat : un potentiel autre concurrent http://hashcat.net/oclhashcat/
cumd5 et oclcrack : brutforces MD5 écrits respectivement en CUDA et OpenCL http://sghctoma.extra.hu/index.php?p=downloads
cuda Multiforcer : brutforce écrit en cuda (je ne sais pas ce qu'il vaut niveau optimisation) http://www.cryptohaze.com/bruteforcers.php
lavernasbrute : http://code.google.com/p/lavernasbrute/
source: http://forums.thehackademy.net/viewtopic.php?f=30&t=2709
Vous vous ennuyez cet été ? Vous avez du temps à perdre ? Vous voulez avoir votre nom (ou pseudo) partout sur le web ? Vous avez une carte graphique qui supporte CUDA ou OpenCL mais vous ne savez pas vous en servir ?
Ces projets sont pour vous !
Ce que je vous propose ici ce n'est pas un, mais deux projets de brutforce sur GPGPU.
Contexte
Pour ceux qui étaient à la ndh et qui ont assisté à la conférence de Lucas Fernandez sur le cracking de mot de passe sur GPGPU, ces projets s'inscrivent directement dans cette continuité. Lucas a notamment présenté un certain nombre d'outil qui exploitent les GPU pour faire du cracking de md5 et qui présente des performances plutôt mitigées par rapport à la puissance de calcul théorique. Seul BarsWF semble s'en sortir pas trop mal selon ses propres benchmarks.
Le soucis principal avec BarsWF est qu'il est close-source et ne fonctionne que sous Windows.
Objectifs
Les objectifs de ces deux projets sont communs, seul la réalisation diffère (fère). Le burforce développé doit :
0) Être Open Source.
1) Présentent des performances supérieurs ou égales à celles de BarsWF et des autres.
2) Être portable Linux / Windows / Mac (à voir selon les système à disposition).
3) Obtenir des performances portables (des perfs qui ne s'effondrent pas si un change d'OS ou de carte graphique).
4) Utiliser les CPUs en plus des GPUs.
5) Être facilement extensible pour gérer plusieurs types hash.
6) (bonus) Passer à l'échelle sur des clusters regroupants un total de 300 GPUs.
Premier projet
Le premier projet, consiste à :
0) Faire de vrais benchmarks pour comparer les différents projets existants (cf la section Quelques liens).
1) Étudier le code de différents brutforce comme cumd5 ou oclcrack pour identifier le ou les goulet(s) d'étranglement.
2) Choisir un brutforcer à modifier (suivant notamment les objectifs 0, 2, 4, 5).
3) Le modifier si nécessaire pour remplir l'intégralité des objectifs.
La modification du brutforce devra entre autre inclure le support de multiples cartes graphiques si ce support n'est pas déjà intégré.
Deuxième projet
La deuxième approche consiste à coder un brutforcer from scratch (ou presque). Le but est de coder un brutforce qui s'appuie sur un runtime (une librairie) capable notamment de placer des tâches (un cas particulier des threads) sur les différents CPU/GPU disponibles et de gérer les transferts de données vers RAM/GPU quand nécessaire.
Cette approche est un peu usine à gaz mais devrait donner de bons résultats avec un code final plus simple... Au prix d'un surcoût bien évidemment.
Pourquoi deux projets distincts ?
Et bien pourquoi pas ?
L'avantage d'utiliser un runtime est indéniablement la facilité avec laquelle les performances deviennent portables ainsi que tout un tas de détails que le programmeur peut ignorer. C'est une approche de légèrement plus haut niveau. Cependant le prix de la prise en main du runtime et le surcoût à l'exécution ne doivent pas être négligés.
C'est pourquoi je propose deux projets qui aboutieront à deux logiciels différents qui pourront par la suite être comparés au niveau des différents objectifs sus-cités.
Profil recherché
Avant tout des gens motivés, qui savent coder en C ou C++ même sans prétendre à la maîtrise.
Si possible des gens avec une carte graphique supportant CUDA ou OpenCL à disposition de manière à pouvoir faire des tests qui ressemblent à quelque chose. Mais ce n'est pas obligatoire puisque nvcc (le compilateur pour CUDA) propose un mode d'émulation.
Si possible avec Linux et Windows de manière à pouvoir faire des comparaisons avec les brutforce n'existant que sous windows comme BarsWF.
Pourquoi je ne le fais pas moi-même ?
C'est vrai que ça irait certainement plus vite à faire moi-même. Cependant, je n'ai pas de temps à consacrer à ces projets, y'en a qui sont pas en vacances. :p
Le but est aussi de vous permettre de faire joujou avec CUDA/OpenCL. Et de faire tourner votre programme sur des machines de guerre.
Pour ce qui est du support de plusieurs cartes graphiques, j'ai de quoi tester à porté de main.
Pour ce qui est de tester l'objectif 6 (le passage à l'échelle sur cluster), je dois pouvoir obtenir les accès sur ce genre de bestiole.
Ces projets seront bien évidemment encadrés par moi-même et seront rémunérés par une notoriété à toute épreuve (ou pas). ou en vidéos pour adulte...
Je suis bien entendu disponible pour toute information complémentaire.
Quelques liens
Les framework
CUDA : framework d'exploitation GPGPU de nvidia http ://www.nvidia.com/cuda
OpenCL : une API standard de programmation d'accélérateurs http://www.khronos.org/opencl/
Quelques projets similaires (liens piqués honteusement dans les slides de Lucas)
BarsWF : le concurrent à éliminer http://3.14.by/en/md5
oclhashcat : un potentiel autre concurrent http://hashcat.net/oclhashcat/
cumd5 et oclcrack : brutforces MD5 écrits respectivement en CUDA et OpenCL http://sghctoma.extra.hu/index.php?p=downloads
cuda Multiforcer : brutforce écrit en cuda (je ne sais pas ce qu'il vaut niveau optimisation) http://www.cryptohaze.com/bruteforcers.php
lavernasbrute : http://code.google.com/p/lavernasbrute/
source: http://forums.thehackademy.net/viewtopic.php?f=30&t=2709