elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11
91  Programación / Scripting / Re: [PERL]script corrompe archivo en: 23 Junio 2013, 14:34 pm
Los caracteres '0D' podrían ser los caracteres de Retorno de carro, en el sistema operativo Windows, o Nueva línea, en los Mac OS.

El programa hace una copia literal del archivo, así que los caracteres '0D' deberías verles también en el archivo original.

Si solo quieres eliminar los caracteres '0D', lo que puedes hacer es filtrarles:

Código
  1. $file_contents =~ s/\0x0D//g;

Pero lo mejor sería saber el formato del archivo de origen, para hacer una conversión más correcta.

Saludos desde Perl en Español.
92  Programación / Scripting / Re: ayuda con un intento de bruteforce en PERL en: 4 Septiembre 2012, 21:55 pm
¡Ah!, quizás el problema sea

if($fondo ne "Login failed"){


Es casi seguro que $fondo contengo algo más que "Login failed".

Quizás con una expresión regular...

Código
  1. if ($fondo !~  /Login failed/) {

Otro detalle: mueve el $i++ a la primera parte del if(), no al else{}.
93  Programación / Scripting / Re: ayuda con un intento de bruteforce en PERL en: 3 Septiembre 2012, 11:37 am
Después del $i++; pon un

last;
94  Programación / Scripting / Re: [Perl] Buscador de sueños 0.1 en: 4 Abril 2012, 22:13 pm
¡Buen aporte!

Esta es otra versión, un poco más corta...

Código
  1. #!/usr/bin/perl
  2. use Mojo::UserAgent;         # Nuestro agente
  3. use utf8::all;               # Las salidas y entradas serán en utf-8
  4.  
  5. $ua = Mojo::UserAgent->new(name => 'Mozilla/5.0', request_timeout => 5);
  6.  
  7. print "\n\n-- == Buscador de sueños == --\n\n";
  8. print '[+] Palabra : '; $_ = <>; chomp;
  9.  
  10. print $ua->get("http://www.mis-suenos.org/interpretaciones/buscar?text=$_")->res->dom("li")->first->text;
  11.  
  12. print "\n\n(C) Doddy Hackman 2012\n\n"; <>;
  13.  
95  Seguridad Informática / Wireless en Linux / Re: generador claves en perl en: 28 Marzo 2012, 01:44 am
El segundo código, si solo consiste en recorrer los valores numéricos entre 00000 y el 99999, vale ponerlo como
Código
  1. #!/usr/bin/perl
  2. open my $FILEHANDLE, ">>", "wpakey-jazztel.txt"  or  die 'cannot open file!';
  3.  
  4. for my $WAP_KEY ( "00000" .. "99999" ) {
  5.    print $FILEHANDLE $WAP_KEY , "\n";
  6. }
  7.  
  8. close $FILEHANDLE;
Además, dejamos fuera del bucle las sentencias open() y close(), por lo que se ejecutará mucho más rápido.

En el primer código hay un error: falta la 'P'. Y es demasiado largo para lo que se quiere hacer.

Esta es una versión un poco más corta:
Código
  1. #!/usr/bin/perl
  2. use Modern::Perl '2012';
  3. use autodie;
  4. use Algorithm::Combinatorics 'variations_with_repetition';
  5.  
  6. my @data = ( 'A' .. 'Z', '0' .. '9');
  7.  
  8. my $iterador = variations_with_repetition(\@data, 16);
  9.  
  10. open $fh, '>', 'fichero_wpakey.txt';
  11.  
  12. while (my $v = $iterador->next) {
  13.    say $fh @{$v};
  14. }
  15.  
  16. close $fh;
  17.  
P.D.: El fichero resultante es realmente grande... 36^16 = 7,95866111 × 1024. Ocho cuatrillones de claves... Dudo mucho que se pueda generar un archivo de 135 yottabytes, en un ordenador casero...  ;D
96  Programación / Scripting / Re: Es dificil o imposible? en: 22 Marzo 2012, 00:21 am
Ahora estoy un poco dormido, pero creo que la solución es esta:
Código
  1. my $visto;
  2.  
  3. for my $a1 (1 .. 20) {
  4.    for my $a2 (1 .. 20) {
  5.        for my $a3 (1 .. 20) {
  6.            for my $a4 (1 .. 20) {
  7.  
  8.                my @ordenados = sort { $a <=> $b } $a1, $a2, $a3, $a4;
  9.  
  10.                # salimos si hay coincidencia
  11.                next if $ordenados[0] == $ordenados[1]
  12.                     or $ordenados[0] == $ordenados[2]
  13.                     or $ordenados[0] == $ordenados[3]
  14.                     or $ordenados[1] == $ordenados[2]
  15.                     or $ordenados[1] == $ordenados[3]
  16.                     or $ordenados[2] == $ordenados[3]
  17.                ;
  18.  
  19.                # salimos si hay coincidencia por pares
  20.                next if $visto{"$ordenados[0]-$ordenados[1]"}
  21.                     or $visto{"$ordenados[0]-$ordenados[2]"}
  22.                     or $visto{"$ordenados[0]-$ordenados[3]"}
  23.                     or $visto{"$ordenados[1]-$ordenados[2]"}
  24.                     or $visto{"$ordenados[1]-$ordenados[3]"}
  25.                     or $visto{"$ordenados[2]-$ordenados[3]"}
  26.                ;
  27.  
  28.                # recordamos todos los pares nuevos
  29.                $visto{"$ordenados[0]-$ordenados[1]"} =
  30.                $visto{"$ordenados[0]-$ordenados[2]"} =
  31.                $visto{"$ordenados[0]-$ordenados[3]"} =
  32.                $visto{"$ordenados[1]-$ordenados[2]"} =
  33.                $visto{"$ordenados[1]-$ordenados[3]"} =
  34.                $visto{"$ordenados[2]-$ordenados[3]"} = 1;
  35.  
  36.                # Impresión
  37.                print "[", join('-', @ordenados), "]\n";
  38.            }
  39.        }
  40.    }
  41. }
La salida es algo corta:
[1-2-3-4]
[1-5-6-7]
[1-8-9-10]
[1-11-12-13]
[1-14-15-16]
[1-17-18-19]
[2-5-8-11]
[2-6-9-12]
[2-7-10-13]
[2-14-17-20]
[3-5-9-13]
[3-6-8-14]
[3-7-11-15]
[3-10-12-16]
[4-5-10-14]
[4-6-11-16]
[4-7-8-12]
[4-9-15-17]
[4-13-18-20]
[5-12-15-18]
[5-16-19-20]
[6-10-15-19]
[7-9-14-18]
[8-13-16-17]


Curiosamente, el alumno 1 nunca estará con el número 20. ¿Por qué?
Supongamos que queremos la combinación [1-a-b-20]. ¿Qué valores serían a o b?. Pues cualquiera entre 2 y 19... pero eso no es posible, porque todos los números entre 2 y 19 ya han salido con el 1 antes (mirar las 6 primeras combinaciones). Y se cumpliría la condición de que el 1 ya se ha visto con cualquiera de esos números.

Me temo que esto no es lo que quieres...

Según las condiciones que has puesto, la segunda es la que limita la salida de todas las combinaciones: «tampoco me valdría otra donde volvieran a coincidir dos variables o más...». Como los grupos son de 4, eso quiere decir que habrá alumnos que estarán en más combinaciones (el 1, seis veces), pero otras, menos (el 20, tres veces) por la razón explicada antes.
97  Programación / Scripting / Re: Es dificil o imposible? en: 20 Marzo 2012, 18:47 pm
Ya que lo vas a ejecutar en Codepad, prueba esta versión:
Código
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. my $alumnos = 20;                    # Número de alumnos
  6. my $grupos  = 4;                     # Tamaño de los grupos
  7.  
  8. my @alumnos = 1 .. $alumnos;
  9. my $n_grupo = 1;
  10.  
  11. while (@alumnos >= $grupos) {
  12.  
  13.    # Creamos un @nuevo_grupo compuesto de tantos alumnos como de grande
  14.    # sean los $grupos, elegidos al azar de los @alumnos restantes
  15.    my @nuevo_grupo = map { splice @alumnos, rand(@alumnos), 1 } 1 .. $grupos;
  16.  
  17.    print "Grupo $n_grupo: [@nuevo_grupo]\n";
  18.  
  19.    $n_grupo++;
  20. }
  21.  
  22. # Resto que ha quedado sin asignar
  23. if (@alumnos) {
  24.    print "Grupo $n_grupo: [@alumnos]\n";
  25. }
  26.  
98  Programación / Scripting / Re: Es dificil o imposible? en: 20 Marzo 2012, 17:45 pm
Ya está cambiado para los Perl antiguos.
99  Programación / Scripting / Re: Es dificil o imposible? en: 20 Marzo 2012, 16:47 pm
Esta es mi versión:

Código
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4.  
  5. print "Número de alumnos: ";
  6. my $alumnos = <>;
  7.  
  8. print "Tamaño de los grupos: ";
  9. my $grupos  = <>;
  10.  
  11. my @alumnos = 1 .. $alumnos;
  12. my $n_grupo = 1;
  13.  
  14. while (@alumnos >= $grupos) {
  15.  
  16.    # Creamos un @nuevo_grupo compuesto de tantos alumnos como de grande
  17.    # sean los $grupos, elegidos al azar de los @alumnos restantes
  18.    my @nuevo_grupo = map { splice @alumnos, rand(@alumnos), 1 } 1 .. $grupos;
  19.  
  20.    print "Grupo $n_grupo: [@nuevo_grupo]\n";
  21.  
  22.    $n_grupo++;
  23. }
  24.  
  25. # Resto que ha quedado sin asignar
  26. if (@alumnos) {
  27.    print "Grupo $n_grupo: [@alumnos]\n";
  28. }
  29.  
  30. __END__
  31. Número de alumnos: 23
  32. Tamaño de los grupos: 4
  33. Grupo 1: [23 1 3 7]
  34. Grupo 2: [14 20 13 22]
  35. Grupo 3: [15 8 10 6]
  36. Grupo 4: [4 12 18 11]
  37. Grupo 5: [21 17 5 2]
  38. Grupo 6: [9 16 19]
100  Programación / Scripting / Re: [Perl] ByPass Admin 0.1 en: 14 Marzo 2012, 17:14 pm
Para que LWP pueda acceder con el protocolo HTTPS, debe estar instalado el módulo LWP::Protocol::https .
Páginas: 1 2 3 4 5 6 7 8 9 [10] 11
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines