如何使用LWP发送POST数据?

Dis*_*ner 17 perl post lwp

我想制作一个与http://www.md5crack.com/crackmd5.php进行通信的程序.我的目标是向网站发送一个哈希值(md5),希望该网站能够破解它.之后,我想显示哈希的明文.我的问题是将数据发送到网站.我查阅了关于使用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;
Run Code Online (Sandbox Code Playgroud)

Ala*_*avi 31

您正在发布错误的数据,因为您正在使用HTML指定窗口小部件并将其与实际发送的数据混淆.更正后的数据只是发送小部件名称及其值:

term: 098f6bcd4621d373cade4e832627b4f6
Run Code Online (Sandbox Code Playgroud)

相反,当前获得POST的数据是:

maxlength: 2048
name:      term
size:      55
title:     md5 hash to crack
value:     098f6bcd4621d373cade4e832627b4f6
name:      crackbtn
type:      submit
value:     Crack that hash baby!
Run Code Online (Sandbox Code Playgroud)

更正的计划:

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;
Run Code Online (Sandbox Code Playgroud)

你也可以使用LWP::UserAgent'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;
Run Code Online (Sandbox Code Playgroud)

永远记得use strictuse warnings.它被认为是一种良好的做法,可以节省您的时间.


bri*_*foy 6

过去,通过阅读,破解者会想出这种东西.HTTP :: Request :: Common中有一些例子,LWP :: UserAgent告诉你签出发送POST数据.您只需要发送表单数据,而不是随附的元数据.

您可能更容易使用WWW :: Mechanize,因为它具有更加以人为中心的界面.