I. Règles

Les participants ont eu jusqu'au 01/03/2014 pour proposer leur générateur de mots de passe sur ce sujet quelle que soit leur nationalité.

Pour être valide, le générateur devait proposer les fonctionnalités suivantes :

  • générer un mot de passe avec des options de génération (par exemple : avec ou sans chiffres, avec ou sans caractères spéciaux, entre X et Y caractères …) ;
  • tester la résistance d'un mot de passe.

I-A. Soumissions

Pour qu'une soumission soit valide, elle devait comprendre :

  • un lien URL pour tester le générateur s'il possède une interface Web ;
  • le cas échéant, une version compilée qui pourra être testée par les lecteurs ;
  • les sources du générateur ;
  • ainsi qu'une description rapide du générateur.



Pour les langages compilés, à défaut de pouvoir fournir une version pour chaque environnement, les sources devaient être facilement compilables (ex : CMake, Makefile…).

I-B. Votes

Un sujet par générateur a été créé le 02/03/2014 par nos soins. Les lecteurs ont eu ensuite jusqu'au 01/04/2014 pour donner une note sur 20 aux générateurs suivant le barème ci-dessous :

  • fonctionnalités : 4 points ;
  • qualité du code : 4 points ;
  • commentaire et documentation : 4 points ;
  • sécurité de l'application : 4 points ;
  • design et inventivité de l'interface : 4 points.



Le 02/04/2014, deux classements ont été réalisés :

  • un classement regroupant tous les logiciels ayant une interface Web ;
  • un classement regroupant tous les logiciels n'ayant pas d'interface Web.



Le meilleur de chaque classement s'est vu offrir l'un des trois livres par les éditions ENI.

I-C. Participation hébergée sur Developpez.com

Le logiciel ayant eu la note la plus élevée parmi les logiciels du classement « interface Web » regroupant les conditions listées ci-dessous se retrouvera hébergé dans la rubrique Sécurité et son développeur se verra remettre le livre Ethical Hacking publié par les éditions ENI.

Le logiciel doit :

  • garantir une bonne sécurité selon l'appréciation des juges ;
  • être facilement intégrable (en PHP/JavaScript/HTML/CSS standard avec un minimum de bibliothèques tierces pour rester indépendant du système).



Juges :

I-D. Partenaire livre


Notre partenaire livre, les éditions ENI, offrira aux trois meilleures participations un livre intitulé Ethical Hacking, dont vous pouvez consulter les retours par nos membres.

II. Classement Web

Rang Participant Fonctionnalités Qualité du code Commentaires et documentation Sécurité de l'application Design et inventivité de l'interface Moyenne Validé par les juges
1 Spartacusply 3 3,67 3,9 2,63 3,57 16,63 NON
2 Adrael66 3,52 3,67 2,75 3,4 3,1 16,1 OUI
3 Iocol51 3,17 2,77 3,5 3,07 2,42 14,92 OUI
4 Xurei 3 2,73 1,93 3,03 3,5 14,2 OUI
5 LaurentC33 2,5 3 2,27 2,43 3,17 13,37 NON
6 ThomZz09 2,37 2,48 2,33 2,27 2,13 11,68 NON
7 Angelsafrania 2,55 1,83 1,25 3,07 2,08 10,78 OUI
8 SpaceFrog 1,83 2,43 0,6 2,9 1,82 9,67 OUI
9 NoFeaR1991 2 1,97 1,17 2,1 2,33 9,57 NON

III. Participations Web

III-A. Adrael66

III-A-1. Présentation

Protect It! est un générateur intuitif de mots de passe sécurisés.

Accompagné de fonctionnalités diverses et variées, elles font de cet outil un must have pour tester vos mots de passe et les améliorer.

Vous y trouverez :

  • un étalon de la force de votre mot de passe reconnu sur la majorité des sites Internet ;
  • un étalon de la complexité du mot de passe ;
  • un générateur d'aide à la mémorisation ;
  • une aide complète et détaillée ;

III-A-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

III-A-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 2,8 4 3,75 3,52
Qualité du code 3,5 3 2,5 (+2 W3C) 3,67
Commentaire et documentation 2,5 3 2,75 2,75
Sécurité de l'application 3,7 2,5 4 3,4
Design et inventivité de l'interface 3,3 2 4 3,1
Note 15.8 14.5 18 16.1

III-A-4. Avis des juges

Très bon travail de qualité avec un visuel assez joli.

Une documentation du code justifiant l'utilité de chaque bibliothèque aurait été appréciée et quitte à utiliser jQuery, il aurait fallu l'utiliser partout.

Le « spelling » est un bon moyen mnémotechnique, une vérification par dictionnaire aurait aussi été appréciée.

III-B. Angelsafrania

III-B-1. Présentation

C'est un générateur testeur de mots de passe en HTML5, CSS3 et JS, il faut donc un navigateur récent.
C'est en une page, donc tout est exécuté côté client, pas de sauvegarde du mot de passe généré. Récupération des mots de passe possible seulement si le poste de la personne est mis à mal.

Pour le système de calcul de la force du mot de mot de passe j'ai pris deux systèmes.
Le premier est décrit sur le site gouvernemental français : http://www.securite-informatique.gouv.fr/gp_article728.html
Pour le second, j'ai tenté de faire un système à points (en pourcentage) avec bonus malus (qu'il faut améliorer normalement).

III-B-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

III-B-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 2,4 3 2,25 2,55
Qualité du code 1,5 1,5 2 (+0,5 W3C) 1,83
Commentaire et documentation 1 1 1,75 1,25
Sécurité de l'application 3,7 2,5 3 3,07
Design et inventivité de l'interface 2,5 1 2,75 2,08
Note 11,1 9 12,25 10,78

III-B-4. Avis des juges

Code trop peu commenté et interface peu engageante. En revanche la présence de deux tests est appréciée, surtout pour la méthode pondérée qui semble bien faite.

Une vérification par dictionnaire aurait été appréciée.

III-C. iocol51

III-C-1. Présentation

Bonjour,
Merci pour l'idée c'est un concours sympa, n'ayant jamais été moi-même satisfait de la grosse majorité des générateurs/évaluateurs en ligne.

Du coup, j'ai tenté de faire un petit générateur et évaluateur en JavaScript. Comme je le fais sur mon temps libre, et que j'en ai peu, j'ai dû revoir mes ambitions à la baisse : pas d'internationalisation, pas de recherche ni de génération depuis un dictionnaire, pas de stratégie « customizable ». Je pense que je n'aurai pas l'occasion de l'améliorer beaucoup d'ici au 01/03 donc je le poste maintenant.

Utilisable en ligne ici : http://iolco51.free.fr/
Sources sur github : https://github.com/lcoulet/securePassword.Js

  • En langue anglaise seulement pour le moment… Désolé ! (Facile à changer mais pas encore internationalisé).
  • Le moteur de génération a quelques options : la taille, les sets de caractères, et optionnellement la génération de patterns plus facilement mémorisables.
  • Le moteur d'évaluation est subjectivement basé sur mon opinion de ce que doit être un bon mot de passe, influencé par les ressources sur le sujet sur le net. Sur bien des points je le trouve meilleur que la plupart de ceux que l'on trouve sur le net.
  • Licence permissive Apache 2.0
  • Le choix de JavaScript : pas de besoin de processing sur le serveur, pas ou peu de dépendances (jQuery et gauge.coffee pour l'UI seulement, il y aurait i18n si j'avais réalisé l'internationalisation).
  • Il n'y a aucune dépendance envers l'UI, le moteur de génération ou d'évaluation peuvent être utilisés séparément.
  • Je ne suis pas codeur JavaScript, merci pour votre indulgence si le code ne respecte pas les standards/best practices… C'était aussi l'occasion pour moi de pratiquer un peu ce langage.




Ce que l'outil ne dit pas, c'est qu'un mot de passe dans la plupart des cas doit être mémorisable, et suffisamment long. Selon moi, mieux vaut une grande chaîne de plusieurs mots qu'un mot de passe complètement cryptique et court, ce que j'ai essayé de représenter dans la partie notation qui me convient pas mal.

J'ai eu un peu de temps et donc ajouté le support de dictionnaires : Anglais et Français … pour la vérification et la génération plus mémorisable. Mais pas encore de texte en français - mais j'y travaille.

Merci encore pour le petit défi.

III-C-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

III-C-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 3,5 3,5 2,5 3,17
Qualité du code 2,3 2,5 3,5 2,77
Commentaire et documentation 3,5 3 4 3,5
Sécurité de l'application 3,7 2,5 3 3,07
Design et inventivité de l'interface 3 2 2,25 2,42
Note 16 13,5 15,25 14,92

III-C-4. Avis des juges

Un effort aurait pu être fait sur l'ergonomie et le design, la présence d'un test par dictionnaire est très appréciée.

Le code aurait pu être découpé en classes pour profiter des « closures ».

III-D. LaurentC33

III-D-1. Présentation

Bonsoir à tous !

Bon j'arrête là, j'ai passé ma journée dessus Image non disponible
Ça marche, mais j'aurai aimé peaufiner deux trois trucs. La prochaine fois, je regarderai plus souvent les concours, car c'est sympa, surtout quand il pleut !

Passons au projet :

Voici les sources

Le lien

Technique :

Techniquement, vu le manque de temps, je me suis appuyé sur Bootstrap et jQuery.
La partie génération est côté serveur en PHP, appelée en Ajax sur la page.

J'ai fait un fichier qui génère le code, un autre qui le teste, un autre qui contient les définitions de caractères.

Concept :
J'ai essayé de faire quelque chose de simple. J'ai divisé les caractères par type, et chaque fois qu'un caractère est généré, le prochain doit être d'un type différent. Bien sûr, on évite les répétitions si possible (sur une demande de 50 caractères, c'est dur).
J'ai testé une petite fonctionnalité, qui de mon avis peut être intéressante à défaut d'être vraiment très utile : les masques.
Si l'utilisateur veut à tout prix que certains caractères soient contenus dans son mot de passe, il saisit ses caractères, par exemple « LC », ses initiales.
Il veut ensuite générer 4 caractères après ces deux lettres. Il tape donc « LC**** ».
L'algo sait donc que les deux premiers caractères sont du type lettre, et il va donc générer pour remplacer les astérisques deux caractères entiers, et deux symboles.

Je vous souhaite une très bonne soirée à tous,

Amicalement.

III-D-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

III-D-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 2,5 2,5 2,5 2,5
Qualité du code 3 3 3 3
Commentaire et documentation 1,8 3 2 2,27
Sécurité de l'application 2,8 3 1,5 2,43
Design et inventivité de l'interface 3,5 2 4 3,17
Note 13,6 13,5 13 13,37

III-D-4. Avis des juges

Génère et teste côté serveur. Cela pose des problèmes de sécurité et de confiance envers le fournisseur du service.

Dommage qu'on ne puisse tester que les mots de passe générés et qu'il n'y ait pas de vérification par dictionnaire.

Une justification des choix aurait été appréciée (pourquoi côté serveur ? Pourquoi Bootstrap ?).

III-E. NoFeaR1991

III-E-1. Présentation

Bonjour tout le monde, alors j'ai créé ce petit générateur de mots de passe avec du HTML, du CSS, du PHP et du JavaScript.
Il permet d'obtenir un mot de passe totalement aléatoire pour ensuite le tester.

Merci à Developpez.com d'organiser ce petit concours.

MON GÉNÉRATEUR DE MOT DE PASSE

III-E-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

III-E-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 2 2 2 2
Qualité du code 1,9 1 2 (+ 1 W3C) 1,97
Commentaire et documentation 1,5 1 1 1,17
Sécurité de l'application 2,8 2 1,5 2,1
Design et inventivité de l'interface 2,5 1 3,5 2,33
Note 10,7 7 11 9,57

III-E-4. Avis des juges

La génération côté serveur pose des problèmes de sécurité et de confiance envers le fournisseur du service. Un effet aurait pu être fait sur la recherche de fonctionnalités et sur les commentaires.

Une vérification par dictionnaire aurait été appréciée.

III-F. SpaceFrog

III-F-1. Présentation

Voici un petit script que j'ai réalisé pour générer un mot de passe.

On peut générer des mots de passe de différents niveaux de complexité :

niveau 1 : juste des lettres minuscules ;
niveau 2 : niveau 1 + lettres(s) majuscule(s) ;
niveau 3 : niveau 2 et chiffre(s) ;
niveau 4 : niveau 3 + caractère(s) spécial(aux).

III-F-2. Liens

Sources : coude source de la page

Tester : lien

Sujet de vote : lien

III-F-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 2,5 2 1 1,83
Qualité du code 1,8 2 1,5 (+ 2 W3C) 2,43
Commentaire et documentation 0,3 0 1,5 0,6
Sécurité de l'application 3,7 2 3 2,9
Design et inventivité de l'interface 2,2 1 2,25 1,82
Note 10,5 7 11,25 9,67

III-F-4. Avis des juges

Trop minimaliste et pas de vérification à l'aide d'un dictionnaire. Un effort d'imagination aurait pu être fait. Le code et sa documentation laisse aussi à désirer.

III-G. Spartacusply

III-G-1. Présentation

GenerationPassword

Application web de génération et de test de sécurité de mot de passe, développée à l'occasion du défi sur Developpez.com
Avant tout, une démonstration du fonctionnement de l'application est disponible à cette adresse : http://generationpassword.url.ph


Informations Générales

Le site a été développé avec le framework CakePhP.
On peut dénombrer deux classes principales dans ce projet se trouvant dans le dossier app/Model :

  • PasswordEntity : classe du mot de passe. Contient deux principales méthodes qui sont :
    • generatePassword : méthode de génération du mot de passe ;
    • testPassword : méthode qui va tester le mot de passe.
  • ManipulableString : classe qui propose des méthodes de manipulation sur une chaîne de caractères, dans l'objectif de proposer un mot de passe fort.


Les autres classes se trouvant dans app/Model sont :

  • Toolbox : classe servant de « boîte à outils » contenant des méthodes statiques plutôt pratiques ;
  • Word : modèle permettant d'accéder à la table words, qui contient l'ensemble des mots des dictionnaires français et anglais ;
  • CommonPassword : modèle permettant d'accéder à la table common_passwords contenant les 10 000 pires mots de passe existants (soit les 10 000 mots de passe les plus utilisés). Obtenu sur le site xato.net


Une API complète de l'application est disponible à cette adresse : http://generationpassword.url.ph/doc


Comment est généré le mot de passe ?

Le mot de passe est généré à partir d'une phrase choisie par l'utilisateur. C'est phrase sert de base à la génération du mot de passe.


Qu'en fait l'algorithme ?

  • Premièrement, il met aléatoirement en majuscule les premières lettres de chaque mot qui compose la phrase.
  • Si l'utilisateur a indiqué qu'on devait transformer cette phrase, on remplace aléatoirement des lettres par leur équivalent (ex : a => @, u => µ …) et on met aléatoirement certaines lettres en majuscules.
  • Ensuite, il supprime les espaces en les remplaçant par des chiffres (qui suivent un ordre logique) et un caractère spécial (ordre non défini).
  • Si le mot de passe est trop petit (c-à-d de longueur inférieure à la longueur minimum requise) des caractères aléatoires sont ajoutés en début et/ou en fin de chaîne jusqu'à ce que celui-ci atteigne la taille requise.
  • Enfin, on s'assure que le caractère comporte au minimum un caractère minuscule, un caractère majuscule, un chiffre et un caractère spécial. Si ce n'est pas le cas, pour chaque type manquant, on en ajoute aléatoirement un au début ou à la fin du mot de passe déjà créé.


À l'issue de la génération du mot de passe, celui-ci est directement testé.


Comment est testé le niveau de sécurité d'un mot de passe ?

La sécurité d'un mot de passe dépend avant tout et surtout de sa longueur. Ainsi un mot de passe de 8 caractères, peu importe sa composition, sera toujours considéré comme très faible, alors qu'a contrario un mot de passe de plus de 16 caractères sera considéré comme très bon. Un mot de passe est également automatiquement considéré comme très faible si c'est un mot du dictionnaire (français ou anglais), ou s'il fait partie des 10 000 mots de passe les plus utilisés au monde.
Le niveau de sécurité dépend du temps qu'il faudrait à un ordinateur de bureau actuel (4 cœurs, effectuant 200 000 000 000 de tests à la seconde) pour casser le mot de passe par force brute.
Des conseils sont également affichés à l'utilisateur pour améliorer la qualité de son mot de passe (ajouter un chiffre, allonger sa taille…)

III-G-2. Liens

Sources : lien (+documentation)

Tester : lien

Sujet de vote : lien

III-G-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 3,1 3,9 2 3
Qualité du code 3 3 3 (+ 2 W3C) 3,67
Commentaire et documentation 3,7 4 4 3,9
Sécurité de l'application 2,4 4 1,5 2,63
Design et inventivité de l'interface 3,2 4 3,5 3,57
Note 15,4 18,9 16 16,63

III-G-4. Avis des juges

La génération côté serveur pose des problèmes de sécurité et de confiance envers le fournisseur du service.

Le test par dictionnaire est très apprécié tout comme l'organisation MVC du projet.

III-H. thomZz09

III-H-1. Présentation

Infos / Guide de l'utilisateur (^^) :

Projet réalisé en PHP.
Interface : JavaScript (jQuery) et CSS3.

Les validations côté client sont en JavaScript.


Utilisation :


Section options :
(cliquer sur le petit onglet gris pour cacher/décacher)

Occurrences minimales :

Spécifier des occurrences minimales pour déterminer combien le mot de passe généré contiendra (au minimum) de chaque type de caractère.
Laisser le champ vide ou à 0 simplement si vous ne désirez rien spécifier.

Ne pas utiliser de … :

Assez explicite, signifie de ne pas prendre les types de caractères spécifiés par l'option.


Résultats : apparaît lorsqu'un mot de passe est généré, juste en dessous du champ « mot de passe généré ».

On peut voir le nombre d'occurrences de chaque symbole utilisé dans le mot de passe généré.

J'affiche la complexité (complexify.js) pour donner une idée à l'utilisateur du « niveau de sécurité » du mot de passe généré.


Validations :

Le maximum est de 128 caractères, et le minimum est de 8 pour le paramètre « longueur du mot de passe ».
Si une valeur supérieure, non numérique ou négative est entrée, le champ prendra soit la valeur minimale, soit la valeur maximale (128 ou 8, selon ce qui est entré).

Le total des « occurrences minimales » ne peut dépasser la longueur du mot de passe choisi.

Les champs « occurrences minimales » symboles et majuscules seront disabled selon si on coche l'option « Ne pas utiliser » correspondante.
Ils seront aussi vidés dans le cas où il y aurait une valeur dedans avant de cocher.

III-H-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

III-H-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 2,1 3 2 2,37
Qualité du code 3 2,5 2,25 2,48
Commentaire et documentation 2 2 3 2,33
Sécurité de l'application 2,8 2,5 1,5 2,27
Design et inventivité de l'interface 2,4 2 2 2,13
Note 12,3 12 10,75 11,68

III-H-4. Avis des juges

La génération côté serveur pose des problèmes de sécurité et de confiance envers le fournisseur du service.

Le site a été hors ligne pendant quelques jours, c'est dommage.

Peu de commentaires mais l'effort GitHub est appréciable. Dommage de ne pouvoir tester un mot de passe saisi manuellement.

III-I. xurei

III-I-1. Présentation

Voici ma (tardive) contribution : http://www.xurei-design.be/upg/.

Codé en HTML/CSS/JS. Le fichier index est un PHP mais fonctionne très bien s'il est renommé en HTML. L'ensemble est utilisable sur n'importe quel serveur Apache sans aucune modification.

Code source : https://github.com/xurei/upg

Le but de ce projet est de proposer une alternative au mot de passe « traditionnel », en le rendant plus facile à retenir tout en restant robuste. Il y a une perte d'entropie si l'on rejette des mots de passe trop « compliqués » à mémoriser, ce que j'essaye de prendre en compte lors du test de robustesse.

Pour l'instant, il y a deux modes : classique et prononçable. Le mode prononçable tente de créer des mots de passe plus faciles à prononcer et donc à retenir.

Je travaille sur un troisième mode, inspiré du strip de xkcd Password Strength. Il sera disponible pour le 1er mars.

Niveau sécurité, la robustesse du mot de passe est testée en brute force direct, en crack MD5 et SHA-1. D'autres tests peuvent être ajoutés facilement et le seront sans doute.

III-I-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

III-I-3. Notes

  Lecteur 1 Juge 1 Juge 2 Moyenne
Fonctionnalités 3 3 3 3
Qualité du code 3,2 2,5 2,5 2,73
Commentaire et documentation 1,8 2 2 1,93
Sécurité de l'application 3,1 3 3 3,03
Design et inventivité de l'interface 3,5 3 4 3,5
Note 14,6 13,5 14,5 14,2

III-I-4. Avis des juges

Peu de documentation mais l'effort GitHub est louable. Très bonne idée de proposer trois types de mots de passe. Les hashs côté client sont aussi un plus.

Dommage qu'il n'y ait pas de vérification par dictionnaire.

IV. Classement Applicatif

Rang Participant Fonctionnalités Qualité du code Commentaires et documentation Sécurité de l'application Design et inventivité de l'interface Moyenne
1 Lemoussel 3,25 2,75 3 3,05 3,25 15,3
2 -Nikopol- 3 2,7 2,2 3,04 2,8 13,74
3 Tlams 2,6 1,5 2 2,5 3,3 11,9
4 Itchy 2,35 1,6 0,9 3,1 1,9 9,85

V. Participations applicatives

V-A. Itchy

V-A-1. Présentation

Bonjour,

Voilà ma contribution. Je suis étudiant en BTS SIO SLAM 1ère année et c'est ma première application en Java.

Code source + jar dans le .rar ici :
http://gatienboquet.olympe.in/developpez/MyPassword.rar


C'est relativement simple, trois options, on coche si on veut inclure des nombres et/ou caractères spéciaux. On peut aussi changer la longueur du mot de passe généré.


Si vous êtes développeur Java, je vous déconseille de regarder le code source Image non disponible

V-A-2. Liens

Sources : lien

Sujet de vote : lien

V-A-3. Notes

  Lecteur 1 Juge 2 Moyenne
Fonctionnalités 1,7 3 2,35
Qualité du code 2,2 1 1,6
Commentaire et documentation 1,8 0 0,9
Sécurité de l'application 3,2 3 3,1
Design et inventivité de l'interface 1,8 2 1,9
Note 10,7 9 9,85

V-A-4. Avis de la rédaction

Un effort aurait pu être fait sur le code et la documentation.

L'utilisation d'un langage portable est apprécié. L'interface reste simple et intuitive, toutefois nous déplorons le manque de fonctionnalités.

Le test du mot de passe ne semble pas être très fiable non plus, il manque aussi plus de précision sur la manière dont il est calculé.

V-B. lemoussel

V-B-1. Présentation

Voici ma participation avec un outil développé en C# : Password Strength Meter.
Cet outil permet de générer un mot de passe personnalisable en choisissant d'utiliser des chiffres, des lettres majuscules ou minuscules et même des symboles. Il permet aussi de mesurer la robustesse du mot de passe généré aléatoirement ou saisi par l'utilisateur.

Suivant les options sélectionnées la longueur du mot de passe varie de la valeur minimum de 8 caractères à la valeur maximum de 20 caractères.

Voici un exemple de paramétrage pour calculer un mot de passe avec 3 lettres majuscules, 4 lettres minuscules, 2 nombres et 3 symboles.
Soit un mot de passe d'une longueur de 12 caractères. Le résultat obtenu étant le mot de passe : $\mNn]3MsB2%

Image non disponible


Concernant le calcul du score de robustesse, je me suis quelque peu inspiré du principe exposé sur le site Yet Another Password Meter. Cependant j'ai opté pour des règles de calcul de détermination de la robustesse du mot de passe différentes. Ce calcul de robustesse n'est pas parfait, ni infaillible. Il a cependant l'avantage de montrer visuellement comment améliorer le mot de passe afin qu'il soit le plus difficilement possible « crackable ».

Les règles sont soit du type « Bonus », c'est-à-dire qu'elle augmente la valeur de la robustesse, soit du type « Malus » diminuant la valeur de la robustesse.
La valeur maximum de cette robustesse étant 100 et le minimum étant 0.
Deux paramètres peuvent entrer en compte dans le calcul d'une règle. Le paramètre len correspondant à la longueur du mot de passe et le paramètre n correspondant au nombre de caractères trouvés correspondant à la règle.

Voici en exemple le résultat du calcul de robustesse sur le mot de passe : $\mNn]3MsB2%

Image non disponible


Pour réaliser cet outil j'ai développé les deux classes suivantes :

  • PasswordGenerator : génération aléatoire d'un mot de passe ;
  • PasswordStrengthMeter : calcul de la robustesse d'un mot de passe.




La classe PasswordGenerator est assez simple. Elle expose juste la méthode Generate(…) permettant de créer un nouveau mot de passe.

La classe PasswordStrengthMeter expose les propriétés suivantes :

  • Password : spécifie le mot de passe pour lequel le calcul de robustesse sera effectué ;
  • Score : valeur de la robustesse entre 0 et 100 ;
  • Bonus : valeur du bonus de la robustesse ;
  • Malus : valeur du malus de la robustesse ;
  • Text : description au format texte de la robustesse.




J'ai posté les sources des deux classes.
- C# : Génération aléatoire d'un mot de passe
- C# : Calcul de la robustesse d'un mot de passe


Pour les personnes qui seraient intéressées par cet outil, je prépare une installation Windows que je mettrais à disposition en téléchargement sur mon site.

V-B-2. Liens

Sources : lien1 lien2

Sujet de vote : lien

V-B-3. Notes

  Lecteur 1 Lecteur 2 Lecteur 3 Juge 2 Moyenne
Fonctionnalités 2 4 4 3 3,25
Qualité du code 2 4 3 2 2,75
Commentaire et documentation 2 3 4 3 3
Sécurité de l'application 3,2 4 2 3 3,05
Design et inventivité de l'interface 1 4 4 4 3,25
Note 10,2 19 17 15 15,3

V-B-4. Avis de la rédaction

Très bonne participation, attention à ne pas faire de fonctions trop longues.

Il est toutefois dommage d'avoir séparé le code de la génération du mot de passe et le test du mot de passe dans deux « projets » distincts.

La description est aussi très complète.

V-C. -Nikopol-

V-C-1. Présentation

Idée de concours sympa, je porte ma contribution en proposant un générateur codé dans un langage moins usité pour ce genre de choses : (La)TeX. L'avantage est qu'on sera directement dans un environnement idéal pour faire un publipostage avec une qualité typographique irréprochable.
Pour la compilation, si vous n'avez pas de distribution LaTeX, vous pouvez utiliser un éditeur en ligne comme https://www.writelatex.com et copier le code ci-dessous.
L'extension lcg sert uniquement de générateur de nombres aléatoires.

Utilisation :
Il n'y a pas de limite (ni minimum ni maximum) pour le nombre de caractères du mot de passe (en fait, si, la limite est de 2^31-1, ça devrait suffire Image non disponible).
Un paramètre optionnel (entre [ et ]), réglé par défaut à 0, permet ou non d'utiliser des caractères spéciaux, ainsi que de régler leur « taux » (aux variations de fréquences du générateur de nombre aléatoire près).
Le deuxième paramètre permet de régler le « taux » de lettre du mot de passe.
Le dernier paramètre permet de choisir la longueur du mot de passe.
On peut donc générer des mots de passe avec ou sans caractères spéciaux, avec ou sans chiffres, avec ou sans lettres.
le testeur de mot de passe est basé sur des bonus (longueurs, caractères spéciaux, chiffres…) et des pénalités (chiffres seuls, majuscules seules…).
Merci.

V-C-2. Liens

Sources : lien

Tester : lien1 (read-only) lien2 (pour regénérer des mots de passe, ajoutez un espace) exemple

Sujet de vote : lien

V-C-3. Notes

  Lecteur 1 Lecteur 2 Lecteur 3 Lecteur 4 Juge 2 Moyenne
Fonctionnalités 2 4 3 3 3 3
Qualité du code 2,5 4 3 2 2 2,7
Commentaire et documentation 2 2 3 2 2 2,2
Sécurité de l'application 3,2 4 3 2 3 3,04
Design et inventivité de l'interface 2 2 4 2 4 2,8
Note 11,7 16 16 11 14 13,74

V-C-4. Avis de la rédaction

L'utilisation de LaTeX nous a tous surpris. Dommage que la lisibilité du code et sa documentation fasse défaut.

Il aurait aussi été souhaitable d'avoir plus d'informations quant à la robustesse du mot de passe (pourquoi est-il peu robuste ? Comme améliorer mon mot de passe ?).

La présence d'un visuel pour indiquer la force du mot de passe est un plus.

V-D. Tlams

V-D-1. Présentation

Il s'agit d'un générateur de mots de passe basé sur des listes de mots.
Ce fonctionnement permet d'obtenir des mots de passe résistants et faciles à retenir.
J'ai visé la simplicité, autant sur le niveau fonctionnel que sur l'interface.

Il est programmé en AutoHotKey (AHK), langage presque inconnu en France. (Dérivé de l'AutoIT).
Il permet de réaliser des programmes et scripts de façon rapide.

Au niveau du fonctionnement du programme :
l'utilisateur choisit ses préférences, puis le programme teste toutes les possibilités jusqu'à trouver un enchaînement valable correspondant à la taille du mot de passe désiré. Sorte de brute force qui teste environ 1600 possibilités par seconde*.


Caractéristiques :

  • programmé en AHK ;
  • compatible systèmes Windows (Win9x/NT/XP/VISTA/W7/W8) ;
  • tout-en-un, un seul fichier (.exe), pas d'installation ;
  • langue : Français

    Fonctions :
  • choix du niveau de complexité ;
  • choix du nombre de caractères, avec marge ;
  • filtre de suppressions (chiffres, caractères spéciaux, majuscules) ;
  • calcule deux possibilités ;
  • donne un indice de résistance.

    Source : http://pastebin.com/zrs2YkYH
    Téléchargement : http://www.tlams.fr/ressources/Gen_pw.exe
Image non disponible



*Bench réalisé sur mon poste (I7/8 Go RAM)

V-D-2. Liens

Sources : lien

Tester : lien

Sujet de vote : lien

V-D-3. Notes

  Lecteur 1 Juge 2 Moyenne
Fonctionnalités 2,2 3 2,6
Qualité du code 2 1 1,5
Commentaire et documentation 2 2 2
Sécurité de l'application 2 3 2,5
Design et inventivité de l'interface 2,6 4 3,3
Note 10,8 13 11,9

V-D-4. Avis de la rédaction

La qualité du code et la documentation laisse à désirer. Dommage d'avoir choisi une technologie non-portable. L'interface reste assez intuitive et les mots de passe générés restent faciles à retenir.

Nous n'avons aussi que peu d'informations sur la manière dont est calculée la note.

VI. Participations invalides

Auteur Tester Sources Description Test mot de passe
1franck lien (page HTML/JS) Manquant Manquant
aloisioa lien Manquant Manquant Manquant
Ibuss Manquant lien lien Présent
Glieunou lien Manquant Manquant Présent
onequestionthank Manquant lien lien ?
Wiwaxia Turbo Pascal lien lien ?
aumeunier Java lien1 lien2 lien ?

VII. Conclusion

Un grand merci à tous les participants, aux personnes ayant voté ainsi qu'aux juges.

Spartacusply, Adrael66 et lemoussel recevront un livre intitulé Ethical Hacking de la part de notre partenaire livre, les éditions ENI.

Tous les participants ayant eu une note au-dessus de 10 recevront un trophée.

-Nikopol- recevra un trophée « Générateur de mots de passe insolite ».

Adrael66, iocol51 et xurei recevront un trophée « Générateur de mots de passe hébergé sur DVP ».

VIII. Remerciements

Nous tenons à remercier tous les participants ainsi que LittleWhite pour sa relecture technique et f-leb pour sa relecture orthographique.