2010-10-01 1 views
15

Desidero creare un programma che comunichi con http://www.md5crack.com/crackmd5.php. Il mio obiettivo è quello di inviare al sito un hash (md5) e speriamo che il sito sia in grado di risolverlo. Dopo, vorrei mostrare il testo in chiaro dell'hash. Il mio problema è inviare i dati al sito. Ho cercato articoli sull'utilizzo di LWP, ma sono ancora perso. In questo momento, l'hash non sta inviando, altri dati spazzatura lo sono. Come potrei fare per inviare una particolare stringa di dati al sito?Come si inviano i dati 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; 

risposta

27

stai scrivendo i dati sbagliati perché si sta prendendo il codice HTML per specificare il widget e confondendo con i dati che in realtà invia. I dati corretti sarebbero di inviare solo il nome del widget e il suo valore:

term: 098f6bcd4621d373cade4e832627b4f6 

Invece, i dati che sta ottenendo Pubblicato attualmente è:

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

programma Corretto:

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; 

Puoi anche utilizzare il metodo 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; 

Ricordare sempre a use strict e use warnings. È considerato una buona pratica e farà risparmiare tempo.

6

Un tempo i cracker potevano capire questo genere di cose leggendo. Ci sono esempi in HTTP :: Request :: Common, che LWP :: UserAgent ti dice di verificare per l'invio di dati POST. Devi solo inviare i dati del modulo, non i metadati che lo accompagnano.

Si potrebbe avere un momento più semplice utilizzando WWW::Mechanize poiché ha un'interfaccia molto più umana-centrica.