Read 295 times | Created 2013-09-23 08:15:47 | Updated 2013-09-23 10:00:24 | | |

 

<?php
/*
BISMILLAAHIRRAHMAANIRRAHIIM - In the Name of Allah, Most Gracious, Most Merciful
================================================================================
filename	: encoder.php
purpose	: encode php file on entire specific directory
create	: 05xxxx
last edit	: 060711,070813
author	: cahya dsn
================================================================================
This program is free software; you can redistribute it and/or modify it under the 
terms of the GNU General Public License as published by the Free Software 
Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY 
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 
A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

copyright (c) 2005-2007 by cahya dsn; cahyadsn@yahoo.com
================================================================================
notes:
 - harus terinstall module zlib
*/
$version="0.3";
/********************************************************
// function untuk memecah suatu strings dalam beberapa bagian 
// dalam bentuk array (dalam php5, sama dengan function 'str_split()'
// the_string : string inputan yang akan dipecah
// the_number : jumlah karakter dalam satu baris
*/
function stringsplit($the_string, $the_length){
  $startoff_nr = 0;
  $the_output_array = array();
  for($z = 1; $z < ceil(strlen($the_string)/$the_length)+1 ; $z++){ 
    $startoff_nr = ($the_length*$z)-$the_length;
    $the_output_array[] = substr($the_string, $startoff_nr, $the_length);
  }
  return($the_output_array);
}
/********************************************************
// function untuk mengencode suatu strings
*/
function encode($strEncode){
  $c=rand(1,15);
  $strEncode=stripslashes($strEncode);
  if($strEncode){
    if(substr($strEncode,0,1)=="<"){
      $strEncode="?>".$strEncode."<?";
    }  
    for($j=0;$j<$c;$j++){
      if($j==$c-1){
        $strEncode=$strEncode."//".($c<10?"0".$c:$c);
      }
      $strEncode1=base64_encode(gzdeflate($strEncode));
      $strEncode="eval(gzinflate(base64_decode('".$strEncode1."')));";
    }
  }
  $strEncode="<?phpn".$strEncode."n?>";
  $arr=stringsplit($strEncode,70);
  $strEncode=$arr[0];
  for($i=1;$i<count($arr);$i++){
    $strEncode.="n".$arr[$i];
  }
  $strEncode=str_replace("nn","n",$strEncode);
  return $strEncode;
}
/********************************************************
// function untuk mengambil daftar file2 yang akan di encode
*/
function listFile($dir=".") {
  //--- ekstensi file2 yang akan di encode, bisa ditambah sesuai kebutuhan ---
  $ext = array("php", "inc");
  $file_list = '';
  $stack[] = $dir;
  while ($stack) {
    $current_dir = array_pop($stack);
    if ($dh = opendir($current_dir)) {
      while (($file = readdir($dh)) !== false) {
        if ($file !== '.' AND $file !== '..') {
          $current_file = "{$current_dir}/{$file}";
          if (is_file($current_file)) {
            for($i=0;$i<sizeof($ext);$i++)
              if (preg_match("/.".$ext[$i]."$/i", $current_file)) 
                $file_list[] = "{$current_dir}/{$file}";
          } elseif (is_dir($current_file)) {
            $stack[] = $current_file;
          }
        }
      }
    }
  }
  return $file_list;
}

/********************************************************
// function utama untuk process encoding file
*/
function process($path){
  echo "Proccessing files :<br/>n";
  $filenya=array();
  $filenya=listFile($path);
  for($c=0;$c<count($filenya);$c++){
    $namafile=$filenya[$c];
    echo "<b>".$namafile."</b>";
    $str=file($namafile);
    $strings="";
    for($h=0;$h<count($str);$h++){
      $strings.=$str[$h];
    }
    $hasil=encode(addslashes($strings));   
    $fp0=@fopen($namafile, "w+");
	  if($fp0 <= 0){
	    ?>Error opening data file.<br /><? 
	  };
	  fputs($fp0, $hasil."n");
 	  fclose($fp0);
 	  if($_POST['chkBackup']==1){
	    $fp=@fopen($namafile.".bak", "w+");
	    if($fp <= 0){
	      ?>Error opening backup file.<br /><? 
	    };
	    fputs($fp, $strings."n");
	    fclose($fp); 
	  }
	  echo  " done<br />n";
  }
}
if ( ! isset($_SERVER['DOCUMENT_ROOT'] ) )
 $_SERVER['DOCUMENT_ROOT'] = str_replace( '\', '/', substr(
   $_SERVER['SCRIPT_FILENAME'], 0, 0-strlen($_SERVER['PHP_SELF']) ) );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title>phpEncoder v <?php echo $version;?></title>
    <style type="text/css">
      body,table {
        font-family:arial,san-serif,helvetica;
        font-size:9pt;
        color:#999999;
      }
      input{
        background-color:#EEEEEE;
        border: 1px solid #CCCCCC;
      }
      .header {
        padding-left:10px;
        background-color:#999999;
        color:#eeeeee;
        font-size:14pt;
        width:100%;
        height:25px;
      }
      a {
        text-decoration:none;
        color:#999999;
      }
      a:hover {
        text-decoration:none;
        border-bottom:dotted 1px #999999;
        color:#000099;
      }
    </style> 
  </head>
  <body>
    <table align="center">
      <tr>
        <td class="header">phpEncoder v <?php echo $version;?></td>
      </tr>
      <tr>
        <td>
          <form action="<?php echo basename($_SERVER['PHP_SELF']);?>" method="post">
            <table width="550" cellpadding="2">
              <tr>
                <td>Directory name</td>
                <td><input type="text" name="txtPath" id="txtPath" style="width:200px;" value="<?php echo $_SERVER['DOCUMENT_ROOT'];?>" /></td>
              </tr>
              <tr>  
                <td>File extensions will be encode (separated by comma)</td>
                <td><input type="text" name="txtExt" id="txtExt" style="width:200px;" value="php,inc" /></td>
              </tr>
              <tr>
                <td>&nbsp;</td>
                <td><input type="checkbox" name="chkBackup" id="chkBackup" value="1" checked /> backup file (generate .bak files)</td>
              </tr>  
            </table>
            <p align=right>
              <input type="submit" name="btnSubmit" id="btnSubmit" value="process" />
            </p>
          </form>
        </td>
      </tr>
      <tr>
        <td>
          <?php 
          if($_POST['txtPath']){
            process($_POST['txtPath']);
          }
          ?>
        </td>
      </tr>
      <tr bgColor="#CCCCCC">
        <td align="center">
          <small>
            <b>phpEncoder  v <?php echo $version;?></b> copyright &copy; 2005<?php echo (date("Y")>2005?"-".date("Y"):"");?> by <a href="http://adzan.16mb.com">cahya dsn</a>
          </small>
        </td>
      </tr>
    </table>    
  </body>  
</html>