Página 1 de 2

Consulta sobre URL

NotaPublicado: 2008-04-14 16:30 @729
por situ
Los molesto porque estoy intentando terminar un script, el cual lo que hace es buscar en una url la palabra "marcos".

Prueba las siguientes urls:
Código: Seleccionar todo
http://localhost/legajo.php/legajos.txt
http://localhost/legajos.php/legajos.txt

Hasta ahí anda todo, pero me gustaría poder hacer que busque en varios archivos la palabra "marcos"; en este momento está seteado solamente "legajos.txt", pero tengo un archivo el cual dentro contiene el nombre de varios archivos que tendría que buscar esta palabra.
Probé hacer un array leyendo este archivo pero no me funcionó.
Gracias.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use HTTP::Request;
use LWP::UserAgent;

$host='http://localhost/';
$string="marcos";
$archi='legajos.txt';
$pagina1="legajo.php";
$pagina2="legajos.php";

for ($i=1;$i<3;$i++) {
    $cont=pagina.$i;
    chomp $cont;

    $webs=$host.$$cont."$archi";

    my $req=HTTP::Request->new(GET=>$webs);

    my $ua=LWP::UserAgent->new();

    $ua->timeout(30);

    my $response=$ua->request($req);

    if ($response->is_success) {
        if( $response->content =~ /$string/) {
            print "$webs";
        }
    }
}
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2008-04-14 16:57 @748
por explorer
Humm... ¿qué es lo que hace la función vuln()?

NotaPublicado: 2008-04-14 17:05 @754
por situ
Perdón, me confundí en el código, ya que subí un mirror al script que tengo en mi trabajo.
Gracias

NotaPublicado: 2008-04-14 17:09 @756
por explorer
Bien... ¿Qué hace la función pagina()?

NotaPublicado: 2008-04-14 17:13 @759
por situ
Lo que hace es generar una variable con el contenido de $pagina.i donde "i" es el número de la variable, en mi caso tengo:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$pagina1="legajo.php";
$pagina2="legajos.php";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Dando así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$webs=$host.$$cont."$archi";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

que sería algo como :
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
$webs=$hosts.$pagina1."$archi";
o
$webs=$hosts.$pagina2."$archi";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

ya que es un for.

NotaPublicado: 2008-04-14 18:13 @800
por explorer
Vaya... ¿y no es más fácil usar un array?

Y, además, el URL que sale de $webs=$hosts.$pagina1."$archi"; es 'http://localhost/legajo.phplegajos.txt'.

Te falta el carácter '/'.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use HTTP::Request;
use LWP::UserAgent;

$host    = 'http://localhost';
$string  = "marcos";
$archi   = 'legajos.txt';
@paginas = qw( legajo.php legajos.php );

for ($i = 0; $i <= @paginas; $i++) {

    $webs = "$host/$paginas[$i]/$archi";

    # ...

}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Item más...
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
foreach $pagina ( @paginas ) {

    $webs = "$host/$pagina/$archi";

    # ...

}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

NotaPublicado: 2008-04-14 18:15 @802
por situ
¡Ah!, muchas gracias.

Consulta: cómo puedo hacer para que la variable $arch sea un array conteniendo lo que tengo dentro de un archivo con nombre "file.txt", ya que en realidad tengo varios archivos donde buscar.

Gracias.

NotaPublicado: 2008-04-14 18:22 @807
por kidd
Considerando que tengas un archivo llamado lista_de_archivos.txt y cuyo contenido sea similar a:

Código: Seleccionar todo
file.txt
file2.txt
file3.txt


Entonces podrías usar el siguiente código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use warnings;
use strict;
use HTTP::Request;
use LWP::UserAgent;

my $host = 'http://localhost';
my $string = "marcos";

#Lista de paginas en un array, así es fácil agregar más páginas
my @paginas = ("legajo.php","legajos.php");

#Abrimos el archivo con la lista de archivos a leer
open my $FILE, '<', 'lista_de_archivos.txt' or die $!;
my @archivos = <$FILE>;
close $FILE;


#Creamos nuestro objeto LWP
my $ua = LWP::UserAgent->new();
$ua->timeout(30);

#Iteramos en cada archivo
for my $archivo(@archivos){
    chomp $archivo;

    #Iteramos en cada pagina
    for my $pagina(@paginas){

        #Armamos el url
        my $url = join "/", $host, $pagina, $archivo;

        #Creamos un nuevo request
        my $req = HTTP::Request->new(GET=>$url);

        my $response = $ua->request($req);

        if ($response->is_success) {
            if( $response->content =~ /$string/mi ) {
                print "$url\n";
            }
        }

    }

}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Limpié el código bastante, y de una vez te puse para que usaras un array.

Saludos

NotaPublicado: 2008-04-14 18:38 @818
por situ
Mil gracias por todo.

NotaPublicado: 2008-04-15 09:46 @449
por situ
Le agregué para que me guarde el reporte en HTML pero solamente me guarda el primer archivo encontrado y no los demás :S.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl

use warnings;
use strict;
use HTTP::Request;
use LWP::UserAgent;

my $host = 'http://localhost';
my $string = "marcos";

#Lista de paginas en un array, así es fácil agregar más páginas
my @paginas = ("legajo.php","legajos.php");

#Abrimos el archivo con la lista de archivos a leer
open my $FILE, '<', 'lista_de_archivos.txt' or die $!;
my @archivos = <$FILE>;
close $FILE;


# Abro el archivo que sera el reporte final
open (F,">> reporte.html");
print F "<html><head>\n";
print F "<meta http-equiv=Content-Type content='text/html;charset=iso-8859-1' />\n";
print F "<title>marcos archivos</title>\n";
print F "</head>\n";
print F "<body>\n";
print F " <table border='0' align=center width=650 cellpadding='0' cellspacing='0' bgcolor=#333333>\n";
print F "  <tr><td bgcolor=#6666ff><font color=#ffffff face=Verdana size=1>Informacion</font></td></tr>\n";
print F "  <tr><td><font color=#ffffff face=Verdana size=1><strong>Host:</strong> $host</font></td></tr>\n";
print F "  <tr><td><font color=#ffffff face=Verdana size=1><strong>String:</strong> $string</font></td></tr>\n";
print F "  <tr><td><font color=#ffffff face=Verdana size=1><strong>Reporte:</strong> reporte.html</font></td></tr>\n";



#Creamos nuestro objeto LWP
my $ua = LWP::UserAgent->new();
$ua->timeout(30);

#Iteramos en cada archivo
for my $archivo(@archivos){
    chomp $archivo;

    #Iteramos en cada pagina
    for my $pagina(@paginas){

        #Armamos el url
        my $url = join "/", $host, $pagina, $archivo;

        #Creamos un nuevo request
        my $req = HTTP::Request->new(GET=>$url);

        my $response = $ua->request($req);

        if ($response->is_success) {
            if( $response->content =~ /$string/mi ) {
 #Cerramos el reporte
print F "  <tr><td bgcolor=#6666ff><font color=#ffffff face=Verdana size=1>archivos:\</font></td></tr>\n";
print F "  <tr><td><font color=#ffffff face=Verdana size=1>$url\n</font></td></tr>\n";
print F "  </table></body></html>\n";
close (F);
            }
        }

    }

}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Saludos