APG v2.2.0
This commit is contained in:
174
pronpass.c
174
pronpass.c
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
** Copyright (c) 1999, 2000, 2001, 2002
|
||||
** Copyright (c) 1999, 2000, 2001, 2002, 2003
|
||||
** Adel I. Mirzazhanov. All rights reserved
|
||||
**
|
||||
** Redistribution and use in source and binary forms, with or without
|
||||
@@ -37,11 +37,14 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#if !defined(WIN32) && !defined(_WIN32) && !defined(__WIN32) && !defined(__WIN32__)
|
||||
#include <strings.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
#include <sys/types.h>
|
||||
#include "pronpass.h"
|
||||
#include "randpass.h"
|
||||
#include "convert.h"
|
||||
#include "errs.h"
|
||||
|
||||
struct unit
|
||||
@@ -2285,172 +2288,3 @@ get_random (USHORT minlen, USHORT maxlen)
|
||||
ret = minlen + (USHORT) randint ((int) (maxlen - minlen + 1));
|
||||
return (ret);
|
||||
}
|
||||
|
||||
/*
|
||||
** capitalize() - This routine designed to modify sullable like this:
|
||||
** adel ----> Adel
|
||||
** dot ----> Dot
|
||||
** etc.
|
||||
** INPUT:
|
||||
** char * - syllable.
|
||||
** OUTPUT:
|
||||
** none.
|
||||
** NOTES:
|
||||
** none.
|
||||
*/
|
||||
void capitalize (char *syllable)
|
||||
{
|
||||
char let[26] =
|
||||
{
|
||||
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
|
||||
'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
|
||||
'u', 'v', 'w', 'x', 'w', 'z'
|
||||
};
|
||||
char clet[26] =
|
||||
{
|
||||
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
|
||||
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
|
||||
'U', 'V', 'W', 'X', 'W', 'Z'
|
||||
};
|
||||
char tmp = 0x00;
|
||||
int i = 0;
|
||||
if ( randint(2) == TRUE)
|
||||
{
|
||||
(void)memcpy((void *)&tmp, (void *)syllable, sizeof(tmp));
|
||||
for(i=0; i < 26; i++)
|
||||
if ( let[i] == tmp )
|
||||
if (is_restricted_symbol(clet[i]) != TRUE)
|
||||
(void)memcpy ((void *)syllable, (void *)&clet[i], 1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** numerize() - This routine designed to modify single-letter
|
||||
** syllable like this:
|
||||
** a ----> 1 or 2 or 3 etc.
|
||||
** u ----> 1 or 2 or 3 etc.
|
||||
** etc.
|
||||
** INPUT:
|
||||
** char * - single-letter syllable
|
||||
** OUTPUT:
|
||||
** none.
|
||||
** NOTES:
|
||||
** none.
|
||||
*/
|
||||
void numerize (char *syllable)
|
||||
{
|
||||
char *tmp;
|
||||
if ( (tmp = (char *)calloc(1, 4)) == NULL)
|
||||
err_sys_fatal("calloc");
|
||||
if ( strlen (syllable) == 1 )
|
||||
{
|
||||
(void) gen_rand_symbol(tmp, S_NB);
|
||||
(void)memcpy ((void *)syllable, (void *)tmp, 1);
|
||||
}
|
||||
free ((void *)tmp);
|
||||
}
|
||||
/*
|
||||
** specialize() - This routine designed to modify single-letter syllable
|
||||
** like this:
|
||||
** a ----> # or $ or % etc.
|
||||
** u ----> # or $ or % etc.
|
||||
** etc.
|
||||
** INPUT:
|
||||
** char * - single-letter syllable.
|
||||
** OUTPUT:
|
||||
** none.
|
||||
** NOTES:
|
||||
** none.
|
||||
*/
|
||||
void specialize (char *syllable)
|
||||
{
|
||||
char *tmp;
|
||||
if ( (tmp = (char *)calloc(1, 4)) == NULL)
|
||||
err_sys_fatal("calloc");
|
||||
if ( strlen (syllable) == 1 )
|
||||
{
|
||||
(void) gen_rand_symbol(tmp, S_SS);
|
||||
(void)memcpy ((void *)syllable, (void *)tmp, 1);
|
||||
}
|
||||
free ((void *)tmp);
|
||||
}
|
||||
|
||||
/*
|
||||
** symb2name - convert symbol to it's name
|
||||
** INPUT:
|
||||
** char * - one symbol syllable
|
||||
** OUTPUT:
|
||||
** none.
|
||||
** NOTES:
|
||||
** none.
|
||||
*/
|
||||
void
|
||||
symb2name(char * syllable, char * h_syllable)
|
||||
{
|
||||
struct ssymb_names
|
||||
{
|
||||
char symbol;
|
||||
char *name;
|
||||
};
|
||||
static struct ssymb_names ssn[42] =
|
||||
{
|
||||
{'1',"ONE"},
|
||||
{'2',"TWO"},
|
||||
{'3',"THREE"},
|
||||
{'4',"FOUR"},
|
||||
{'5',"FIVE"},
|
||||
{'6',"SIX"},
|
||||
{'7',"SEVEN"},
|
||||
{'8',"EIGHT"},
|
||||
{'9',"NINE"},
|
||||
{'0',"ZERO"},
|
||||
{33, "EXCLAMATION_POINT"},
|
||||
{34, "QUOTATION_MARK"},
|
||||
{35, "CROSSHATCH"},
|
||||
{36, "DOLLAR_SIGN"},
|
||||
{37, "PERCENT_SIGN"},
|
||||
{38, "AMPERSAND"},
|
||||
{39, "APOSTROPHE"},
|
||||
{40, "LEFT_PARENTHESIS"},
|
||||
{41, "RIGHT_PARENTHESIS"},
|
||||
{42, "ASTERISK"},
|
||||
{43, "PLUS_SIGN"},
|
||||
{44, "COMMA"},
|
||||
{45, "HYPHEN"},
|
||||
{46, "PERIOD"},
|
||||
{47, "SLASH"},
|
||||
{58, "COLON"},
|
||||
{59, "SEMICOLON"},
|
||||
{60, "LESS_THAN"},
|
||||
{61, "EQUAL_SIGN"},
|
||||
{62, "GREATER_THAN"},
|
||||
{63, "QUESTION_MARK"},
|
||||
{64, "AT_SIGN"},
|
||||
{91, "LEFT_BRACKET"},
|
||||
{92, "BACKSLASH"},
|
||||
{93, "RIGHT_BRACKET"},
|
||||
{94, "CIRCUMFLEX"},
|
||||
{95, "UNDERSCORE"},
|
||||
{96, "GRAVE"},
|
||||
{123, "LEFT_BRACE"},
|
||||
{124, "VERTICAL_BAR"},
|
||||
{125, "RIGHT_BRACE"},
|
||||
{126, "TILDE"}
|
||||
};
|
||||
int i = 0;
|
||||
int flag = FALSE;
|
||||
|
||||
if (strlen(syllable) == 1)
|
||||
{
|
||||
for (i=0;i<42;i++)
|
||||
{
|
||||
if(*syllable == ssn[i].symbol)
|
||||
{
|
||||
(void)memcpy((void*)h_syllable, (void*)ssn[i].name, strlen(ssn[i].name));
|
||||
flag = TRUE;
|
||||
}
|
||||
}
|
||||
if (flag != TRUE)
|
||||
(void)memcpy((void*)h_syllable, (void*)syllable, strlen(syllable));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user