x-haui

perl password generator

Another password generator, written in perl. The special thing about this script is, that it's possible to specify the characters, that will occur in the password

Download

Source


  1 #!/usr/bin/perl
  2 
  3 use strict;
  4 use warnings;
  5 use Getopt::Long;
  6 
  7 Getopt::Long::Configure ("bundling", "gnu_compat");
  8 
  9 my $version = 0.1;
 10 my %options = map {$_, 0} qw(upper lower num special alpha alphanum all stdin version help);
 11 
 12 GetOptions (    "upper|u" => \$options{'upper'},
 13                 "lower|l" => \$options{'lower'},
 14                 "num|n" => \$options{'num'},
 15                 "special|s" => \$options{'special'},
 16                 "alpha" => \$options{'alpha'},
 17                 "alphanum" => \$options{'alphanum'},
 18                 "all" => \$options{'all'},
 19                 "stdin" => \$options{'stdin'},
 20                 "help|h" => \$options{'help'},
 21                 "version|v" => \$options{'version'},
 22          );
 23 
 24 if ($options{'help'} == 1){
 25         print  "perlpwd - Generates a random password from a given set of characters\n" .
 26                 "using perl's rand() function\n" .
 27                 "\nUsage:" .
 28                 "\tperlpwd [options...] [passwordlength]\n" .
 29                 "If no passwordlength is given, the defaultlength (12 characters) will be used\n\n" .
 30                 "Options:\n" .
 31                 "  -u, --upper\t\tUse upper case letters\n" .
 32                 "  -l, --lower\t\tUse lower case letters\n" .
 33                 "  -n, --num\t\tUse all digits\n" .
 34                 "  -s, --special\t\tUse special characters\n" .
 35                 "      --alpha\t\tUse upper and lower case characters\n" .
 36                 "      --alphanum\tUse all letters and digits\n" .
 37                 "      --all\t\tUse all characters (default)\n" .
 38                 "      --stdin\t\tRead characters from STDIN\n" .
 39                 "  -h, --help\t\tPrint this help and exit\n" .
 40                 "  -v, --version\t\tDisplay the program version and exit\n" ;
 41                 exit 0;
 42         }
 43 
 44 if ($options{'version'}) {
 45         print "perlpwd  - version $version\nAuthor: Haui, contact haui45\@web.de\n";
 46         exit 0;
 47 }
 48 
 49 ########## define the character arrays ###########
 50 my @upper = qw(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z);
 51 my @lower = qw(a b c d e f g h i j k l m n o p q r s t u v w x y z);
 52 my @num = qw(0 1 2 3 4 5 6 7 8 9 );
 53 no warnings;
 54 my @special = qw( . : ; - _ # ' + * ~ ^ ° ! " § $ % & /  = ? \ } ] [ { , ( ) < > | );
 55 use warnings;
 56 my @characters;
 57 #################################################
 58 
 59 
 60 #**evaluate the commandline options****
 61 if ($options{'alphanum'}){
 62         $options{'num'} = 1;
 63         $options{'upper'} = 1;
 64         $options{'lower'} = 1;
 65 }
 66 
 67 if ($options{'alpha'}){
 68         $options{'upper'} = 1;
 69         $options{'lower'} = 1;
 70 }
 71 
 72 if ($options{'all'}){
 73         $options{'num'} = 1;
 74         $options{'upper'} = 1;
 75         $options{'lower'} = 1;
 76         $options{'special'} = 1;
 77 }
 78 
 79 if ($options{'num'}){
 80         @characters = (@characters, @num);
 81 }
 82 if ($options{'lower'}){
 83         @characters = (@characters, @lower);
 84 }
 85 
 86 if ($options{'upper'}){
 87         @characters = (@characters, @upper);
 88 }
 89 if ($options{'special'}){
 90         @characters = (@characters, @special);
 91 }
 92 if ($options{'stdin'}){
 93         my $input="";
 94         while(my $line = <STDIN>){
 95                 chomp $line;
 96                 $input .= $line;
 97         }
 98         chomp $input;
 99         undef @characters;
100         @characters = split //, $input;
101 
102         #delete duplicate entries
103         my %hash = map{$_, 1} @characters;
104         undef @characters;
105         @characters = keys %hash;
106         #end
107 }
108 
109 # use all characters if nothing else is defined
110 unless (@characters){
111         @characters = (@num, @special, @lower, @upper);
112 }
113 
114 #******************************************
115 
116 my $tmprand = int(rand(75)) + 25;
117 
118 #randomize the array 
119 for (my $i = 0; $i <= $tmprand; $i++){
120         @characters = sort{int(rand(2))}(@characters);
121 }
122 
123 
124 my $password = "";
125 my $passwordlength = 12;
126 if ($ARGV[0]){
127         $passwordlength = int($ARGV[0]);
128 }
129 
130 #generate the password
131 for (my $i=0; $i<$passwordlength; $i++){
132         $password .= $characters[int(rand($#characters + 1))];
133 }
134 
135 print "$password\n";

bash password generator

A simple shell script, that generates a random password from a given set of characters.

Download

Source


 1 #!/bin/bash
 2 
 3 array=(A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 
1 2 3 4 5 6 7 8 9 0 ! - _ § $ % '&' / = ? ';' , . : '|' '<' '>'); 4 5 i=0; # Laufvariable 6 j=${#array[*]}; # Arraylaenge, d.h. Anzahl der Elemente 7 declare -a password; # Zielarry deklarieren - nicht unbedingt noetig 8 9 10 if (( $# != 1 )) # Falsche Anzahl an Aufrufparametern 11 then 12 echo "Fehler: Bitte eine positive Integer-Zahl als Argument übergeben" 13 echo Usage: ./password password_length 14 exit 1 15 fi 16 if [ $1 = "--help" ] # Hilfe... 17 then 18 echo Script zum Erstellen von Passwörtern variabler Länge 19 echo Usage: ./password password_length 20 exit 0 21 fi 22 23 if [ "${1//[^0-9]/}" == "$1" ] # ueberpruefen, ob PAramter eine Zahl ist 24 then 25 echo "Passwort wird erstellt..." 26 echo 27 else 28 echo "Der übergebene Paramteter ist keine positve Zahl!" 29 echo Usage: ./password password_length 30 exit 1 31 fi 32 33 34 while (( $i < $1 )) # solange Laufvariable kleiner als Laengenparamter ist.... 35 do 36 nummer=`od -w1 -t d1 -A n /dev/urandom | head -1 | sed 's/^[ \t]*//' | sed 's/-//g'` # nummer ist eine Pseudozufallszahl 37 while (( $nummer > $j )) # solange die Nummer kleiner als Arraylaenge ist, Nummer neu erstellen 38 do 39 nummer=`od -w1 -t d1 -A n /dev/urandom | head -1 | sed 's/^[ \t]*//' | sed 's/-//g'` 40 done 41 password[$i]=${array[$nummer]}; # andernfalls Arrayelement Nummer "nummer" auswählen && passwordelement i zuweisen 42 #i=`expr $i + 1` 43 (( i++ )) 44 done 45 46 47 echo ${password[*]} | sed 's/ //g'