]> eyrie.org Git - kerberos/krb5-strength.git/blob - cracklib/genrules.pl
Make xmalloc diagnostic suppression conditional
[kerberos/krb5-strength.git] / cracklib / genrules.pl
1 #!/usr/local/bin/perl
2
3 ###
4 # This program is copyright Alec Muffett 1997. The author disclaims all
5 # responsibility or liability with respect to it's usage or its effect
6 # upon hardware or computer systems, and maintains copyright as set out
7 # in the "LICENCE" document which accompanies distributions of Crack v5.0
8 # and upwards.
9 ###
10
11 %perms = ();
12
13 sub Permute
14 {
15     my $depth = shift;
16     my $i;
17
18     if ($depth == 0)
19     {
20         @stack = ();
21     }
22     for ($i = 0; $i <= $#set; $i++)
23     {
24         $stack[$depth] = $set[$i];
25
26         if ($depth == $#set)
27         {
28             %output = ();
29             foreach (@stack) 
30             { 
31                 $output{$_}++; 
32             }
33             $perm = join(" ", sort(keys(%output)));
34             $perms{$perm}++;
35         }
36         else
37         {
38             &Permute($depth + 1);
39         }
40     }
41 }
42
43 @maps = ([ '/$s$s', '/0s0o', '/2s2a', '/3s3e', '/5s5s', '/1s1i', '/4s4a' ],
44          [ '/$s$s', '/0s0o', '/2s2a', '/3s3e', '/5s5s', '/1s1i', '/4s4h' ],
45          [ '/$s$s', '/0s0o', '/2s2a', '/3s3e', '/5s5s', '/1s1l', '/4s4a' ],
46          [ '/$s$s', '/0s0o', '/2s2a', '/3s3e', '/5s5s', '/1s1l', '/4s4h' ]);
47
48 @set = (0 .. 5);
49
50 # why be elegant when you can use brute force?  moreover, it's easier
51 # to think brute-force at 1am in the morning, and leaves you with time
52 # for coffee...
53
54 &Permute(0);
55
56 foreach $perm (sort(keys(%perms)))
57 {
58     foreach $aref (@maps)
59     {
60         foreach $i (split(" ", $perm))
61         {
62             print ${$aref}[$i];
63         }
64         print "\n";
65     }
66 }
67
68 exit 0;