Online



Board Stats

  • stats Total de Usuarios: 11635
  • stats Total de Mensajes: 75993
  • stats Total de Temas: 7392
  • stats Total de Categorías: 14
  • stats Total de Foros: 67
  • stats Máx. usuarios conectados (simultáneamente): 818

Ultimo registro

Top Poster

lampi lampi
20637 Mensajes
maripuri maripuri
16488 Mensajes
kcdtv kcdtv
4040 Mensajes
betis-jesus betis-jesus
2915 Mensajes
erborricobueno erborricobueno
2038 Mensajes

Recursos









Autor Tema: Dicos WPA con wg.pl: generador que permite limitar la repetición de caracteres  (Leído 10683 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Andaba buscando la forma de disminuir el peso mis diccionarios para Orange y FTE (en varios bssid son pass de 10 caracteres). Tengo un viejo P4 y cualquier disminución representa horas a la hora de pasar con aircrack-ng mis diccionarios.
Una de las cosas que me daba rabia era ver pass tipo 0000000001 o 0000100000.
Mi idea era limitar la repetición de una misma lettra o mismo numero 3 veces en un pass y tambien impedir que haya pass dónde se repiten mas de dos veces successivamente el mismo caractere.
Crunch - por muy completa que sea - no nos permite esso
Una solucíon es este script que nos viene de Italia, obra de Matteo Redaelli ( si no me equivoco esta tambien detras del descubrimiento del algoritmo de Alice o Fastweb, hemos hablado de esto en este topic 
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
)

Código: [Seleccionar]
#!/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

}

para utilisar este script debeis tener Perl instalado (nada más simple para los que usan Xubuntu como yo o Ubunutu/Kubuntu dado que se encuentra en el "gestor de paquetes synaptic" que encontraís en "administración".)
Copiais el codigo y lo pegueis en un editor de texto sencillo tipo Gedit, Kedit, el que quereis.
Lo guaradaís, por ejemplo en vuestra carpeta de usuario, asegurandoos que se llame wg.pl
Bien, ya teneis todo listo para ejecutar el script.
Abrir una consola y entrar: perl -ruta_del_script opciones_del_script
Ejemplo, si vuestra cuenta de usuario se llama lampissimo y que habeis guardado vuestro script en esta carpeta

Código: [Seleccionar]
perl /home/lampissimo/wg-pl opciones_que_queremos
Ejemplo, quierro un diccionario de 10 caracteres con numeros y lettras de a-f, limitando a tres veces las repeticiones de un mismo caractere.

Código: [Seleccionar]
perl /home/lampissimo/wg-pl -l 10 -o 3 -u 10 -v 0123456789abcdef

A destacar el opción -o que permitte limitar la repetición de los caracteres
-c para impedir que los caracteres iguales se sigan
-r para limitar la repetición de grupos de caracteres similares (por ejemplo tener un pass con tres veces 123 tampoco es muy útil)
El script funcionna bien, creo que produce 1000 keys segondes.
Os dejo un resumen de las opciones

Citar
USAGE: perl wg.pl 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: 1
lenny creadores de diccionarios #
« última modificación: Julio 21, 2012, 15:41:50 pm por kcdtv »
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Gracias por el aporte, en serio, yo tambien andaba buscando algo así y no hubo manera. A la noche lo pruebo y te comento pero desde ya un millón.

Abril 13, 2011, 18:41:47 pm
Estoy probandolo y en principio va bien, el problema es que no sé como guardar un archivo con las claves generadas, me salen en la consola pero no me lo guarda en ningún archivo... y en las opciones no encuentro la opción de guardar, ni de darle un nombre. No será solo para trabajar en memoria?
« última modificación: Abril 13, 2011, 18:41:47 pm por BentoSouto »
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado mak74

  • Usuario
  • *
  • Mensajes: 49
Hola,

Yo también lo he probado y parece que va bien, el problema es que te lo enseña por pantalla y no veo la opción de guardarlo en un archivo (como bien dice BentoSouto)....alguien que sepa algo de perl y lo pueda mirar ?¿

Entiendo, que lo mas dificil ya esta hecho...falta que lo guarde en un archivo de texto en vez de visualizarlo por pantalla...o las dos cosas a la vez..

Un saludo.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Intenté directo añadir -w nombredemiarchivo al final del comando. Parece que se lo hatragdo, no me ha puesto nada raro como -w opción desconocida o algo por el estilo.
En el peor de los casos copiando de la consola y pegando en Gedit o algo del estilo debería ser sufficiente. Cuando se me accaba de generar el diccionario que estoy haciendo os comento que hizé/que pasó.
Rezo para no volver a reiniciar mi equipo como hizó dos veces ya hoy.
La velocidad de generación de llave no es fantastica pero deja la CPU tranquila y no lo noto.
« última modificación: Abril 13, 2011, 20:24:09 pm por kcdtv »
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado mak74

  • Usuario
  • *
  • Mensajes: 49
Hola,

he estado haciendo pruebas, con la opción -w no da error, pero no te guarda el diccionario... con la opción de File --> Save As... solo te guarda las ultimas 1054 lineas(creo recordar)  que se vean por pantalla....asi que tampoco nos sirve...

Si alguna sabe alguna otra forma de guardar los datos...porque si que parece interesante este generador de claves...

Un saludo..

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Pienso que es mas bien un generador para usar en memoria conjuntamente con aircrack-ng, por ejemplo. Mientras genera las claves el aircrack-ng, o cualquier otro, vá usando las claves generadas sin que ocupe espacio en disco. Es bueno para dejar un PC potente con un buen refrigerador un par de dias sin necesidad de tener un archivo de claves enorme. El crunch hace lo mismo, pero este tiene la opción de evitar claves redundantes y es lo que nos interesa a todos por lo que veo  :)

Lo de que vaya mas lento es lógico, cuantas mas claves intente evitar mas tardará, pero merece la pena, si tienes que tardar un poco para generar el diccionario despues te lo ahorras al usarlo todas las veces que lo uses, pues generarlo es solo una vez  ;)

He de decir que con el
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
instalado funciona tambien en windows  ;)

Lo ideal sería modificar el código para añadir una opción que guarde el archivo con un nombre como la mayoría de generadores hace. Yo no tengo ni papa de programación pero a veces mirando el código en uno... y mirandolo en otro... puede que se consiga algo uniendo lineas  :P Voy a chapucear un poco con un par de códigos que tengo por ahí pero no puedo prometer nada, ya digo que mi nivel de programación es casi nulo.

Si alguien con conocimientos se apunta...  ::)
« última modificación: Abril 14, 2011, 01:48:02 am por BentoSouto »
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Gracias por vuestras aporataciones BentoSouto y mak74...
Conocimientos no tengo pero ganas de buscar y encontrar una forma...¡Como no!  ;D
Usando Perl o bash tiene que haber forma de guardar el contenido de nuestaras consolas - y no solo las ultimas contraseña - y poder guardarlo en un fichero .txt
Pasarlo en vivo con aircrack-ng es interesante paro me interesa más poder guaradar los dicos y precomputarlos.
Ire buscando hoy mientras se sigue generando mi diccionario... No tengo corrage para parar-lo.
A ver si tenemos algo esta tarde  ;D

 
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado mak74

  • Usuario
  • *
  • Mensajes: 49
Hola,

Nunca habia programado en perl, simplemente le he añadido código para que genere un archivo llamado prueba.txt en la ruta donde tengas el archivo wg.pl
Si alguien se anima a crear una variable y que luego desde linea de comandos se pueda indicar el nombre de la base de datos perfecto (o cuando tenga un poco mas de tiempo lo intento yo..) sino seria cambiar el nombre al archivo prueba.txt una vez generado y listo !!!

Las pruebas que he hecho reduce el tamaño del diccionario a crear en un 20-25 % dependiendo de las restricciones que le introduzcas..

Os dejo el código modificado:

Código: [Seleccionar]
#!/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
open (Basededatos,">prueba.txt");
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";
print Basededatos "$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

}

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
@mak74
¡Enhorabuena para tu première como programador Perl! ¡Y gracias!
Voy a mirrar lo que has hecho porque yo no llegue mas halla de print  ;D
Sino accabo de probar el script y va perfecto. ¡Olé!
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Funciona perfectamente!! Lo de cambiar el nombre tampoco es tan importante, a mi me vale de sobra así, de hecho vale con modificar el nombre de archivo dentro del código y ponerle el que uno quiera. Un millón por el trabajo @mak74.

Un aviso, si le ponemos un string al principio y un string al final y min length 8 y max length 8 (por ejemplo) las claves generadas no serán de 8 de longitud si no de 8 + longitud de string de inicio + longitud de string final. Lo digo porque yo al menos, me lié con eso al principio  :-[
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
-n para impedir que los caracteres iguales se sigan

No acabo de entender la función de esa variable, me explico;
-o = Numero de veces que se repite un caracter (aXXXaXXXaXXaXXa tendría 5 veces "a")
-c = Número de veces que un caracter se repite consecutivamente (aaaXXXXXXX tendría 3 veces consecutivas "a")
-r = Número de repeticiones en grupo (4412312344 tendría dos repeticiones de 123 y dos de 44)
Pero la opción -n no sé de que vá, que es lo que evita? En la ayuda del programa viene:
"max. number of n-ple (AA, BBB, CCC, DDDD) :o
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Creo que es para limitar el numero de grupos de caracteres similares.
Pongamos como ejemplo las redes FTE_XXXX
Si tu limitas a 3 la repeticion de un mismo caractere y que dices que no puede haber mas de 3 caracteres similares consecutivos, tendrias aun unos cuantos pass muy improbables como
0001112223 o 3000111222 etc.
Así puedes eleminar estos pass del dico poniendo por ejemplo -n 2 (arriba hay 3 n-iple, con -n 2, solo 2 )
Es mi interpretación tampoco lo he comprobado
« última modificación: Agosto 06, 2011, 01:50:31 am por kcdtv »
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #12 en: Agosto 15, 2011, 17:25:53 pm »
Modifiqué el código incluyendo una variable (-w) para poder guardar el diccionario con el nombre que queramos:

Código: [Seleccionar]
#!/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

2011-08-15: Modificado en el foro lampiweb.com/foro para poder guardar el diccionario con un nombre elegido. Opción -w


=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:w:z:', \%opts);


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

my $nome = $opts{'w'};
# setup parameters
open (Basededatos,">$nome");
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";
print Basededatos "$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")
-w Filename
-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

}

Pues eso, la sintaxis es sencilla, "gw.pl [opciones] -w nombredelarchivo"

Incluí una referencia a las modificaciones que hicimos en este hilo ;)
Citar
=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

2011-08-15: Modificado en el foro lampiweb.com/foro para poder guardar el diccionario con un nombre elegido. Opción -w

Estoy pensando en hacerle una GUI para windows, el problema es que habría que instalar Active Perl para que pudiese correr el script, y aunque tampoco es mucho problema lo ideal sería hacerlo sin el, existe un programa llamado
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.
pero a mi no me va, al intentar compilarlo me da un error; "Demasiado grande para la memoria", y así con todos los archivos perl con los que probé, incluso con algunos que ya fueron compilados en exe por su autor (el stringenerator, por ejemplo) y a mi me da el mismo error. El programa es de pago y la versión free de descarga (la que yo tengo) es posible que esté limitada, supongo que de ahí el problema :(

Así y todo si nadie sabe otra manera de pasarlo a .exe lo haré con el script em perl siendo necesario instalar Active Perl para ejecutarlo.

Tambien estoy intentando incluir una opción con la que podamos iniciar la generación del diccionario a partir de la clave que queramos, de esta forma es como si tuviera "pause"  8)  pero bueno, no prometo nada que por el momento no me sale  ::)

Agosto 15, 2011, 19:30:19 pm
Por cierto, que todas las vueltas que dimos para poder guardar todo en un archivo y bastaba con poner al final ">nombredearchivo" (sin comillas pero con el símbolo > pegado al nombre)  ;D y la cosa es que no se si así vá mas rápido, porque acabo de hacerlo para unas pruebas que estoy haciendo y casi escribe a 1Mb por segundo  :o y lo hace sin presentar las claves generadas por consola, igual es eso lo que lo hace mas rápido...
kcdtv, si lees esto a ver si puedes probar tu esto último, igual no es nada pero ahora no tengo tiempo de probar.
« última modificación: Agosto 15, 2011, 19:30:19 pm por BentoSouto »
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #13 en: Agosto 19, 2011, 02:13:45 am »
El "viejo" no me iba muy rápido (no eran 1mb-s, era mucho menos). Esta noche haré una prueba y te comentaré. (con el mismo ordenata, un centrino simple a 1.8 Ghz. Otra vez, gracias por los aportes  ;)
No se que decirte:
el opción -w funciona d.p.m. pero a mi me sigue apareciendo las claves en consola y no noto gran diferencia en la velocidad.
Buena mejora de toda forma con el opción -w, gracias compi
« última modificación: Agosto 19, 2011, 02:37:02 am por kcdtv »
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #14 en: Agosto 21, 2011, 22:04:55 pm »
No se que decirte:
el opción -w funciona d.p.m. pero a mi me sigue apareciendo las claves en consola y no noto gran diferencia en la velocidad.
Buena mejora de toda forma con el opción -w, gracias compi
Con la opción -w la velocidad es la misma.
Para que no aparezcan las claves en consola debes poner ">diccionario.txt" por vez de "-w diccionario.txt", así con el símbolo > antes del nombre que le quieras poner y sin la -w, estuve probando y me hace un diccionario de 9 Mb en apenas unos 3 o 4 segundos ;)
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #15 en: Agosto 22, 2011, 11:59:14 am »
Ok bentosouto, es que me gustaba tanto el -w que quería usarlo  ;D...
Pues lo estoy probando y la cosa va mucho mejor así, no me salen los números en consola y observo una mejora del 100% en el rendimiento (o sea va dos veces más rápido, quizás un poco más). Y aún no se me ha disparado el ventilador ruidoso que tengo en el portátil , que con el "old script" se me disparaba en seguida.
Mientras escribía acaba de disparase...  :P y la velocidad ha vuelto a ser lo que era.
Es que voy muy justo de recursos con el portátil. ¡Pero si que he notado una mejora durante un minuto!
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #16 en: Agosto 22, 2011, 14:37:00 pm »
Probé a hacer un dico para jazztel_XX (wpa) con un pc pequeño tambien y al principio iba como un rayo y a los 5 o 6 minutos bajó de velocidad, igual que a ti. Pero aun así llegó a los casi 2Gb en menos de 15 minutos, no lo cronometré exactamente pero eso, entre 10 y 15 min. Y teniendo en cuenta que es el único en evitar las claves redundantes no está nada mal ;)
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #17 en: Agosto 22, 2011, 16:04:56 pm »
¡2 GB en 15 minutos es muy bien Bentosouto! Good one  ;D
Por curiosidad ¿Que micro-procesador tiene tu portátil?
Luego, Instalé Perl para utilisar este generador y instalé un par o tres paquetes y que veo hay muchissimos paquetes que no tengo instalados. ¿Has puesto un paquete en particular, o varios?
Saludos y gracias por las mejoras.
Lo voy a llamar en mi portatíl "gw.pl Benosouto edition"  ;D
Volve?e a probar esta noche, sin conectarme a internet, a ver que pasa.

« última modificación: Agosto 22, 2011, 16:10:39 pm por kcdtv »
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #18 en: Agosto 22, 2011, 16:45:02 pm »
Por curiosidad ¿Que micro-procesador tiene tu portátil?

Pentium 4 a 1.8 GHz.
He de probarlo esta noche con un doble núcleo a 1.8 a ver que tal. No es gran cosa pero el aircrack, por ejemplo, en el mío vá a 75 keys/s y en ese de doble nucleo va a mas de 500 keys/s.

Luego, Instalé Perl para utilisar este generador y instalé un par o tres paquetes y que veo hay muchissimos paquetes que no tengo instalados. ¿Has puesto un paquete en particular, o varios?

Para Linux no sé que paquetes hay que instalar, pero que yo sepa cualquier distro viene ya con todo para ejecutar perl. Para Windows yo uso Activeperl y va de maravilla, no me hizo falta instalar mas nada, en cuanto se instala los archivos con extensión *.pl pasan a tener un icono propio y todo ;)

Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.


A la derecha de la página hay tres enlaces en azul, la de abajo de todo "Download Activeperl Free Community Edition" ahí escojes x86 o x64 según tu procesador.

Lo voy a llamar en mi portatíl "gw.pl Benosouto edition"  ;D

 :D Mak74 creó la función, yo creé la variable para elegir nombre desde la linea de comandos y tu descubriste y compartiste el generador que yo mira que busqué algo así y nada. Compartir en comunidad es la clave  8)
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado tresal

  • Usuario
  • *
  • Mensajes: 43
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #19 en: Septiembre 22, 2011, 01:06:20 am »
Hola BentoSouto,me harias el fabor de pasarme un diccionario para Fte-xxxx, de 10 caracteres ,de A ,a la, F, y de 0 a 9,que no se repitan mas de 3.
esque por mas que intento hacerlo yo no puedo , con el script,no hay manera , istalo perl,pero nada no me abre los comandos .

Si me haces ese fabor , o un diccionario que tengas tu ya para FTE-XXXX, gracias de antemano y perdona si te molesto.

Nota:lo escribo aqui por que no me deja mandar MP , y no se el porque.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #20 en: Septiembre 22, 2011, 05:15:51 am »
¿No crees que sería mejor que explicas lo que haces para que te ayudemos y que hagas tu mismo tus diccionarios?
Otro detalle: ¿sabes el tiempo que toma generar lo que pides, comprimirlo en varios ficheros de 200 mb y subirlo en la red para que lo tehgas tu?
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #21 en: Septiembre 22, 2011, 16:25:12 pm »
Para ayudar a los demás empieza a ayudarte a tu mismo; o sea exponga tu problema y prueba el generador y no busques a que alguien te lo de todo hecho.
 De esto se trata, "ayudarnos", no de que te lo hagamos.
Y antes de todo lee lo que se te dice : te digo "varios ficheros de 200mb", o sea no es uno, sino varios, muchos.
Esso si te informarías un poco y lees a cerca del tema, lo tendrías que haber adivinado solo, que no hablamos de un ficherito de 200 mb, sino de muchísimo más peso..
Nunca he dicho que he generado tal diccionario (no voy a dejar mi ordenador bloqueado una semana o varias haciendo esso), si lo hubiera hecho estaría en la red, publicado aquí mismo, en lampiweb.com.
Dicen que es mejor aprender a alguien a pescar que dar le un pescado, eso es la liña que se sigue aquí. Bentosouto te ha regalado luckygen generator, te ha modificado este script para que puedas usarlo y guardar tus diccionarios, te ha regalado otra creación suya BS-Codegen codificador, ta ha regalado diccionarios para W-RLANXX...  Y ahora le pides que te genere tus diccionarios con el script que tienes aquí mismo... En serio, ¿no te parece que te estas pasando?
Venga tío, cambia de actitud, empieza la instalación desde cero y explica lo que haces y dinos lo que te falla y te ayudamos, otra cosa no obtendras aquí (por lo menos de mi parte). El script funciona, tanto en linux cómo windows, fue probado aquí y en otros sitios, o sea algo haces mal y lo podemos averiguar juntos si haces un pequeño esfuerzo.
Ayúdanos a ayudarte, sino no va ser possible.  ;)
Aqui tienes un commentario interessante de ubuntreck, se habla de un diccionario con 8 digitos, o sea dos menos quel que me pides que te haga, lee con attención
Citar
si las ono6x tienen 8   letras en  la wpa, se podria hacer un  diccionario con todas las variables  que en este caso son una permutacion de 8= 1*2*3*4*5*6*7*8=6720, un diccionario de estos no creo que cueste  de pasarle el aircrack.
Las cuentas son otras: 26^8
A 1500 pass/sec, se tardan 1611 días en pasar todo el diccionario
         
Y quitando repeticiones, ganaras como mucho 20 por ciento o sea te quedas en unos 1300 días.
Además eso es exponencial, si añades un dígito más son muchísimas más posibilidades. Pon 26^10 en una calculadora y mirra la cifra que sale.
 
« última modificación: Septiembre 22, 2011, 17:03:57 pm por kcdtv »
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado BentoSouto

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 352
    • Bento Souto
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #22 en: Septiembre 22, 2011, 17:46:16 pm »
Hola BentoSouto,me harias el fabor de pasarme un diccionario para Fte-xxxx, de 10 caracteres ,de A ,a la, F, y de 0 a 9,que no se repitan mas de 3.
esque por mas que intento hacerlo yo no puedo , con el script,no hay manera , istalo perl,pero nada no me abre los comandos .

Si me haces ese fabor , o un diccionario que tengas tu ya para FTE-XXXX, gracias de antemano y perdona si te molesto.

Nota:lo escribo aqui por que no me deja mandar MP , y no se el porque.

El dico completo seria imposible de generar, ni por el tiempo que llevaría hacerlo ni por el tamaño que ocuparía ni por el tiempo que llevaría pasarlo a un handshake. Y no digo que no tenga paciencia, es que sería literalmente imposible. Si el script no te vá será que lo guardaste mal o no sé, tienes que copiar TODO el texto y guardarlo con extensión .pl, despues tienes que ir mediante una ventana de msdos al directorio donde esté guardado y ejecutar los comandos necesarios. Te aseguro que funciona perfectamente, pero ya te digo que generar el dico que pides es literalmente imposible, en caso hipotético que fuera posible sería imposible guardarlo porque no hay disco duro en el mundo capaz de almacenar algo que posiblemente ocupe miles de PETA bytes(un millón de Giga bytes), y en caso hipotético de poder guardarlo no se lo podrías pasar a un handshake ni en cien vidas  :o
Espero que lo entiendas. Este script vale para reducir en mas o menos un 20% un dico que completo te ocupe demasiado, por ejemplo 2 Gb quedaría en 1,6Gb y no perderías tiempo probando claves redundantes del tipo 0000000001, 0000000002..., pero no para generar dicos imposibles, "imposible" menos un 20% sigue siendo "imposible"  :'(
Un saludo.
Si los que descubren como romper una protección no lo hiciesen público seguiríamos comunicándonos con señales de humo. Compartir es avanzar.

Desconectado kcdtv

  • Grupo de trabajo
  • Usuario
  • *****
  • Mensajes: 4040
    • crack-wifi.com
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #23 en: Septiembre 22, 2011, 18:09:36 pm »
Es demasido con 2x26 sale una burrada de calculo
Eso te decía en mi primera respuesta, no es que no queremos ayudarte sino que lo que pides es "una burrada"
Si usas linux, sigue bien los pasos que doy en el primer post. Si te da un mensage de error o que te falta una libreria o un paquete, sigue las instrucciones en consola, si no funciona, vuelve te por aquí con una captura de pantalla de la consola y pon la aquí. 
Sorry, you are not allowed to see this part of the text. Por favor ingresa o regístrate.

Desconectado tresal

  • Usuario
  • *
  • Mensajes: 43
Re:Dicos WPA con gw.pl: generador que permite limitar la repetición de caracteres
« Respuesta #24 en: Septiembre 22, 2011, 21:11:21 pm »
Gracias de todas formas BentoSouto y kcdtv.


Ya lo he consegido , lo esta generando, el problema tan tonto era que lo nombre wg.lg, y al ponerlo wg-lg, no me lo reconocia , un simple guion,por un punto ,jejejeje.... ;D
Ahora a ver cuando termina para guardalo, esa es otra jajaja.

Gracias.

« última modificación: Septiembre 22, 2011, 21:29:04 pm por tresal »