Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Criando uma wordlist

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    Tutorial Criando uma wordlist

    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.

    Código:
    #!/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.

    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Abraços []'

    Similar Threads

  • Font Size
    #2
    Valeu Bhior;
    Interessante seu Tutorial.

    Abraço;
    Mesmo longe, eu estou perto. Guia do Hacker 4ever.

    Comment


    • Font Size
      #3
      bhior ta virado num mói de quentro, fazendo tuto sobre BT

      parabéns cumpx
      ~# Criado pela [IN]Segurança #~

      Comment

      X
      Working...
      X