Hi !
I am currently trying to decode a base64 encrypted PHP file , but without any luck. Could someone be able to help?
Thanks
Hi !
I am currently trying to decode a base64 encrypted PHP file , but without any luck. Could someone be able to help?
Thanks
This won't decode it fully. Adaption left as exercise to you (this is not a give me the codes forum):
$text = file_get_contents("b64");
while (preg_match("/([\w\(]+)['\"](.+)['\"]/ims", $text, $uu)) {
  list($old, $funcs, $text) = $uu;
  foreach (array_reverse(explode("(", $funcs)) as $func) {
    if (in_array($func, array("base64_decode", "gzinflate", "gzdecode", "gzuncompress", "str_rot13"))) {
      $text = $func($text);
    }
  }
  print "$funcs\n";
}
print $text;
One extremely simple script http://pastebin.com/g2n8kxeZ
278 runs later (about 2 minutes) - the original file - http://pastebin.com/eyiycRkB
It says (after 277 evals):
?><?php
/***************************************************************/
/*  Call Custom Page Variables                                 */
/***************************************************************/
require CWZ_FILES ."/inc/page-constants.php"; // Group Slider Gallery
/***************************************************************/
/*  Call Custom Page Variables *END*                           */
/***************************************************************/
?>
<?php if($DYN_hidecontent!="yes") { ?>
  etc.
whatever that means. The rest has already been posted by vlad.
Used script:
 $code = file_get_contents('QmCdtDne.txt');
 $done = 0; $level = 0;
 while( ! $done ) {
    $stuff = preg_split('/\'/', $code, 3);
    $code = $stuff[1];
    $decoder = preg_split('/\(/', $stuff[0]);
    foreach(array_reverse($decoder) as $cmd) {
        switch($cmd) {
            case 'base64_decode': $code = base64_decode($code); break;
            case 'str_rot13': $code = str_rot13($code); break;
            case 'gzinflate': $code = gzinflate($code); break;
            case '<? eval':
            case '?><? eval':
                 printf("eval level %02d, length: %d", ++$level, strlen($code));
                 break;
            case '': break;
            default: $done = 1; break;
        }
    }
    foreach(array_reverse($decoder) as $cmd) print(", $cmd");
    print "\n";
    if( ! count($decoder) || $level >= 277 )  $done = 1;
 }
 echo $code;
Regards
rbo