Microsoft Visual Basic 2010 Express : générer un mot de passe
cengokill
Messages postés
314
Statut
Membre
-
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
sambia39 Messages postés 610 Date d'inscription Statut Membre Dernière intervention -
Bonjour, Je voudrais créer un tout petit programme générant un mot de passe aléatoirement. Pour celà, j'utilise Microsoft Visual Basic 2010 Express. L'utilisateur doit entrer un nombre de caractères voulus, puis il clique sur le bouton "générer". J'aimerais avoir de l'aide concernant le codage du logiciel, pour générer aléatoirement une suite de caractères.
Merci d'avance ;-)
--
/Cengokill
Merci d'avance ;-)
--
/Cengokill
2 réponses
-
Bonsoir,
En gros tu nous demande de t'apprendres à pirater...
Je pense que c'est contraire à la charte-
-
-
-
Bonsoir Gravgun,
Je pensais bien faire, dans la mesure du possible je reste "prudent" sur le forum, il y a tellement de questions "illicites" que je passe la sécurité avant tout.
J'ai mal interprété son message, l'erreur est humaine, non ?
Car le "tu sais lire" signifierais que je suis qu'un imbécile à tes yeux, je comprends pas pourquoi tu essayes de me rabaisser..
Bref, j'en suis désolé cengokill. -
Je ne t'en veut pas, l'erreur est humaine effectivement. Si je posais rhétoriquement cette question, c'était pour insister sur le message dans ses détails, car bien que je puisse comprendre que la sécurité et le respect de la charte te soient important (tant mieux d'ailleurs), il faut bien saisir de quoi on parle avant de répondre sur l'affirmative, et à défaut, demander des précisions.
-
-
Bonsoir
Pour générer un mot de passe de façon aléatoire, il est préférable d'obtenir différents caractères d'une constante de façon aléatoire et non répétitive (d'une certaine manière cela élimine le facteur plus ou moins de fréquence d'apparition des caractères mais reste à vérifier). Pour faire simple l'algorithme de génération le plus simple se repose sur deux éléments essentiels: la constante de sélection de caractère et une fonction capable de générer des nombres aléatoires.
Exemple avec un speudo code a revoir
Fonction Alea_Char( )
entier X = 62
Caractère: C = 0
Tableaux de Caractère: Vecteur_constante[X] ={ 0-9a-zA-Z }
C = Vecteur[ random % taille vecteur ]
Retourner C
Fin Fonction
Fonction GetPass( Taille n, Vecteur[N] )
Pour i de 0 jusqu'à n
Vecteur[i] = Alea_Char( )
Fin pour
Retourner Vecteur
Fin Fonction
Et comme en est dans une section en langage de programmation C/C++ cela donnerais en langage C le code ci-dessous bien entendu il y a des choses a revoir ou optimisé.
à bientôt/* * Code generated by sambia39 1/07/2015 01:43:36 * Xjagercode GenCode (XGC) version 0.8 * admin@xjagercode.com * License GPL */ #define _XOPEN_SOURCE #define S_MAX_PASS 100 #define S_GEN_PASS 15 #include <time.h> #include <errno.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <unistd.h> /* Masque générateur de mots de passe on peut également jouer avec la table ASCII directement choisissant aléatoirement les informations entre 33 -127 */ const char c_str_reg[] = "0123456789" "abcdefghijklmnopqrstuvwyz" "ABCDEFGHIJKLMNOPQRSTUVWYZ"; const char c_str_reg_cplx[] = "0123456789" "abcdefghijklmnopqrstuvwyz" "ABCDEFGHIJKLMNOPQRSTUVWYZ" "&é'(-è_çà)=~#{[|^@]}°+!$" "$£ù%µ*!<>oeOE"; /* Fonction qui alloue de la mémoire dynamiquement pour le stockage du mot de passe */ char *f_alloc_str( size_t size ){ char *ptr = NULL; size_t size_str = ( (0) == size ) ? S_MAX_PASS : size; ptr = (char*)calloc( size_str, sizeof(char) ); if( (NULL) == ptr ){ fflush( stderr ); fprintf( stderr, "(%d)\t:Erreur d'allocation mémoire\n %s\n", errno,strerror(errno) ); return NULL; } return ptr; } /* Fonction qui génère un mot de passe sans la fonction crypte elle prend en paramètre la taille du mot de passe et un pointeur pointant sur une zone allouée pour le stockage du mot de passe. */ char *f_get_GenPass_no_crypt( size_t size, char *ptr ){ unsigned int i = 0; static unsigned int iseed; if( !iseed ){ iseed = 1; srand( (unsigned int)time(NULL) ); } /* Génération du mot de passe */ for( i = 0; i < size; i++ ) *(ptr+i) = c_str_reg[ rand()% (int) strlen(c_str_reg) ]; *(ptr+i) = '\0'; return ptr; } /* Fonction qui génère un mot de passe avec la fonction crypte elle prend en paramètre la taille du mot de passe et un pointeur pointant sur une zone allouée pour le stockage du mot de passe. */ char *f_get_GenPass_on_crypt( size_t size, char *ptr){ char seed = '\0'; unsigned int i = 0; char t_tab[ S_MAX_PASS ]; static unsigned int iseed; if( !iseed ){ iseed = 1; srand( (unsigned int) time(NULL) ); } /* Génération du mot de passe */ for( i = 0; i < size; i++ ) *(ptr+i) = c_str_reg[ rand() % (int) strlen(c_str_reg) ]; *(ptr+i) = '\0'; seed = c_str_reg[ rand() % (int) strlen(c_str_reg) ]; strcpy( t_tab, crypt(&seed,c_str_reg) ); strcpy( ptr, t_tab ); *(ptr+i) = '\0'; return ptr; } /* Fonction Principale */ int main( void ){ char *ptr_gen = NULL; unsigned int i = 0; fflush( stdout ); ptr_gen = f_alloc_str( S_MAX_PASS ); if( (NULL) == ptr_gen ) return EXIT_FAILURE; fprintf( stdout, "Généré avec la fonction no crypt\n-----\n" ); for( i = 0; i < S_GEN_PASS; i++ ){ memset( ptr_gen, 0, (sizeof ptr_gen/ sizeof *ptr_gen) ); ptr_gen = f_get_GenPass_no_crypt( S_GEN_PASS, ptr_gen ); fprintf( stdout, "(%d)\t:%s\n", i, ptr_gen ); } fprintf( stdout, "\nGénéré avec la fonction on crypt\n-----\n" ); for( i = 0; i < S_GEN_PASS; i++ ){ memset( ptr_gen, 0, (sizeof ptr_gen/ sizeof *ptr_gen) ); ptr_gen = f_get_GenPass_no_crypt( S_GEN_PASS, ptr_gen ); fprintf( stdout, "(%d)\t:%s\n", i, ptr_gen ); } fflush( stdout ); free( ptr_gen ); ptr_gen = NULL; return EXIT_SUCCESS; }