Forum Programmation.shell Générateur de mots de passe

Posté par .
Tags : aucun
1
18
oct.
2008
Bonjour,

je cherche le moyen de générer mes mots de passes de façon plus efficace qu'en tapant au hasard sur mon clavier. Il y a des logiciels qui le font mais je me dis qu'une simple ligne de shell est capable de faire ça. Le problème est que j'ai essayé avec dd depuis /dev/urandom mais il faudrait traduire ça en caractères normaux. Alors j'ai essayé avec sed mais ça fait n'importe quoi si j'ai des accents. Je précise que je voudrait des caractères ASCII uniquement et en dessous de 127 car sinon les réglages entre les différents terminaux empêchent de fonctionner.

Mon explication est nulle je sais :)
Je refais.
Je voudrais générer mes mots de passe en ligne de commande pour obtenir des caractères ASCII qui passent sur n'importe quel terminal. Sans installer de logiciel spécialisé. Une sorte de one liner.

Merci d'avance à ceux qui vont me pourrir ma journée en me montrant une astuce tellement simple que j'en aurais honte :-)
  • # Ligne de commande

    Posté par (page perso) . Évalué à 0.

    Bonjour

    Il y a des paquets pour installer ça.

    - makepasswd

    Je n'en ai pas trouvé d'autres, mais j'ai pas beaucoup cherché.

    A+
  • # Google: recherche de « shell pwgen »

    Posté par (page perso) . Évalué à 1.

    Cette recherche donne un magnifique premier résultat :
    http://www.tecneeq.de/files/shell/pwgen/pwgen

    qui propose :

    #!/bin/sh

    # $Id: pwgen,v 1.1.1.1 2003/10/04 16:01:42 karsten Exp $
    #
    # genpasswd - generate a secure, random password
    #
    head -c6 /dev/random | uuencode -m - | sed -n '2p'

    Bien sympathique à mettre comme alias :-)
    • [^] # Re: Google: recherche de « shell pwgen »

      Posté par . Évalué à 1.

      Merci :-)

      J'avais vu ce lien mais cela donne que les chiffres, lettres, et juste deux ou trois signes de ponctuation. En plus on n'a pas la longueur qu'on veut. Si on veut une longueur de 10 il faut demander 7 et si on veut 20 il faut demander 15 :) Ca fait bizard je trouve.
  • # Ouane Laillneur

    Posté par (page perso) . Évalué à 3.

    Perso j'utilise ça:
    http://strongpasswordgenerator.com

    Sinon pour générer tous les caractères ASCII standards et imprimables, c'est avec ça:

    head -c 100 /dev/urandom 2> /dev/null | tr -dc '\41-\176' | cut --bytes=-25

    Malheureusement il n'est pas 100% garanti que ça te retourne le bon nombre de caractères. Si quelqu'un veut compléter, c'est ouvert :-)
    • [^] # Re: Ouane Laillneur

      Posté par . Évalué à 3.

      Ca c'est du mot de passe !

      ,)"UP1oPk^+%Oc{V,_[E
      ;,zmpy"ZXaj{@|_J-RQ~
      UlPyYH+Xxk1aABj5qNr7
  • # pwgen

    Posté par (page perso) . Évalué à 1.

    Il existe un outil nommé pwgen qui sait même générer des mots de passe prononçable.
    Il permet aussi de générer des séries de mots de passe ou des mots de passe à partir du hash d'un fichier.
    • [^] # Re: pwgen

      Posté par . Évalué à 2.

      Ou apg, mais bon ce genre de soluce y en a un paquet.
  • # Taille parfaite

    Posté par (page perso) . Évalué à 2.

    Je crois que j'ai le bon code:
    TAILLE=25; for c in $(echo "obase=94; ibase=10; $(head -c $TAILLE /dev/urandom 2> /dev/null | xxd -p -u -c $TAILLE)" | env BC_LINE_LENGTH=999 bc); do printf "%b" $(printf '\\x%x ' $(expr $c + 33));done | cut --bytes=-$TAILLE

    Ca donne des mots de passe de longueur $TAILLE dans tous les cas.
    note: en une seule ligne.

    C'est un peu long. Quelqu'un a une meilleure idée ?
    J'aurais surtout voulu éviter la boucle mais je n'ai pas trouvé comment.
    • [^] # Re: Taille parfaite

      Posté par (page perso) . Évalué à 3.

      Tirer 2000 caractères dans urandom plutôt que 100 ne coûte presque rien, et ça fait tendre assez rapidement la probabilité d'échec de ton précédent oneliner vers 0. Je pense que la concision et une probabilité de presque 100% sont préférables à cette solution beaucoup moins élégante...
      • [^] # Re: Taille parfaite

        Posté par (page perso) . Évalué à 1.

        Entièrement d'accord :-)
        Je voulais cependant trouver une solution élégante et parfaite (un truc de programmeur obtu quoi). Ma première proposition n'est pas parfaite d'un point de vue théorique. Ma seconde proposition est trop compliquée pour être élégante.
  • # md5sum

    Posté par . Évalué à 0.

    Si tu veux du vraiment aléatoire :
    echo $RANDOM | md5sum
    tu prends autant de caractères que tu le souhaites

    et tu peux faire aussi echo xmoto | md5sum
    et tu fais pareil.
    Dans le deuxième cas, tu peux mettre un mot que tu retrouveras facilement, ce qui te permettra de retrouver le mot de passe facilement aussi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.