Skip to content

Commit

Permalink
r12495: Crackcheck utility enhancement based on patch sent by Tom Gei…
Browse files Browse the repository at this point in the history
…ssler

(This used to be commit aa34304)
simo5 authored and Gerald (Jerry) Carter committed Oct 10, 2007

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent c4ccc8f commit b7eec4e
Showing 1 changed file with 71 additions and 2 deletions.
73 changes: 71 additions & 2 deletions examples/auth/crackcheck/crackcheck.c
Original file line number Diff line number Diff line change
@@ -19,20 +19,81 @@ void usage(char *command) {
exit(-1);
}

int complexity(char* passwd)
{
/* TG 26.10.2005
* check password for complexity like MS Windows NT
*/

int c_upper = 0;
int c_lower = 0;
int c_digit = 0;
int c_punct = 0;
int c_tot = 0;
int i, len;

if (!passwd) goto fail;
len = strlen(passwd);

for (i = 0; i < len; i++) {

if (c_tot >= 3) break;

if (isupper(passwd[i])) {
if (!c_upper) {
c_upper = 1;
c_tot += 1;
}
continue;
}
if (islower(passwd[i])) {
if (!c_lower) {
c_lower = 1;
c_tot += 1;
}
continue;
}
if (isdigit(passwd[i])) {
if (!c_digit) {
c_digit = 1;
c_tot += 1;
}
continue;
}
if (ispunct(passwd[i])) {
if (!c_punct) {
c_punct = 1;
c_tot += 1;
}
continue;
}
}

if ((c_tot) < 3) goto fail;
return 0;

fail:
fprintf(stderr, "ERR Complexity check failed\n\n");
return -4;
}

int main(int argc, char **argv) {
extern char *optarg;
int c;
int c, ret, complex_check = 0;

char f[256];
char *dictionary = NULL;
char *password;
char *reply;

while ( (c = getopt(argc, argv, "d:")) != EOF){
while ( (c = getopt(argc, argv, "d:c")) != EOF){
switch(c) {
case 'd':
dictionary = strdup(optarg);
break;
case 'c':
complex_check = 1;
break;
default:
usage(argv[0]);
}
@@ -43,13 +104,21 @@ int main(int argc, char **argv) {
usage(argv[0]);
}

fflush(stdin);
password = fgets(f, sizeof(f), stdin);

if (password == NULL) {
fprintf(stderr, "ERR - Failed to read password\n\n");
exit(-2);
}

if (complex_check) {
ret = complexity(password);
if (ret) {
exit(ret);
}
}

reply = FascistCheck(password, dictionary);
if (reply != NULL) {
fprintf(stderr, "ERR - %s\n\n", reply);

0 comments on commit b7eec4e

Please sign in to comment.