/* * Generador de contraseñas de forma aleatoria * * Jorge López Pérez, http://adobo.org/contacto * 2004 - 07 - 04. 11.50 am * */ #include #include #include #include #include #define SIMBOLOS "!#%&(.;,/[" int main(int argc, char *argv[]) { int longitud, i; char *passwd; long int aleat; char base; struct timeval semilla; struct timezone tz = {0, 0}; if (argc < 2) { printf("Sintaxis: %s longitud\n", argv[0]); exit(EXIT_FAILURE); } if ((longitud = atoi(argv[1]))<=0) { printf("La longitud %d no es válida\n", longitud); exit(EXIT_FAILURE); } /* Semilla aleatoria */ if ((gettimeofday(&semilla, &tz))==-1) { puts("Error al generar semilla"); exit(EXIT_FAILURE); } srandom((unsigned int) semilla.tv_usec); /* Espacio en passwd */ passwd=(char *)malloc(sizeof(char *)*(longitud+1)); /* Comenzamos a generar */ for(i=0;i 90 : símbolo */ if (aleat >= 0 && aleat <= 70) { base = ((random()%30)<16) ? 'a' : 'A'; passwd[i]=base+(aleat%26); } else if (aleat > 70 && aleat <= 90) { passwd[i]='0'+(aleat%10); } else { aleat -= 91; passwd[i]=SIMBOLOS[aleat]; } } printf("La contraseña es %s\n", passwd); free(passwd); }