2010-10-01 20 views
15

Quiero hacer un programa que se comunique con http://www.md5crack.com/crackmd5.php. Mi objetivo es enviar un hash (md5) al sitio y con suerte el sitio podrá descifrarlo. Después, me gustaría mostrar el texto claro del hash. Mi problema es enviar los datos al sitio. Busqué artículos sobre el uso de LWP, sin embargo, aún estoy perdido. En este momento, el hash no está enviando, algunos otros datos no deseados son. ¿Cómo voy a enviar una cadena de datos en particular al sitio?¿Cómo envío datos de POST con LWP?

use HTTP::Request::Common qw(POST); 
use LWP::UserAgent; 


$ua = LWP::UserAgent->new(); 
my $req = POST 'http://www.md5crack.com/crackmd5.php', [ 
maxlength=> '2048', 
name=> 'term', 
size=>'55', 
title=>'md5 hash to crack', 
value=> '098f6bcd4621d373cade4e832627b4f6', 
name=>'crackbtn', 
type=>'submit', 
value=>'Crack that hash baby!', 

]; 
$content = $ua->request($req)->as_string; 

print "Content-type: text/html\n\n"; 
print $content; 

Respuesta

27

envías los datos erróneos debido a que está tomando el código HTML para especificar el widget y confundir con los datos que realmente envía. Los datos corregidos sería enviar sólo el nombre del widget y su valor:

term: 098f6bcd4621d373cade4e832627b4f6 

En cambio, los datos que está consiguiendo POSTeado actualmente es:

maxlength: 2048 
name:  term 
size:  55 
title:  md5 hash to crack 
value:  098f6bcd4621d373cade4e832627b4f6 
name:  crackbtn 
type:  submit 
value:  Crack that hash baby! 

programa Corregido:

use strict; 
use warnings; 

use LWP::UserAgent; 
use HTTP::Request::Common qw{ POST }; 
use CGI; 

my $md5 = '098f6bcd4621d373cade4e832627b4f6'; 
my $url = 'http://www.md5crack.com/crackmd5.php'; 

my $ua  = LWP::UserAgent->new(); 
my $request = POST($url, [ 'term' => $md5 ]); 
my $content = $ua->request($request)->as_string(); 

my $cgi = CGI->new(); 
print $cgi->header(), $content; 

También puede usar el método post() de LWP::UserAgent:

use strict; 
use warnings; 

use LWP::UserAgent; 
use CGI; 

my $md5 = '098f6bcd4621d373cade4e832627b4f6'; 
my $url = 'http://www.md5crack.com/crackmd5.php'; 

my $ua  = LWP::UserAgent->new(); 
my $response = $ua->post($url, { 'term' => $md5 }); 
my $content = $response->decoded_content(); 

my $cgi = CGI->new(); 
print $cgi->header(), $content; 

Recuerde siempre a use strict y use warnings. Se considera una buena práctica y le ahorrará tiempo.

6

Solía ​​ser que los crackers resolverían este tipo de cosas leyendo. Hay ejemplos en HTTP :: Request :: Common, que LWP :: UserAgent le indica que debe verificar para enviar datos POST. Solo necesita enviar los datos del formulario, no los metadatos que lo acompañan.

Es posible que le resulte más fácil usar WWW::Mechanize ya que tiene una interfaz mucho más centrada en el ser humano.

Cuestiones relacionadas