IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Défi : Notez le générateur de mots de passe de -Nikopol-


Sujet :

Sécurité

  1. #1
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 209
    Points
    23 209
    Par défaut Défi : Notez le générateur de mots de passe de -Nikopol-
    Bonjour,

    La rubrique sécurité vous propose de noter le générateur de mot de passe de-Nikopol- dans le cadre de ce défi.

    N'oubliez pas que 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.

    Participation :

    • Auteur : -Nikopol-
    • Type de projet : Applicatif
    • Tester : lien1 (read-only) lien2 (pour regénérer des mots de passes, ajoutez un espace) exemple
    • Sources : voir ci-dessous
    • Description :

    Citation Envoyé par -Nikopol-
    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 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 ).
    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 speciaux, chiffres,...) et des pénalités (chiffres seuls, maj seules,..)
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    \documentclass[10pt,a4paper]{article}
    \usepackage[utf8]{inputenc}
    \usepackage[T1]{fontenc}
    \usepackage{lmodern}
    \usepackage{xcolor}
    \usepackage{fp}
    \usepackage[counter=mdp]{lcg}
    
    \makeatletter
    \newcount\nbchar
    \newcount\charspec
    \newcount\chiffre
    \newcount\Lettre
    \newcount\lettre
    \newcount\nbdesecurite
    \parindent=0pt
    %%%%%%%%%%%%%%%%%%%%%%%générateur de mot de passe%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \newcommand\genmdp@i{%commande reccursive
            \chgrand[first=1,last=100]\rand%
            \unless\ifnum\arabic{mdp}>\propchar%utilisation des caractères spéciaux si argument optionnel
                    \let\next=\relax%
                    \advance\charspec by 1 %
                    \chgrand[last=14]\rand%
                    \ifnum\arabic{mdp}=1\edef\m@tdepasse{\m@tdepasse ]}\fi%ajout au mdp
                    \ifnum\arabic{mdp}=2\edef\m@tdepasse{\m@tdepasse ù}\fi%
                    \ifnum\arabic{mdp}=3\edef\m@tdepasse{\m@tdepasse [}\fi%
                    \ifnum\arabic{mdp}=4\edef\m@tdepasse{\m@tdepasse @}\fi%
                    \ifnum\arabic{mdp}=5\edef\m@tdepasse{\m@tdepasse =}\fi%
                    \ifnum\arabic{mdp}=6\edef\m@tdepasse{\m@tdepasse :}\fi%
                    \ifnum\arabic{mdp}=7\edef\m@tdepasse{\m@tdepasse ?}\fi%
                    \ifnum\arabic{mdp}=8\edef\m@tdepasse{\m@tdepasse \%}\fi%
                    \ifnum\arabic{mdp}=9\edef\m@tdepasse{\m@tdepasse \$}\fi%
                    \ifnum\arabic{mdp}=10\edef\m@tdepasse{\m@tdepasse *}\fi%
                    \ifnum\arabic{mdp}=11\edef\m@tdepasse{\m@tdepasse .}\fi%
                    \ifnum\arabic{mdp}=12\edef\m@tdepasse{\m@tdepasse !}\fi%
                    \ifnum\arabic{mdp}=13\edef\m@tdepasse{\m@tdepasse ;}\fi%
                    \ifnum\arabic{mdp}=14\edef\m@tdepasse{\m@tdepasse \#}\fi%
            \else%
            \chgrand[first=1,last=100]\rand%
                    \ifnum\arabic{mdp}>\propnombre%utilisation de lettres en fonction du "taux" déclaré en argument #1
                            \let\next=\relax%
                            \chgrand[last=52]\rand%
                            \ifnum\arabic{mdp}<27%lettres minuscules
                                    \advance\lettre by 1 %
                                    \edef\m@tdepasse{\m@tdepasse\alph{mdp}}%ajout au mdp
                            \else%
                                    \advance\Lettre by 1 %lettres majuscule
                                    \addtocounter{mdp}{-26}%
                                    \edef\m@tdepasse{\m@tdepasse\Alph{mdp}}%ajout au mdp
                            \fi%
                    \else%
                            \let\next=\relax%
                            \advance\chiffre by 1 %chiffres
                            \chgrand[last=10]\rand%
                            \addtocounter{mdp}{-1}%
                            \edef\m@tdepasse{\m@tdepasse\arabic{mdp}}%ajout au mdp
                    \fi%
            \fi%
            \advance\nbchar by 1 %
            \ifnum\nbchar<\l@ngmdp\def\next{\genmdp@i}\fi\next}%fin de la reccursion si compteur=longueur du mdp. \next lance la reccursion qui est terminale
    
    \newcommand\motdepasse[3][0]{%
            \def\propnombre{#2}%
            \def\propchar{#1}
            \def\l@ngmdp{#3}%
            %\let\secure\@empty%
            \def\m@tdepasse{ }%
            \def\longmdp{#2}
            \nbchar=0% initialisation des compteurs
            \charspec=0%
            \chiffre=0%
            \nbdesecurite=0%
            \Lettre=0%
            \lettre=0%
            \genmdp@i% lance la reccursion       
            \hrulefill\par\begin{center}%mise en page du texte et du mot de passe
            \texttt{\m@tdepasse}%
            \end{center}\solidite\par La robustesse du mot de passe est : %
            \medskip\barrepourcent\medskip\par}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    %%%%%%%%%%%%%%%%%%%%%%%%testeur de sécurité%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \def\solidite{%
    %%%%%%%%%%%%%%%%%%%%%%%%bonus et penalités %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \ifnum\chiffre<\l@ngmdp%
        \multiply\chiffre by 4\advance\nbdesecurite by\chiffre %
    \else
        \advance\nbdesecurite by -\l@ngmdp %
        \advance\nbdesecurite by -\l@ngmdp %
    \fi
    %bonus nb de chiffres, accordé que s'ils ne sont pas seuls,si seuls une pénalité est imposée 
    \ifnum\Lettre>0\advance\Lettre by -\l@ngmdp \fi%bonus majuscules
    \multiply\Lettre by -2 %
    \ifnum\charspec=0\ifnum\chiffre=0%
        \ifnum\lettre=0%
            \advance\Lettre by -\l@ngmdp%Pénalité si majuscules seules
            \advance\Lettre by -\l@ngmdp%
        \else%
            \ifnum\Lettre=0%
                \advance\lettre by -\l@ngmdp%pénalité si minuscules seules
                \advance\lettre by -\l@ngmdp%
        \fi\fi\fi\fi
    \ifnum\lettre>0\advance\lettre by -\l@ngmdp \fi%bonus minuscule
    \multiply\lettre by -2 %
    \edef\l@ngmdp{\number\numexpr\l@ngmdp*4}% bonus nb de caractères
    \advance\nbdesecurite by\l@ngmdp %
    \multiply\charspec by 6 %                 bonus nb de caractères spéciaux
    \advance\nbdesecurite by\charspec %
    \advance\nbdesecurite by\Lettre %
    \advance\nbdesecurite by\lettre %
    \def\result{\the\nbdesecurite}}
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%barre de pourcentage%%%%%%%%%%%%%%%%%%%%%%%%%%%
    \def\barrepourcent{%
    \FPeval{\resulta}{\the\nbdesecurite/100}%
    \FPeval{\resultb}{1-\resulta}%
    \ifnum\nbdesecurite>100%
        \textbf{excellente} (100\,\%)\par\fbox{\color{green!90!black!}%
        \vrule height1.5ex width \linewidth}%
    \else
        \ifnum\nbdesecurite<20%
            \textbf{très mauvaise} (\the\nbdesecurite\,\%)%
            \par\fbox{\color{red!40!black}%
            \vrule height1.5ex width \resulta\linewidth depth0pt%
            \vrule height0pt width \resultb\linewidth depth0pt}%
        \else%
            \ifnum\nbdesecurite<40%
                \textbf{mauvaise} (\the\nbdesecurite\,\%)%
                \par\fbox{\color{red!95!black}%
                \vrule height1.5ex width \resulta\linewidth depth0pt%
                \vrule height0pt width \resultb\linewidth depth0pt}%
            \else
                \ifnum\nbdesecurite<60%
                    \textbf{moyen} (\the\nbdesecurite\,\%)%
                    \par\fbox{\color{orange!95!black!}%
                    \vrule height1.5ex width \resulta\linewidth depth0pt%
                    \vrule height0pt width \resultb\linewidth depth0pt}%
                \else
                    \ifnum\nbdesecurite<80%
                        \textbf{bon} (\the\nbdesecurite\,\%)%
                        \par\fbox{\color{yellow!90!black!}%
                        \vrule height1.5ex width \resulta\linewidth depth0pt%
                        \vrule height0pt width \resultb\linewidth depth0pt}%
                    \else
                        \ifnum\nbdesecurite<100%
                            \textbf{bon} (\the\nbdesecurite\,\%)%
                            \par\fbox{\color{green!50!black!}%
                            \vrule height1.5ex width \resulta\linewidth depth0pt%
                            \vrule height0pt width \resultb\linewidth depth0pt}%
                        \fi
                    \fi
                \fi
            \fi
        \fi
    \fi%
    }
    \makeatother
    \begin{document}
    
    
    {\Large \textbf{Mots de passe longueur 12 sans caractères spéciaux:}}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \motdepasse{50}{12}\par
    \bigskip
    
    {\Large \textbf{Mots de passe longueur 8 sans caractères spéciaux:}}\par
    \motdepasse{50}{8}\par
    \motdepasse{0}{8}\par
    \motdepasse{50}{8}\par
    \motdepasse{50}{8}\par
    \motdepasse{50}{8}\par
    \motdepasse{50}{8}\par
    \motdepasse{50}{8}\par
    \motdepasse{50}{8}\par
    \motdepasse{50}{8}\par
    \bigskip
    
    {\Large \textbf{Mots de passe longueur 12 avec caractères spéciaux:}}\par
    \motdepasse[50]{50}{12}\par
    \motdepasse[50]{50}{12}\par
    \motdepasse[50]{50}{12}\par
    \motdepasse[50]{50}{12}\par
    \motdepasse[80]{50}{12}\par
    \motdepasse[30]{50}{12}\par
    \motdepasse[10]{50}{12}\par
    \bigskip
    
    {\Large \textbf{Mots de passe de longueur 8 sans chiffre avec et sans caractères spéciaux:}}\par
    \motdepasse{0}{8}\par
    \motdepasse[0]{0}{8}\par
    \motdepasse[50]{0}{8}\par
    \motdepasse[100]{0}{8}\par
    \motdepasse[80]{0}{8}\par
    \motdepasse[20]{0}{8}\par
    \bigskip
    
    
    {\large\textbf{Mots de passe de longueur 6 sans lettre avec et sans caractères spéciaux :}}\par
    \motdepasse{100}{6}\par
    \motdepasse[50]{100}{6}\par
    \motdepasse{100}{6}\par
    \motdepasse[30]{100}{6}\par
    \motdepasse[70]{100}{6}\par
    \motdepasse{100}{6}\par
    \bigskip
    
    {\Large \textbf{Mots de passe de longueur 10 sans lettre avec et sans caractères spéciaux :}}\par
    \motdepasse{100}{10}\par
    \motdepasse[50]{100}{10}\par
    \motdepasse{100}{10}\par
    \motdepasse[30]{100}{10}\par
    \motdepasse[70]{100}{10}\par
    \motdepasse{100}{10}\par
    
    \end{document}

  2. #2
    Invité
    Invité(e)
    Par défaut Très original !
    Bonjour -Nikopol-,

    Ton générateur de mots de passe est très original. Le faire en TeX n'était pas tâche simple. Juste une remarque, il faudrait que tu mette le code avec un peu plus de commentaire sur le forum car il faut vraiment s'accrocher pour le comprendre.

    Alors voici mes critiques :
    • Fonctionnalité : le code a l'air de bien marcher, il nous renvoie des bon mots de passes. L'algorithme de robustesse marche, elle aussi, bien. 4/4
    • Qualité du code : il est bien structuré et lisible. 4/4
    • Commentaire : les commentaires reste, comme je le disais, léger sur ce code. Difficile de le comprendre facilement surtout l'algorithme testant la robutesse du mot de passe. 2/4
    • Sécurité : là, je crois qu'il n'y a pas trop à dire. 4/4
    • Design et inventivité : la barre de pourcentage est assez classe et sobre (comme toute chose avec LaTeX). Par contre, le fait de le faire avec ce langage n'apporte pas beaucoup d'ergonomie, obliger le copier-coller le même code pour afficher plusieurs mots de passe. 2/4
    • Total : 16/20

    Voilà !

    Bonne journée,
    Teguad
    Dernière modification par Invité ; 30/03/2014 à 13h24.

  3. #3
    Expert éminent sénior

    Avatar de -Nikopol-
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2013
    Messages
    2 174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2013
    Messages : 2 174
    Points : 11 289
    Points
    11 289
    Billets dans le blog
    5
    Par défaut
    J'ai attendu le dernier moment pour participer au vote. J'ai vu qu'un des participant avait emis un vote pour son code. Je vais donc faire de même. Je suis incapable de me prononcer pour les autres participant car le seul langage que je connaisse est TeX.

    Voici mon évaluation :

    fonctionnalités : 3 points , le code fait ce qui est demandé, possibilité d'inserer des caractères spéciaux ou non, des chiffres ou non, majuscules
    qualité du code : 3 points ; je n'ai découvert le concours que deux jours avant la fin, donc le code pourrait être amélioré. Mais le résultat est valable.
    commentaire et documentation : 3 points ; l'explication du fonctionnement est un peu sommaire, code pas commenté.
    sécurité de l'application : 3 points ; par faute de temps j'aurai pu ajouter d'autres bonus et d'autres malus
    design et inventivité de l'interface : 4 points. Plus pour moi, originalité du langage de programmation, barre de pourcentage, et environnement idéal pour publipostage.

    note finale : 16.

  4. #4
    Invité
    Invité(e)
    Par défaut
    C'est marrant de faire un générateur de mot de passe en latex. Je me suis un peu amusé à le tester. Bon, on se lasse vite et c'est pas vraiment utile en latex mais après tout, pourquoi pas ?
    Je donne donc le barême suivant :

    * fonctionnalité : 3 points, le programme a l'air de marcher. Il aurait falu programmer une fonctionnalité supplémentaire et obliger le générateur à donner un mot de passe supérieur à une certaine robustesse.
    * qualité du code : 2 points. je fais de la programmation et il y a des tests (ifnum) non imbriqués et qui devraient être imbriqués puisque les conditions de ces tests s'excluent toutes les unes entre les autres. En plus, il y a des commandes qui apparaissent dans les deux issues du test (\let\next=\relax) ce qui est redondant. Pareil pour les \vrule, on dirais. Je ne connais pas les packages fp et lcg et j'ai lu les manuels. J'ai vu dans le code texte de la documentation de fp qu'il peut générer des nombres aléatoires avec "seed", tout comme le fait lgc. Il y a peut être moyen d'économiser un package en tout ?
    * commentaires : 2 points, le code n'est pas du tout commenté. On ne comprends pas ce que fait la macro \solidité ni quel algorithme est utilisé. Il est donc difficile de se faire une idée sur sa fiabilité. De plus, il y a 2 macros qui portent des noms presque identiques : \Lettre et \lettre. C'est risqué et très peu lisible et cela n'améliore pas le comprehension du code
    * sécurité : 2 points, il faut être très méfiant envers des générateurs de mots de passe : est ce que le programme teste la robustesse du mot de passe généré au fur et à mesure de sa fabrication pour corriger le tir si besoin (par exemple si deux caractères identiques sont tirées au sort à la suite)? En plus, rien ne dit que l'algorithme utilisé (dont on ne sait rien) donne des mots de passe robustes et on ne sait pas si des interactions avec d'autres packages ne vont pas faire des disfonctionnements, ce qui arrive souvent avec latex
    * Design et inventivité : 2 points car l'interface en latex n'est pas du tout pratique. Il faut faire des copier-coller depuis le fichier pdf pour insérer les mots de passe générés à d'autres endroits. Sinon, c'est joli le fichier pdf généré par latex, mais, pour un truc de sécurité, on s'en fiche un peu...

    total = 11 points. Après avoir fait l'addition, ça a l'air assez sévère, mais en regardant le détail, les notes intermédiaires sont justifiées.

    Voila ma contribution...

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 70
    Points : 162
    Points
    162
    Par défaut
    J'essaye d’être le plus objectif possible, mais ayant soumis moi même soumis une proposition à ce concours c'est relativement délicat pour moi de noter. N’hésitez pas a revenir vers moi si mes notations semblent abusives.

    Au final j'aurai passé plus de temps à regarder et comprendre les outils des autres candidats et à les noter (ce qui est difficile) qu'à réaliser mon code

    Je suis ici à la fois admiratif et dubitatif.
    • Admiratif: original, audacieux, et puis coder en LateX n'est pas nécessairement une évidence
    • Dubitatif: je ne sais pas comment noter, ni si c'est vraiment utile


    Note globale : 11.7/20

    fonctionnalités : 2 points

    • Les fonctions demandées sont présentes
    • Je ne comprends pas comment la force du mot de passe est testée
    • Mauvais point: On ne peut pas tester un mot de passe non généré
    • Dommage: Pas de recherche dictionnaire ni de génération de mot de passe plus facile a mémoriser
    • Dommage: pas d'UI ni d'interactivité, ni de paramètres (disons plutôt que je n'ai pas compris comment paramétrer sans changer le code source)



    qualité du code : 2.5 points
    • J'ai du mal avec le LateX... mais c'est très compréhensible et bien structuré.
    • Dommage: le code est place sur le forum, ce qui laisse supposer qu'il n'y a pas de gestion de configuration. Github/sourceforge/...etc. est gratuit pourquoi se priver?



    commentaire et documentation : 2 points

    • Le code semble bien commenté
    • Dommage: Pas de documentation autre que les quelques ligne de description
    • Dommage: Pas d'information de licence du code


    sécurité de l'application : 3.2 points

    • Ne comprenant pas parfaitement le code LateX je suis mal place pour noter
    • Pas de risque de sécurité identifié pour faire tourner l'outil


    design et inventivité de l'interface : 2 points

    • Bon point: un rendu graphique type document avec une jolie mise en page
    • Bon point: C'est original
    • Sinon, il faut reconnaitre qu'il n'y a pas d'interface donc difficile de noter plus.

Discussions similaires

  1. Réponses: 6
    Dernier message: 06/04/2014, 18h58
  2. Réponses: 4
    Dernier message: 15/03/2014, 23h16
  3. Réponses: 1
    Dernier message: 14/03/2014, 00h04
  4. Réponses: 1
    Dernier message: 13/03/2014, 23h43
  5. Défi : Notez le générateur de mot de passe de Adrael66
    Par Neckara dans le forum Sécurité
    Réponses: 1
    Dernier message: 05/03/2014, 15h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo