web-dev-qa-db-fra.com

Comment envoyer des données POST avec LWP?

Je veux créer un programme qui communique avec http://www.md5crack.com/crackmd5.php . Mon objectif est d'envoyer un hachage au site (md5) et j'espère que le site pourra le casser. Après, je voudrais afficher le texte en clair du hachage. Mon problème est d'envoyer les données sur le site. J'ai recherché des articles sur l'utilisation de LWP mais je suis toujours perdu. À l'heure actuelle, le hachage n'envoie pas, d'autres données indésirables le sont. Comment pourrais-je envoyer une chaîne de données particulière au site?

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;
17

Vous POSTEZ des données erronées parce que vous prenez le code HTML pour spécifier le widget et le confondez avec les données qu'il envoie réellement. Les données corrigées seraient d'envoyer simplement le nom du widget et sa valeur:

term: 098f6bcd4621d373cade4e832627b4f6

Au lieu de cela, les données qui sont actuellement mises en POST sont:

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

Programme corrigé:

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;

Vous pouvez aussi utiliser LWP::UserAgent méthode post ():

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;

N'oubliez pas de use strict et use warnings . Il est considéré comme une bonne pratique et vous fera gagner du temps.

31

Auparavant, les crackers pouvaient comprendre ce genre de choses en lisant. Il existe des exemples dans HTTP :: Request :: Common, que LWP :: UserAgent vous demande de vérifier pour l'envoi de données POST. Il vous suffit d'envoyer les données du formulaire, pas les métadonnées qui va avec.

Vous pourriez avoir plus de facilité à utiliser WWW :: Mechanize car il a une interface beaucoup plus humaine.

6
brian d foy