1

我有这个脚本,工作正常:

#!/usr/bin/perl

$key = pack("H*","3cb37efae7f4f376ebbd76cd");

$str = "&4\=80CHB'";
$dec = decode($str);
print "Decoded string value: $dec\n";

sub decode{ #Sub to decode
    @subvar=@_;
    my $sqlstr = $subvar[0];
    $cipher = unpack("u", $sqlstr);
    $plain = $cipher^$key;
    return substr($plain, 0, length($cipher));
}

如果我改变它以从 STDIN 获取 $str 变量,它会弄乱所有结果:

#!/usr/bin/perl

$key = pack("H*","3cb37efae7f4f376ebbd76cd");

print "Enter string to decode: ";
$str=<STDIN>;chomp $str;
$dec = decode($str);
print "Decoded string value: $dec\n";

sub decode{ #Sub to decode
    @subvar=@_;
    my $sqlstr = $subvar[0];
    $cipher = unpack("u", $sqlstr);
    $plain = $cipher^$key;
    return substr($plain, 0, length($cipher));
}

第一个脚本没问题,结果是:

解码字符串值:mentos

第二个脚本不好:

解码字符串值:ot&¸ÝÖóvë½vÍ

知道我做错了什么吗?谢谢!

4

1 回答 1

3

你的原始代码有

$str = "&4\=80CHB'";

由于某种原因,其中包含一个转义的等号。它与

$str = "&4=80CHB'";

所以你需要输入&4=80CHB'你修改后的代码。

于 2012-04-10T15:20:59.627 回答