我想制作一个与
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;
解决方法
您正在发布错误的数据,因为您正在使用HTML来指定窗口小部件,并将其与实际发送的数据进行混合。更正的数据将是发送窗口小部件名称及其值:
term: 098f6bcd4621d373cade4e832627b4f6
相反,目前正在POST的数据是:
maxlength: 2048 name: term size: 55 title: md5 hash to crack value: 098f6bcd4621d373cade4e832627b4f6 name: crackbtn type: submit value: Crack that hash baby!
更正程序:
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;
您还可以使用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;
始终记得use strict
和use warnings
.这被认为是良好的做法,将节省您的时间。