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を使用してウィジェットを指定し、ウィジェットが実際に送信するデータとそれを融合しているため、間違ったデータをPOSTしています。修正されたデータは、ウィジェット名とその値を送信することです。
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
。これは良い習慣と考えられており、あなたの時間を節約します。
かつてクラッカーはこの種のものを読んで理解していました。 HTTP :: Request :: Commonに例があり、LWP :: UserAgentがPOSTデータを送信するためにチェックアウトするように指示します。フォームデータを送信するだけで、メタデータを送信する必要はありません。それに伴います。
WWW :: Mechanize を使用すると、人間中心のインターフェイスがはるかに簡単になるため、より簡単な時間になる可能性があります。