作者: davi
日時: 2006/3/22(04:24)
ねこ丸さん Zazelさん みなさん <  こん??は でび です

On Wed, 22 Mar 2006 00:40:23 +0900
davi <davi-1984@...> wrote:

> ちょっと試してみますぅ。

サーバによってはMD5で出てこないかもしれませんが、
動きました。
execは(ってかPerlそのものも)よくわからんので
たまたま暇そうだった師匠に助けて貰いましたけど。

お騒がせいたしました。> おる

#!/usr/local/bin/perl
my %command_do = (
	initialize => \&do_initialize,
	exec => \&do_crypt
);

my %form;
my $result;

&get_form_value;
#print "Content-Type:text/html\n\n";
#print "mycmd=$form{mycmd}";
&{$command_do{$form{mycmd} eq ''?'initialize':$form{mycmd}}};
#&do_initialize;
exit;

sub do_initialize {
	&print_html;
}

sub do_crypt {
    my $plain = $form{pass};
    my $salt = $form{salt};
    $result = crypt($plain,$salt);
    &print_html;
}

sub check_crypt {
    local($plain,$crypt) = @_;
    ($plain ne '' && $crypt ne '' && crypt($plain,$crypt) eq $crypt);
}

sub get_form_value {
	my($buffer,$pair,@pairs,$name,$value);

	if ($ENV{'REQUEST_METHOD'} eq "POST") {
		read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
	} else {
		$buffer = $ENV{'QUERY_STRING'};
	}
	
	@pairs = split(/&/, $buffer);
	foreach $pair (@pairs) {
		($name,$value) = split(/=/,$pair);
		$value =~ tr/+/ /;
		$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
		$form{$name} = $value;
	}
} 

#print_html_function
sub print_html {
	print <<"HTML";
Content-Type:text/html

<html>
<head>
<title>exec crypt</title>
<meta http-equiv="Content-Type" content="text/html; charset=shift-JIS">
<script language="JavaScript">
<!--
function preCheck() {
    if (form1.pass.value.length == 0) {
        alert("error!!Please input the password.");
        return false;
    }
    if (form1.salt.value.length == 0) {
        alert("error! Please input the salt.");
        return false;
    }
    return true;
}
-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<form name="form1" method="POST" action="$ENV{'SCRIPT_NAME'}" onSubmit="return preCheck()">
<input type="hidden" name="mycmd" value="exec">
password:<input type="text" name="pass" value="$form{pass}"></br>
salt:<input type="text" name="salt" value="$form{salt}"></br>
result:<input type="text" name="result" value="$result" size="80"></br>
<input type="submit" value="submit">
<input type="reset" value="clear">
</form>
</body>
</html>
HTML
}
1;

でび  http://homepage1.nifty.com/davi/