-
Jun 14th, 2020, 05:06 AM
#1
Thread Starter
Fanatic Member
Good Random Password Generator
Strong Password Generator
Bpwsgen is a program that enables you to create secure passwords or lists of passwords. All that is required is a length and the count to be created, You also have nine optional options that can be used to style the output of the passwords.
Compile the program
Code:
gcc pwdgen.c - o pwsgen
The Source Code
Code:
/*
Strong Random Password Generator
*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <time.h>
#include <string.h>
#define MIN_PWS_LENGTH 6
#define MIN_PWS_COUNT 1
#define MIN_PWS_COUNT 1
#define MAX_MASK_LEN 256
#define MAX_PWS_LEN 256
#define MAX_FLAGS 10
#define MAX_PASSWORDS 4000
#define TRUE 1
#define FALSE 0
//Password mask types.
char *pLowcase = "abcdefghijklmnopqrstuvwxyz";
char *pUppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char *pDigits = "0123456789";
char *pPunctuation = "!\"#$%&'()*+,-./:;<=>?@[]^_{|}~";
char *pHex = "ABCDEF0123456789";
char *sp = " ";
//Holds the option types of passwords to generate.
int i_flags = 0;
char flags[MAX_FLAGS];
//Holds the generated password.
char pws[MAX_PWS_LEN];
int flag_exsits(char c){
//Look in the flags array if a char is found
int x = 0;
int Found = FALSE;
while(x < i_flags){
//Check if c is in flags
if(c == flags[x]){
//Yes it is found
Found = TRUE;
//Here we exit the loop
break;
}
//INC counter
x++;
}
return Found;
}
int is_vowel(char c){
char ch = toupper(c);
if(ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U'){
return 1;
}else{
return 0;
}
}
int main(int argc, char **argv)
{
char c = '\0';
char flag = '\0';
char pTempMask[MAX_MASK_LEN];
char pMask[MAX_MASK_LEN];
int pMaskLen = 0;
int length = MIN_PWS_LENGTH;
int count = MIN_PWS_COUNT;
int x = 2;
int i = 0;
int j = 0;
int rnd = 0;
int rm_vowels = FALSE;
int ln_No = FALSE;
int Exclude_simlar = FALSE;
//Get random seed.
srand((unsigned int)time(NULL));
if(argc < 3){
printf("-------------------------------------------------------------------------------\n");
printf("bpwsgen :: Strong Random Password Generator Version 1.3a\n");
printf("-------------------------------------------------------------------------------\n");
printf("\nSimple Usage :: bpwsgen length count /[OPTIONS]\n");
printf("\n Length :: Length of the password to create.\n");
printf(" Count :: Number of passwords to create.\n");
printf("\n Options ::\n\n");
printf(" /U Include upper case characters A-Z\n");
printf(" /L Include lower case characters a-z\n");
printf(" /D Include digits 0-9\n");
printf(" /P Include punctuation and others.\n");
printf(" /H Include hexadecimal characters.\n");
printf(" /S Include space character.\n");
printf(" /V Do not include vowels.\n");
printf(" /X Exclude Similar characters e.g. (Il1O05S2Z)\n");
printf(" /N Include number each line.\n");
return 0;
}
//Get password length
length = atoi(argv[1]);
count = atoi(argv[2]);
//Check password length
if(length < MIN_PWS_LENGTH){
length = MIN_PWS_LENGTH;
}
//Max length of password is 255
if(length > MAX_PWS_LEN){
length = MAX_PWS_LEN;
}
//Check number of passwords.
if(count < MIN_PWS_COUNT){
count = MIN_PWS_COUNT;
}
//Max passwords
if(count > MAX_PASSWORDS){
count = MAX_PASSWORDS;
}
strcpy(pTempMask,"");
//Add default password mask if no options are selected.
if(argc == 3){
//Add default mask.
strcat(pTempMask,pUppercase);
strcat(pTempMask,pLowcase);
strcat(pTempMask,pDigits);
}
//Create password mask
while(x < argc){
//Get char from argv
flag = toupper(argv[x][1]);
//Check if flag is already in the flags array
if(flag_exsits(flag) == FALSE && (isalpha(flag))){
//Store flag
flags[i_flags] = flag;
//INC flag counter
i_flags++;
}
//INC counter
x++;
}
//Reset counter
i = 0;
//Process flags
while(i < i_flags){
//Get flag
flag = flags[i];
//Process flag
switch(flag){
case 'U':
strcat(pTempMask,pUppercase);
break;
case 'L':
strcat(pTempMask,pLowcase);
break;
case 'D':
strcat(pTempMask,pDigits);
break;
case 'P':
strcat(pTempMask,pPunctuation);
break;
case 'H':
strcat(pTempMask,pHex);
break;
case 'S':
strcat(pTempMask,sp);
break;
case 'V':
rm_vowels = TRUE;
break;
case 'N':
ln_No = TRUE;
break;
case 'X':
Exclude_simlar = TRUE;
break;
}
//INC counter
i++;
}
i = 0;
while(i < strlen(pTempMask)){
char ch = pTempMask[i];
//See if we need to remove vowels
if(rm_vowels == TRUE){
if(is_vowel(ch) == FALSE){
pMask[pMaskLen] = ch;
pMaskLen++;
}
}
else{
//Just copy ch to pMask
pMask[pMaskLen] = ch;
//INC password length
pMaskLen++;
}
i++;
}
//Add ending for password mask.
pMask[pMaskLen] = '\0';
x = 0;
i = 0;
//Create passwords.
while(i < count){
//Generate random password.
for(j = 0; j < length;j++){
//Get random number.
rnd = rand() % strlen(pMask);
//Get random char from pMask
c = pMask[rnd];
//Exclude similar characters.
if(Exclude_simlar == TRUE){
while(c == 'I' || c == 'l' || c == '1'
|| c == 'O' || c == '0'
|| c == '5' || c == 'S'
|| c == '2' || c == 'Z'){
//Get random number
rnd = rand() % strlen(pMask);
//Get random char from pMask
c = pMask[rnd];
}
}
//Build password
pws[j] = c;
}
//Add ending for password.
pws[j] = '\0';
//Check if numbering lines
if(ln_No == TRUE){
//Print line number.
printf("%04d ",(i + 1));
}
//Print random password.
printf("%s\n",pws);
//INC counter
i++;
}
//Clear arrays.
memset(pTempMask,0,sizeof(pTempMask));
memset(pMask,0,sizeof(pMask));
memset(flags,0,sizeof(flags));
memset(pws,0,sizeof(pws));
return 0;
}
Run the program
Code:
./bpwsgen 8 1 /u /l /d
Password options:
/U Include upper case characters A-Z
/L Include lower case characters a-z
/D Include digits 0-9
/P Include punctuation and others.
/H Include hexadecimal characters.
/S Include space character.
/V Do not include vowels.
/X Exclude Similar characters e.g. (Il1O05S2Z)
/N Include number each line.
-
Feb 21st, 2023, 05:17 AM
#2
New Member
Re: Good Random Password Generator
The stronger the password you give, the more secure you are for any electronic item.
-
Oct 24th, 2024, 02:59 AM
#3
New Member
Re: Good Random Password Generator
I was using the same password everywhere (yikes!) until I came across Bpwsgen. It really made password creation so easy; just set the length and count, and boom! I also stumbled upon a great Strong PIN Generator while looking for a pin code generator that helps me keep my accounts secure. Honestly, it’s such a relief knowing I have unique passwords now. I love the flexibility of customizing the output too—definitely makes things more personal. It’s funny how something as simple as a password can make a world of difference in security. Have you all tried combining password managers with these generators?
Last edited by Laxenius; Oct 31st, 2024 at 03:28 AM.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|