收集两个将shllcode转化为浏览器能识别的Unicode形式的perl代码

#!/usr/bin/perl
# win32_downloadexec - URL=http://xxxxxx/c.exe Size=392 Encoder=PexFnstenvSub http://metasploit.com

$sco=#Input your shellcode here;

my $len=length($sco);
my @temp;
my $i=0;
my $sco_text;
while($i<$len)
{
$temp[$i]=sprintf("%.2x",ord(substr($sco,$i,1)));
$i++;
}
$i=0;
while($i<$len)
{
if($i%2!=0)
{
$sco_text.='%u'.$temp[$i].$temp[$i-1];
}
$i++;
}
print "The Result of Unicode Shellcode Is:";
print "\n\n-----------------Start--------------------\n\n";
print $sco_text;
print "\n\n-----------------End----------------------\n\n";
print "Output > sc.txt";

open(FILE, "> sc.txt");
#*STDOUT = *MYOUT;

print FILE "The Result of Unicode Shellcode Is:";
print FILE "\n\n-----------------Start--------------------\n\n";
print FILE $sco_text;
print FILE "\n\n-----------------End----------------------\n\n";
close(FILE);
# -EOF-

#--------------------------------------------------------------------------------
#!/usr/bin/perl

$sco=#Input your shellcode here;

$sco=convert_sco($sco);

print "The Result of Unicode Shellcode Is:";
print "\n\n-----------------Start--------------------\n\n";
print $sco;
print "\n\n-----------------End----------------------\n\n";
print "Output > sc.txt";

open(FILE, "> sc.txt");
#*STDOUT = *MYOUT;

print FILE "The Result of Unicode Shellcode Is:";
print FILE "\n\n-----------------Start--------------------\n\n";
print FILE $sco;
print FILE "\n\n-----------------End----------------------\n\n";
close(FILE);

#

sub convert_sco {
my $data = shift;
my $mode = shift() || 'LE';
my $code = '';

my $idx = 0;

if (length($data) % 2 != 0) {
$data .= substr($data, -1, 1);
}

while ($idx < style="line-height: normal; "> my $c1 = ord(substr($data, $idx, 1));
my $c2 = ord(substr($data, $idx+1, 1));
if ($mode eq 'LE') {
$code .= sprintf('%%u%.2x%.2x', $c2, $c1);
} else {
$code .= sprintf('%%u%.2x%.2x', $c1, $c2);
}
$idx += 2;
}

return $code;
}

0 评论: