nouvelle version du programme le plus ancien toujours pris en charge pour le craquage de mots de passe (le projet est en développement depuis 1996). Il s'est écoulé 4,5 ans depuis la sortie de la version précédente 1.8.0-jumbo-1, durant lesquels plus de 6000 modifications (commits git) ont été apportées par plus de 80 développeurs. Grùce à , qui inclut une vérification préalable de chaque modification (pull request) sur de nombreuses plateformes, durant cette période, les développeurs ont recommandé d'utiliser , dont l'état est resté stable malgré les modifications apportées. Le code principal du projet est sous licence GPLv2+, tandis que le code de certains composants est sous licence BSD.
La nouveauté de cette version est l'ajout du support FPGA (en plus du CPU, GPU et Xeon Phi). Pour les cartes , comprenant 4 puces FPGA et initialement utilisées principalement pour le minage de Bitcoin, 7 types de hachages de mots de passe sont désormais pris en charge : bcrypt, le descrypt classique (y compris bigcrypt), sha512crypt, sha256crypt, md5crypt (y compris Apache apr1 et AIX smd5), Drupal7 et phpass (utilisé notamment dans WordPress). Certains d'entre eux sont implémentés sur FPGA pour la premiÚre fois.
Pour bcrypt, les performances atteintes sont d'environ 119k c/s pour 2^5 itĂ©rations («$2b$05») avec une consommation d'Ă©nergie d'environ 27 watts, ce qui dĂ©passe de loin les rĂ©sultats des GPU les plus rĂ©cents en termes de coĂ»t par carte, de prix du matĂ©riel et de watts. Des cartes de ce type sont Ă©galement prises en charge, ce qui a Ă©tĂ© testĂ© jusqu'Ă 16 cartes (64 puces FPGA), contrĂŽlĂ©es par un seul Raspberry Pi 2. La fonctionnalitĂ© habituelle de John the Ripper est prise en charge, y compris tous les modes de craquage de mots de passe et le chargement simultanĂ© d'un grand nombre de hachages. Pour amĂ©liorer les performances, l'utilisation de masques (mode «âmask», y compris en combinaison avec d'autres modes) et la comparaison des hachages calculĂ©s avec ceux chargĂ©s cĂŽtĂ© FPGA ont Ă©tĂ© mises en Ćuvre. En termes de mise en Ćuvre, dans de nombreux designs (par exemple, pour
D'autres changements importants : ), des blocs composĂ©s de cĆurs de processeurs multithread (cĆurs CPU soft) interagissant avec des cĆurs cryptographiques ont Ă©tĂ© utilisĂ©s. Le dĂ©veloppement de cette fonctionnalitĂ© a Ă©tĂ© dirigĂ© par Denis Burykin en coordination avec d'autres dĂ©veloppeurs de jumbo.
D'autres changements importants :
- Prise en charge d'un grand nombre de types de hachage, de chiffrages, etc., y compris à la fois les hachages de mots de passe classiques (comme ceux des nouvelles versions de QNX) et les portefeuilles de cryptomonnaies, les archives chiffrées et les systÚmes de fichiers chiffrés (par exemple, Bitlocker et FreeBSD geli), ainsi que le support de nouvelles variétés de formats précédemment pris en charge (par exemple, ajout du support bcrypt-pbkdf pour OpenBSD softraid) et bien plus encore. Au total, 80 formats ont été ajoutés pour le CPU et 47 pour OpenCL. Le nombre total de formats est désormais de 407 pour le CPU (ou 262 sans les formats « dynamiques », configurables à partir de fichiers de configuration) et 88 pour OpenCL.
- Abandon du support du langage CUDA au profit d'OpenCL, ce qui n'entrave en rien l'utilisation complĂšte des GPU NVIDIA (et mĂȘme amĂ©liore les performances, grĂące Ă la concentration du dĂ©veloppement et des optimisations sur une seule mise en Ćuvre de chaque format pour le GPU au lieu de deux mises en Ćuvre prĂ©cĂ©demment).
- Prise en charge de nouveaux ensembles d'instructions SIMD â AVX2, AVX-512 (y compris pour la deuxiĂšme gĂ©nĂ©ration de Xeon Phi) et MIC (pour la premiĂšre gĂ©nĂ©ration) â ainsi qu'une utilisation plus universelle et complĂšte du SIMD dans les implĂ©mentations de nombreux formats, y compris l'utilisation d'ensembles d'instructions prĂ©cĂ©demment pris en charge jusqu'Ă AVX et XOP sur x86(-64) et
NEON, ASIMD et AltiVec sur ARM, Aarch64 et POWER, respectivement. - De nombreuses optimisations pour CPU et OpenCL, tant pour un traitement plus efficace d'un grand nombre de hachages simultanément (par exemple, vérification de 320 millions de hachages SHA-1 sur GPU), que pour améliorer la vitesse de calcul des hachages. Certaines de ces optimisations sont universelles, d'autres couvrent différents sous-ensembles de formats, et beaucoup sont spécifiques à des formats individuels.
- (Auto-)ajustement du buffering optimal des mots de passe vĂ©rifiĂ©s sur CPU (« âtune=auto âverbosity=5 ») et des dimensions de tĂąche optimales sur OpenCL (activĂ© par dĂ©faut), y compris en tenant compte de la lente montĂ©e en frĂ©quence des GPU de la sĂ©rie NVIDIA GTX 10xx et plus rĂ©cents. Utilisation de hachages rĂ©ellement chargĂ©s et de la longueur rĂ©elle des mots de passe vĂ©rifiĂ©s (lorsqu'elle est connue Ă l'avance) pour cet ajustement automatique.
- Ajout d'un compilateur d'« expressions dynamiques », spĂ©cifiĂ© directement dans la ligne de commande et implĂ©mentant de nouveaux types de hachages hybrides, par exemple « âformat=dynamic=âsha1(md5($p).$s) '», calculĂ©s sur CPU en utilisant le SIMD. En tant que composants de telles expressions, des dizaines de hachages rapides sont pris en charge (des plus courants comme MD5 aux plus modĂ©rĂ©ment exotiques comme Whirlpool), l'union de sous-chaĂźnes, l'encodage et le dĂ©codage, la conversion de la casse des caractĂšres, les rĂ©fĂ©rences au mot de passe, au sel, au nom d'utilisateur et aux constantes de chaĂźne.
- Ălimination des diffĂ©rences indĂ©sirables par rapport Ă hashcat, y compris le support des rĂšgles spĂ©cifiques Ă hashcat (commandes de rĂšgles de wordlist), le passage Ă la numĂ©rotation des appareils OpenCL Ă partir de 1, et l'application par dĂ©faut des mĂȘmes longueurs de mots de passe (gĂ©nĂ©ralement une longueur de 7) lors des tests de performance.
- Nouveaux modes de gĂ©nĂ©ration de mots de passe vĂ©rifiables (modes de cracking), y compris PRINCE de hashcat (forme des « phrases » en combinant plusieurs mots par ordre croissant de longueur totale), subsets (trouve des mots de passe avec un nombre insuffisant de caractĂšres diffĂ©rents, mĂȘme si ces caractĂšres proviennent d'un grand ensemble de possibilitĂ©s) et hybrid external (permet Ă des modes externes, dĂ©crits dans des fichiers de configuration en langage C-like, de gĂ©nĂ©rer plusieurs mots de passe vĂ©rifiables basĂ©s sur chaque « mot » de base en provenance d'un autre mode). Ăgalement, plusieurs nouveaux modes externes prĂ©dĂ©finis.
- FonctionnalitĂ©s supplĂ©mentaires pour l'utilisation simultanĂ©e de plusieurs modes (l'un superposĂ© Ă l'autre â empilement), ainsi que pour l'utilisation de tels ensembles de rĂšgles (empilement de rĂšgles de wordlist).
- Améliorations des modes mask (étirement progressif du masque dans une plage de longueurs spécifiée, application du masque cÎté dispositif OpenCL ou carte FPGA) et single crack (comportement raisonnable sur des dispositifs calculant un grand nombre de hachages en parallÚle, ce qui manquait précédemment de mots de passe vérifiables dans ce mode, ainsi que des limites sur la consommation de mémoire).
- De nombreuses améliorations du support Unicode et d'autres encodages dans divers sous-systÚmes.
- De nombreuses améliorations des programmes *2john (transformant des fichiers de différents formats pour
utilisation avec john), en particulier wpapcap2john (gĂšre le trafic WiFi). - De nombreuses nouvelles options de ligne de commande, de paramĂštres dans john.conf, d'options de script configure et les nouvelles fonctionnalitĂ©s qui y correspondent, dont toutes ne peuvent ĂȘtre mentionnĂ©es ici.
- Amélioration de la qualité du code grùce au support intégré des builds de débogage avec AddressSanitizer (déjà présent auparavant) et UndefinedBehaviorSanitizer (ajouté), avec l'ajout d'un fuzzer intégré pour les formats (dans le cadre de GSoC 2015), et l'utilisation de l'intégration continue (builds pour des dizaines de combinaisons de systÚmes d'exploitation et de compilateurs et tests de leur prise en charge correcte de tous les formats).
Source : opennet.ru
