N-PN White-Hat Project
Générer un password - Version imprimable

+- N-PN White-Hat Project (https://dev.n-pn.fr/forum)
+-- Forum : Programmation (https://dev.n-pn.fr/forum/forumdisplay.php?fid=72)
+--- Forum : Langages interprétés (https://dev.n-pn.fr/forum/forumdisplay.php?fid=27)
+--- Sujet : Générer un password (/showthread.php?tid=3784)

Pages : 1 2


Générer un password - cacaphonie - 13-11-2014

Salut :p
vu qu'hier j'avais rien à faire j'avais le choix entre : vérifier le niveau de sécurité d'un mdp ou d'en générer un. J'ai choisi celui qui me convenait le mieux Big Grin (pour le moment)
main.py
Code PYTHON :

#/usr/bin/env python2.7
# -*- coding: utf-8 -*-
import random
import string

def genPassword():
    lettre = list(string.ascii_lowercase)
    LETTRE = list(string.ascii_uppercase)
    chiffre = list(string.digits)
    mdpFinal = ""
    while(len(mdpFinal) < 9):
        hasard = random.randint(1, 3)
        if(hasard == 1):
            mdpAjout = random.choice(lettre)
            mdpFinal = mdpFinal + mdpAjout
        elif(hasard == 2):
            mdpAjout = random.choice(LETTRE)
            mdpFinal = mdpFinal + mdpAjout
       else:
            mdpAjout = random.choice(chiffre)
            mdpFinal = mdpFinal + mdpAjout
    print(mdpFinal)
genPassword()
 



RE: Générer un password - gruik - 13-11-2014

je me suis permis de rajouter la coloration syntaxique python, merci pour le partage Wink


RE: Générer un password - Junky - 13-11-2014

Bonjour,

Nice bout de code Cacophonie. Smile

Juste une petite chose (tu vas dire que je chipotte Wink ) mais à chaque condition tu fait:
Code PYTHON :

mdpFinal = mdpFinal + mdpAjout
 


Tu peux le faire qu'une seule fois a la fin. Après ton 'else' et ca t'évites de le l'écrire 3 fois. Smile
Code PYTHON :

#!/usr/bin/env python2.7
# -*- coding: utf-8 -*-
import random
import string

def genPassword():
    lettre = list(string.ascii_lowercase)
    LETTRE = list(string.ascii_uppercase)
    chiffre = list(string.digits)
    mdpFinal = ""
    while(len(mdpFinal) < 9):
        hasard = random.randint(1, 3)
        if(hasard == 1):
            mdpAjout = random.choice(lettre)
        elif(hasard == 2):
            mdpAjout = random.choice(LETTRE)
        else:
            mdpAjout = random.choice(chiffre)
        mdpFinal = mdpFinal + mdpAjout
    print(mdpFinal)
genPassword()
 


De plus tu a oublié le '!' dans ton shébang. Smile

Sinon nice fonction et merci du partage. Smile

Junky,


RE: Générer un password - notfound - 13-11-2014

Tant qu'à chipoter, autant le faire jusqu'au bout :

Code PYTHON :

mdpFinal += mdpAjout
 


Thx pour le partage


RE: Générer un password - F50 - 13-11-2014

Code PYTHON :

lettre = [string.ascii_lowercase]
LETTRE = [string.ascii_uppercase]
chiffre = [string.digits]
 


Suis-je le seul à utiliser [] au lieu de list() ?


RE: Générer un password - octarin - 13-11-2014

Ptet parce que c'est pas la même chose Big Grin

Code PYTHON :

>>> list("toto")
['t', 'o', 't', 'o]
>>> ["toto"]
["toto"]



RE: Générer un password - b0fh - 13-11-2014

Peut-être parce que ça ne fait pas la même chose ?

Code PYTHON :

>>> list("abc") == ["abc"]
False
 


Edit: grillé par octarin.

Par contre y mettre en liste explicitement ne sert à rien:

Code PYTHON :

>>> random.choice(string.digits)
'1'
 



RE: Générer un password - EpicOut - 14-11-2014

hey voici mon code en C:
Code C :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>

char *genrandompass(int len,unsigned char *buff);

int main(void)
{
    unsigned char *ss=malloc(sizeof(char)*11);
    genrandompass(11,ss);
    printf("%s\r\n",ss);

    return 0;
}

char *genrandompass(int len,unsigned char* buff)
{
int j;
srand (time(NULL));
for(j=0;j<len;++j)
    buff[j]=rand()% 26 + 97;

buff[len]='\0';

}
 



RE: Générer un password - Aniem - 14-11-2014

Proverbe shadock du jour : Pourquoi faire simple quand c'est si joli de faire compliqué ?

Code BASH :

dd if=/dev/urandom  bs=1 count=6 2>/dev/null | base64 | cut -d= -f1
 


Meilleur alphabet ([a-zA-Z0-9+/] au lieu de simplement [a-zA-Z0-9] ), excellent aléa (urandom étant recommandé pour les besoins crypto, bien qu'apparemment ce soit overrated), plus simple. Pourquoi se casser la tête ? Big Grin


RE: Générer un password - notfound - 14-11-2014

Pour rappel/info, d'autres techniques de générations de password avaient été abordées lors de mon PREMIER post (nostalgie Shy ) dans lequel je m'étais fais défoncé corrigé par b0fh (cadeau de bienvenu ? Big Grin )

Ici => http://n-pn.fr/forum/showthread.php?tid=2445

o/


RE: Générer un password - Kiwazaru - 14-11-2014

Une question, sachant qu'un nombre aléatoire est généré avec le temps, peut-on dire qu'avec une machine identique à celle qui a généré le mot de passe, et avec le même programme, si on exécute ce même programme exactement à la même heure que la machine qui a généré le mot de passe, alors le mot de passe généré en sortie sera le même ?


RE: Générer un password - Aniem - 14-11-2014

Un nombre aléatoire n'est pas necessairement généré avec l'horloge. C'est souvent utilisé en tant que seed, par contre.
Utiliser l'horloge est un mauvais moyen d'avoir de l'entropie, et donc de faire de l'aleatoire qui soit sensible.


RE: Générer un password - gruik - 14-11-2014

(14-11-2014, 18h57)Kiwazaru a écrit : Une question, sachant qu'un nombre aléatoire est généré avec le temps, peut-on dire qu'avec une machine identique à celle qui a généré le mot de passe, et avec le même programme, si on exécute ce même programme exactement à la même heure que la machine qui a généré le mot de passe, alors le mot de passe généré en sortie sera le même ?

oui, c'est pour ça qu'on parle en réalité de générateur de nombres pseudo-aléatoires (PRNG en anglish), et c'est pour cette raison que c'est le composant quasiment le plus critique du cryptosystème


RE: Générer un password - Kiwazaru - 14-11-2014

Ok ça m'éclaire bien le truc du coup. Merci Smile


RE: Générer un password - eax64 - 14-11-2014

(14-11-2014, 18h01)Aniem a écrit : Proverbe shadock du jour : Pourquoi faire simple quand c'est si joli de faire compliqué ?
Code BASH :

dd if=/dev/urandom  bs=1 count=6 2>/dev/null | base64 | cut -d= -f1
 


Qui peut se simplifier par :
Code BASH :

head -c6 /dev/urandom | base64
 


Sur une taille de 6, t'aurais pas de '=' donc même pas besoin du cut :p

Parce que sinon quitte à faire compliquer, on peut s'amuser hein !

Code BASH :

 p="";for i in {1..10}; do for j in $(seq $(($RANDOM%30+10))); do t=$(head -c $RANDOM /dev/urandom | md5sum | cut -d' ' -f1); echo -n $t; sleep 0.01; echo -en "\r$p"; done; p=$p$(head -c1 <<<$t); done;echo -e "$(tr 'a-z0-9' ' ' <<< $t)"