Bom pessoal, resolvi cria um tutorial sobre wordlist, quem hoje em dia não precisar de uma? rsrs...
Encontrei um script em perl que faz todo o trabalho por nos.
O script e capaz de fazer varias combinações inclusive de quebrar senha WPA, alem de uma grande extensão de palavras. O nome do script em perl e Words Generator no português Gerador de Palavras, salve o script abaixo com a extensão .pl, eu sevei com as siglas do nome WG.

Code:
#!/usr/bin/perl

=head1 NAME

wg.pl


=head1 AUTHOR

Matteo Redaelli
E-MAIL: matteo.redaelli@libero.it
WEB:    http://digilander.iol.it/reda


=head1 DESCRIPTION

This is a Word Generator: you can apply some useful options to filter the 
words

=head1 USAGE

type   perl wg.pl -h


=head1 HISTORY


2000-01-06: the first lines of this script

2000-01-11 added getopt

2000-01-21: adjusted default parameters

2002-03-05: new option -n

2002-03-06: new option -s

2002-03-07: reorganization of all source code, more documentation
	


=head1 LICENSE

This package is free software; you can redistribute it and/or
modify it under the same terms as Perl itself, i.e., under the
terms of the "Artistic License" or the "GNU General Public License".


=head1 DISCLAIMER

This package is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

See the "GNU General Public License" for more details.


=cut

use Getopt::Std;
use strict;
#use integer;

sub char2string
{
# string generator: if I pass 'a' and 5, I'll get 'aaaaa'
	sprintf "%s", @_[0]  x @_[1];
}

sub occurs
{
  my $pat = @_[0];
  my $astring = @_[1];

  my $tot = $astring =~ s/$pat//g;

#	print "tot $tot\n";
#
  return $tot;
}

sub few_repeatitions
{
   my $astring = @_[0];
   my $max = @_[1];
   my $len =  length( $astring );
   my $tot = 0;

   my $mid = int( $len / 2);


   for ( my $step = 2; $step <= $mid; $step++) {
      for ( 0 .. $len - $step ) {
	my $letters = substr( $astring, $_, $step);
#	print "$letters\n";
	$tot = occurs( $letters, $astring);
	return $tot if $tot > $max;
     }
   }  
   return 0;
}

sub nple
{
	my $astring = @_[0];
	my $len = length( $astring );
	my $tot = 0;
	my $in = 0;
	my $last = ' ';

	

       for ( 0 .. $len - 1) {
               my $letter = substr( $astring, $_, 1);

#	print "$astring  $letter $last\n";
		if ( ($letter cmp $last)  == 0) {
#			print "$letter =  $last, $in, $tot";
			if ($in == 0) {
				$in = 1;
				$tot++;
			}
			
		} else {
			$in = 0;
		}		

		$last = $letter;
       }
	return $tot;

}

sub substring
{
	my $string1 = @_[0];
	my $string2 = @_[1];

	$_ = $string2;

	if ( /$string1/ ) {
		return 0;
	}
	else {
		return 1;
	}
}



my %opts;

getopts('a:c:ehl:n:o:r:tu:v:z:',  \%opts);


usage(0) if $opts{'h'};
$opts{'u'} and $opts{'v'} or usage(1);

# setup parameters

my $va_list = $opts{'v'};
my @va_list = split( //, $va_list ); # convert string to an array


my $min_depth = $opts{'l'} ? int($opts{'l'}) : 1;
my $max_depth = $opts{'u'} ? int($opts{'u'}) : 1;

usage(2) if $min_depth > $max_depth;

my $prefix = $opts{'a'} ? $opts{'a'} : '';
my $postfix = $opts{'z'} ? $opts{'z'} : '';
my $max_occurs = $opts{'o'} ? int($opts{'o'}) : $opts{'u'};
my $max_cons = $opts{'c'} ? int($opts{'c'}) : $opts{'u'};
my $max_nple =  $opts{'n'};
my $max_reps =  $opts{'r'};

usage(3) if $min_depth < 1 || 
	$max_depth < 1 || 
	$max_occurs < 1 || 
	$max_cons < 1 || 
	$max_nple < 0 || 
	$max_reps < 0;

if ($opts{'t'}) { 
	print "Options:\n";
	foreach my $key (sort keys %opts) 
		{ print "$key -> $opts{$key}\n"; }
	print "Global vars:\n";
	print_vars();
}


for ($min_depth..$max_depth) {
	wg( $_, "");
}

sub print_vars
{
	print "min_depth = $min_depth\n";
	print "max_depth =  $max_depth\n";
	print "max_occurs = $max_occurs\n";
	print "max_cons = $max_cons\n";
	print "max_nple = $max_nple\n";
	print "max_reps = $max_reps\n";
}

#
# word generator
#
sub wg
{
	my $max_depth = @_[0];
	my $myprefix = @_[1];
	my $elem;
	if ($max_depth == 0 ) {
		print "$prefix$myprefix$postfix\n";
		if ( $opts{e} == 1) {
			system "$prefix$myprefix$postfix\n";
		}
	}
	else {
#		print " n = $opts{'n'} r = $opts{'r'} \n";
#


#		suggestion: the generation of the words is more variuos if
#		I change the order of the list of the letters (@va_list)

		foreach $elem (@va_list) {

			my $newstring = "$myprefix$elem";	

			return if ( $opts{'c'} && 
				 substring(char2string( $elem , $max_cons), $myprefix ) == 0);
			return if(  $opts{'n'} && nple( $newstring ) > $max_nple);
			return if(  $opts{'r'} &&
				few_repeatitions( $newstring, $max_reps) != 0  );
			return if ( $opts{'o'} && occurs( "$elem", $newstring) > $max_occurs ); 
			
			wg( $max_depth -1, "$myprefix$elem");	
		}
	}
}

sub usage
{
	my $rc = @_[0];

	die <<END_USAGE

USAGE: perl $0 options

options are:
	-a string: prefix
	-c number: max consecutive letters (how many consecutive 'a' do you want?)
	-e : submit the output string to the operating system
	-h : help
	-l number: min length of the word
	-o number: max number of occurrencies of a letter 
	-n number: max number of n-ple  (AA, BBB, CCC, DDDD)
	-r number: max number of repeatitions (ABCABABBCDBCD has 5 repeatitions: 3 reps of AB and 2 of BCD)
	-t : trace on
	-u number: max length of the word
	-v string: list of valid characters (es, "01" "abcdef")
	-z string: postfix

possible return code are:
	0, ok
	1, not all parameters
	2, min length (-l) is greater than max lenght (-u)
	3, at least one parameter is lower than 1
Return code: $rc
END_USAGE

}
Exemplo de como utilizar o script:


No meu caso, como uso Linux salvei o arquivo e de a permissão de torno-lo executável "#chmod +x wg.pl" ou poderia usar a seguinte linha "perl wg.pl" que executaria o script da mesma forma. No windows e so instalar o ActivePerl.

Usei em esse comando:

./wg.pl -l 8 -u 64 -v abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWX YZ0123456789\`\~\!\@\#\$\%\^\&\*\(\)\-\_\+\=\[\]\;\’\,\.\/\<\>\?\:\”\{\}\|\ > words.txt

-l --> Tamanho minimo da palavra
-u --> Tamanho máximo da palavra
-v --> Listar os caracteres que eu vou querer na minha wordlist
> words.txt --> E para salva as palavras(Onde ta words.txt pode ser qualquer nome).


Então minha wordlist vai no minimo 8 caráteres e no máximo 86.

Link do projeto

Abraços []'