User Tools

Site Tools


random_password_generator
  - !/usr/bin/perl
  -  ==============================================================================
  -  Name         : random_password.pl
  -  Description  : Generates a random password according to specific rules
  - 
  -  Notes        : none
  - 
  -  Modification History
  -  ====================
  -  When      Who               What
  -  ========= ================= ==================================================
  -  16-APR-13 Stuart Barkley    Created
  -  ==============================================================================

$DEBUG=0;
my $password=//;
my $RULES_PASSED=0;

sub debug {
    my $msg = $_[[0]];
    $DEBUG && print $msg;
}



  -  -------------------
  -  Generate a password
  -  -------------------
sub generate_password {
    my ($pwlen) = @_;
    return `head /dev/urandom | uuencode -m - | sed -n 2p | cut -c1-\\${pwlen:-12};`
}


while (! $RULES_PASSED) {

    $password=generate_password;
    chomp($password);

    # --------------------
    # Apply business rules
    # --------------------

    #1. Has to start and end with an alphabetic character
    if ($password !~ m/^[[A-z]].*[[A-z]]$/) {
       debug "$password failed rule 1\
";
       next;
    }


    #2. Has to contain at least 2 upper case characters
    if ($password !~ m/[[A-Z]].*[[A-Z]]/) {
       debug "$password failed rule 2\
";
       next;
    }

    #3. Has to contain at least 2 lower case characters
    if ($password !~ m/[[a-z]].*[[a-z]]/) {
       debug "$password failed rule 3\
";
       next;
    }

    #4. Has to contain at least 2 digits
    if ($password !~ m/\\d.*\\d/) {
       debug "$password failed rule 4\
";
       next;
    }

    #5. Has to contain between 10 and 12 characters
    if ($password !~ m/.{10,12}/) {
       debug "$password failed rule 5\
";
       next;
    }

    # -----------------
    # Apply other rules
    # -----------------

    #6. Has to contain only printable characters
    if ($password !~ m/[[ -~]]/) {
       debug "$password failed rule 6\
";
       next;
    }

    #7. Cannot contain certain special characters
    if ($password =~ m|[[\\/\\&\\*\\$]]|) {
       debug "$password failed rule 7\
";
       next;
    }

    $RULES_PASSED=1;

}

print $password;
random_password_generator.txt · Last modified: 2019/01/30 11:32 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki