• Publicidad

Sockets o Peticiones GET/POST

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Sockets o Peticiones GET/POST

Notapor jimr1984 » 2014-12-19 09:27 @435

Buenos días, comunidad.

Estoy traduciendo una herramienta hecha en Python: https://github.com/jofpin/fuckshell

Básicamente lo que realiza esta herramientas es realizar búsquedas (peticiones GET,POST) en busca de una lista de archivos.

El contenido de lista.txt es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using python Syntax Highlighting
  1. [  13s.php
  2.    cch.php
  3.    43.php
  4.    54ls.php
  5.    ruy.php
  6.    etc.
  7. ]
  8.  
  9. file = "lista.txt"
  10.  
  11. get   http://www.mipagina.com/13s.php/cch.php/43.php
  12. Post  http://www.mipagina.com/13s.php/cch.php/43.php
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


fwshell.py lo que realiza es buscar si se encuentra una webshell si el código de respuesta es 200, 404, etc.

Estoy pensando realizar la traducción y mejorarla utilizando hilos y sockets.

Ahora no sé si sería mejor utilizar sockets con hilos o simplemente hilos y peticiones normales GET y POST.

Tengo un archivo lista.txt con más de 10.000 nombres de la forma random.php y quería que fuese rápido el proceso optimizar y mejorar el script en Python.

Por favor, necesita saber si es mejor el uso de sockets o no, en este caso. Saludos.


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # GET::::::::::::::::::::::::::
  2. my $ua = LWP::UserAgent->new;
  3. my $sta = HTTP::Response->new();
  4. $ua->agent("Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)");
  5. my $url = "http://www.Mipagina/$lista";
  6. my $req = HTTP::Request->new(GET => $url);
  7. my $response = $ua->request($req);
  8. my $content = $response->content();
  9. print $response->code();
  10.  
  11.  
  12. # SOCKET::::::::::::::::::::::::::::::::
  13. my $host = "www.Mipagina.com";
  14. my $file = "/"; # el index vamos...
  15. my $port = 80;
  16. my $S = IO::Socket::INET->new
  17. (
  18.         Proto    => "tcp",
  19.         PeerAddr => "$host",
  20.         PeerPort => "$port",
  21. )  or die "cannot connect!";
  22.  
  23. # para flushear nada más escribir en el socket
  24. select($S); $| = 1; select(STDOUT);
  25. $peticion = 'GET /fichero/que/quiero/lala.php HTTP 1.1
  26. HOST: http://www.LAwebQUEsea.com'.\n\n";
  27. print $S $peticion
  28.  
  29. print $S "GET $file HTTP/1.1\nHOST: $host\n\n";
  30. while(<$S>){ print }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



Aguardo sus comentarios, gracias...
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Publicidad

Re: Sockets o Peticiones GET/POST

Notapor jimr1984 » 2014-12-19 09:43 @447

Rescaté esta parte de una anterior publicación.

De todas maneras, aguardo su comentarios.

"Un HEAD nos dice si un recurso está disponible, devolviendo solo la cabecera HTTP, con la información de ese recurso. O un mensaje de error.

En cambio, con un GET lo que obtenemos es, además de la información devuelta por HEAD, el propio recurso. Y si no nos interesa almacenarlo, pues entonces estamos consumiendo ancho de banda".
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Re: Sockets o Peticiones GET/POST

Notapor explorer » 2014-12-19 12:29 @562

Pues sí, con HEAD te vale para saber si un recurso está disponible.

Además, la respuesta del HEAD es muy rápida (solo es una cabecera lo que devuelve), así que puedes verificar la existencia de todos los archivos en muy poco tiempo.

Si quieres aumentar la velocidad, y suponiendo que el servidor correo varios hilos, puedes crear varios procesos para repartir la carga. Con LWP::Parallel lo puedes resolver muy rápidamente.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sockets o Peticiones GET/POST

Notapor jimr1984 » 2014-12-19 12:35 @566

Muchas gracias, estimado. Entonces, me valdré de LWP::Parallel y HEAD para desarrollar mi script. Saludos.
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Re: Sockets o Peticiones GET/POST

Notapor jimr1984 » 2014-12-19 13:26 @601

Estimado explorer: al descargar LWP::Parallel, dice que el archivo está corrupto. ¿Cómo puedo instalarlo de forma manual? Mi SO es Windows.

C:\Perl64\

Y al ejecutar cpan no puedo:

Set up gcc environment - 4.4.7 20111023 (prerelease) [svn/rev.180339 - mingw-w64/oz]
CPAN.pm panic: Lockfile 'C:\Perl64\cpan\.lock'
reports other host hacktor and other process 716.
Cannot proceed.

¿Sería posible instalar el módulo en Linux? ¿Y luego copiar la librería en la carpeta lib/ en Windows?
Saludos...
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Re: Sockets o Peticiones GET/POST

Notapor explorer » 2014-12-19 14:53 @662

JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sockets o Peticiones GET/POST

Notapor jimr1984 » 2014-12-30 10:23 @474

Muchas gracias por la ayuda, estimado.
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Re: Sockets o Peticiones GET/POST

Notapor jimr1984 » 2015-06-08 16:18 @721

Buenas tardes. Continuando con este hilo de peticiones GET / POST, por favor,
si me pueden ayudar con una petición POST que incluya estas cabeceras:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Host: http://www.mipaginaweb.com.bo
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://www.mipaginaweb.com.bo/
Content-Length: 55
Cookie: _ga=GA1.3.1559313485.1427978739; cc_hidebar=0; cc_an=1; PHPSESSID=53shgb9mbi9bk5umtpq08pc98mqrltgp; _gat=1; cc_loggedin=0
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Estos datos los extraje utilizando un proxy HTTP Live Headers en el navegador
Es un complemento de Firefox el cual tiene la opción REPLAY O REPETICIÓN.

Lo que trato de hacer es que mi petición se envíe utilizando las cabeceras mencionados arriba en una petición POST.

Saludos...
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Re: Sockets o Peticiones GET/POST

Notapor explorer » 2015-06-08 18:34 @815

En el documento que hay en tu ordenador (ejecuta perldoc lwpcook), en la sección POST, tienes un ejemplo de cómo se puede hacer.

Haz una prueba, y si tienes problemas nos avisas.

De todas maneras, hay algunos campos en esas cabeceras que son dependientes de la sesión, por lo que cambiarán cada vez que te conectes. Hay además una cookie, que se debería tratar de forma separada, pero bueno.

Quizás con WWW::Mechanize se pueda resolver de forma más cómoda.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14475
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sockets o Peticiones GET/POST

Notapor jimr1984 » 2015-06-29 10:17 @470

ok, explorer, muchas gracias.
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 5 invitados