perl base64解码

看phrack的时候,作者的代码有时不是以plain text的格式粘贴出来,有时使用了base64的编码,有时使用的uuencode格式的编码。

要识别base64还是uuencode编码可以看文件的第一行,如果明确了base64的话,那么就是base64编码,否则很有可能就是uuencode。

于是写了一个小脚本用来把base64/uuencode转换成tar.gz(大多数情况下都是这种格式)的。

使用方法:

将文件粘贴到记事本中保存之。然后运行脚本。

如果是UUEncode的编码, 则begin和end也要保存。

然后运行

perl decode.pl -s source.txt -d dest.txt -c base64

perl  decode.pl -s a.txt  -c UU


===========================================================================================

decode.pl

===========================================================================================

#!/usr/bin/perl -w


use strict;
use warnings;
use MIME::Base64;
use Convert::UU qw(uudecode);
use Getopt::Long;


my $srcfile;
my $dstfile;
my $help;
my $encode;
GetOptions(
        'h|help'        => \$help,
        's=s'           => \$srcfile,
        'd=s'           => \$dstfile,
        'c=s'           => \$encode);
sub help{
        print <<_EOT_;
'perl $0 -s source.txt -d dest.txt -c base64'
'perl $0 -s source.txt -c UU'
only decode base64 or UU
when decoding base64, you should specify the dst file name
_EOT_
        exit;
}
help() if $help;
help() unless $srcfile;
help() unless ($encode eq "base64") or ($encode eq "UU");
print "$srcfile doesn't exist\n" unless -e $srcfile;




sub main_base64{
        my ($src, $dst) = @_;
        my $in;
        my $out;
        my $string;
        my $result;
        help() unless $dst;
        open $in, $src;
        open $out, ">", $dst;
        while(<$in>){
                chomp;
                $string = $string.$_;
        }


#       if($enc eq "base64"){
        $result = decode_base64($string);
#       }elsif($enc eq "UU"){
#               $result = uudecode($string, "vlc_lulz_v0.1.tar.gz", 644 );
#       }
        print $out $result;
        close($in);
        close($out);
        print "Done\n";
        exit;
}


sub main_uu{
        my ($src, $dst) = @_;
        my $in;
        my $out;
        open $in, $src;
        my($string, $filename, $mode) = uudecode($in);
        open $out, ">", $filename;
        print $out $string;
        close($in);
        close($out);
        print "Done\n";
        exit;
}
main_base64($srcfile, $dstfile)if $encode eq "base64";
main_uu($srcfile, $dstfile) if $encode eq "UU";

你可能感兴趣的:(perl base64解码)