Тема: Php криптор
Показать сообщение отдельно

Php криптор
  #1  
Старый 29.07.2008, 10:10
BlackSun
Познавший АНТИЧАТ
Регистрация: 01.04.2007
Сообщений: 1,268
С нами: 10058786

Репутация: 4589


По умолчанию Php криптор

Навалял сабж, правда баги окончательно выловить немогу, убиваю один - появляется 2 новых .. вообшем если кому надо, можете доработать) моск уже не варит, /me свалил спать, проснусь, доделаю

PHP код:
<?
    
function gen_rnd($len)
    {
        
$rnd_text = null;
        for (
$i = 0; $i < $len; $i++)
        {
            
$temp = rand(1, 3);
            if (
$i == 0)
            {
                
$temp2 = rand(1, 2);
                if (
$temp2 == 1)
                {
                    
$rnd_text .= chr(rand(65, 90));
                } else 
                {
                    
$rnd_text .= chr(rand(97, 122));
                }
            } else 
            {
                if (
$temp == 1)
                {
                    
$rnd_text .= chr(rand(65, 90));
                } elseif (
$temp == 2) 
                {
                    
$rnd_text .= chr(rand(97, 122));
                } else 
                {
                    
$rnd_text .= chr(rand(48, 57));
                }
            }
        }
        return 
$rnd_text;
    }

    function 
rnd_trash()
    {
        
$len = rand(1, 10);
        
$words = rand(1, 3);
        
$tmp = null;
        for (
$i = 0; $i < $words; $i++)
        {
            
$tmp .= gen_rnd($len);
            if (
rand(0, 1) == 1)
            { 
$tmp .= ' '; }
        }
        return 
$tmp;
    }

    function 
gen_trash()
    {
        
$svar = gen_rnd(10);
        
$tmp = '$'.$svar.'=';
        
$trash_type = rand(0, 32);
        if (
rand(0,3) == 1)
        {
            
$tmp .= '"'.gen_rnd(24).'";$'.$svar.'=';
        }
        switch (
$trash_type)
        {
            case 
0: $tmp .= rand(0,999).';/* '.rnd_trash().' */'; break;
            case 
1: $tmp .= rand(0,999).';'; break;
            case 
2: $tmp .= '"'.gen_rnd(10).'";'; break;
            case 
3: $tmp .= 'substr($'.$svar.','.rand(0,10).');'; break;
            case 
4: $tmp .= 'strpos($'.$svar.',"'.rnd_trash().'");'; break;
            case 
5: $tmp .= '"'.rnd_trash().'";$'.$svar.'=base64_encode($'.$svar.');'; break;
            case 
6: $tmp .= 'addslashes("'.rnd_trash().'");'; break;
            case 
7: $tmp .= 'addslashes($'.$svar.');'; break;
            case 
8: $tmp .= 'chr(rand(65,90));'; break;
            case 
9: $tmp .= 'crc32("'.gen_rnd(rand(0,24)).'");'; break;
            case 
10: $tmp .= 'htmlentities($'.$svar.');'; break;
            case 
11: $tmp .= 'htmlspecialchars($'.$svar.');'; break;
            case 
12: $tmp .= 'html_entity_decode($'.$svar.');'; break;
            case 
13: $tmp .= 'array();'; break;
            case 
14: $tmp .= 'ltrim($'.$svar.');'; break;
            case 
15: $tmp .= 'quotemeta($'.$svar.');'; break;
            case 
16: $tmp .= 'rtrim($'.$svar.');'; break;
            case 
17: $tmp .= 'strcmp("'.gen_rnd(rand(1,10)).'","'.gen_rnd(rand(1,10)).'");'; break;
            case 
18: $tmp .= 'strlen($'.$svar.');'; break;
            case 
19: $tmp .= 'strlen($'.$svar.'."'.gen_rnd(8).'");'; break;
            case 
20: $tmp .= 'stripcslashes($'.$svar.');'; break;
            case 
21: $tmp .= 'stripos($'.$svar.',"'.rnd_trash().'");'; break;
            case 
22: $tmp .= 'strip_tags($'.$svar.');'; break;
            case 
23: $tmp .= 'strip_tags("'.gen_rnd(8).'");'; break;
            case 
24: $tmp .= 'strstr($'.$svar.',$'.$svar.');'; break;
            case 
25: $tmp .= 'stristr($'.$svar.',$'.$svar.');'; break;
            case 
26: $tmp .= 'strstr("'.gen_rnd(rand(1,9)).'",$'.$svar.');'; break;
            case 
27: $tmp .= 'strrev($'.$svar.');'; break;
            case 
28: $tmp .= 'strrev("'.gen_rnd(rand(1,9)).'");'; break;
            case 
29: $tmp .= 'str_rot13($'.$svar.');'; break;
            case 
30: $tmp .= '"'.gen_rnd(rand(3,9)).'";';
                
$x = '$'.gen_rnd(10);
                
$tmp .= 'for('.$x.'=0;'.$x.'<'.rand(0,3).';'.$x.'++){$'.$svar.'['.$x.']=$'.$svar.'['.$x.']^'.rand(2,9).';}';
                break;
            case 
31: $tmp .= 'time();'; break;
            case 
32: $tmp .= 'null;'; break;
        }
        return 
$tmp;
    }
    
    function 
trash()
    {
        
$rnd = rand(1, 3);
        
$tmp = null;
        for (
$i = 0; $i < $rnd; $i++)
        {
            
$tmp .= gen_trash(False);
        }
        return 
$tmp;
    }
    
    function 
pcrypt($code)
    {
        
$start_pos = strpos($code, "<?php");
          if (
$start_pos === false)
        {
            
$start_pos = strpos($code, "<?");
            if (
$start_pos !== false)
            { 
$code = substr($code, $start_pos + 2, strlen($code)); }
          } else
          { 
$code = substr($code, $start_pos + 5, strlen($code)); }
          
$start_pos = strrpos($code, "?>");
          if (
is_int($start_pos)) { $code = substr($code, 0, $start_pos); }
        
          
$codelen = strlen($code);
          
$blocks = rand(0,10);
          
$names_arr = array();
          
$pos = 0;
          
$crypted = null;        
          
$loader = null;
          for (
$i = 0; $i < $blocks; $i++)
          {        
              
$pwd = rand(10,99);
              
$tmp = substr($code, $pos, $codelen / $blocks);
              
$tmp_len = strlen($tmp);
              
$tmp = gzdeflate($tmp);
              for (
$j = 0; $j < $tmp_len; $j ++)
              {
                  
$tmp[$j] = chr(ord($tmp[$j]) ^ $pwd);
              }
              
$tmp = base64_encode($tmp);
              
$pos = $pos + ($codelen / $blocks);
              
$var_crypted = '$'.gen_rnd(10);
              
$var_key = '$'.gen_rnd(10);
              
$names_arr[] = array($var_crypted, $var_key);
              
$crypted .= $var_crypted.'="'.$tmp.'";'.trash();
              
$crypted .= $var_key.'='.$pwd.';'.trash();
          }
          
$var_unpack = '$'.gen_rnd(10);
          for (
$i = 0; $i < $blocks; $i++)
          {
              
$var_tmp = '$'.gen_rnd(10);
              
$var_i = '$'.gen_rnd(10);
              
$var_len = '$'.gen_rnd(10);
              
$loader .= $var_tmp.'=base64_decode('.$names_arr[$i][0].');'.trash();
              
$loader .= $var_i.'=0;'.trash();
              
$loader .= $var_len.'=strlen('.$var_tmp.');'.trash();
              
$loader .= 'for('.$var_i.'=0;'.$var_i.'<'.$var_len.';'.$var_i.'++){';
              
$loader .= $var_tmp.'['.$var_i.']=chr(ord('.$var_tmp.'['.$var_i.'])^'.$names_arr[$i][1].');}'.trash();
              
$loader .= $var_unpack.'.=gzinflate('.$var_tmp.');'.trash();
              
$loader .= $var_tmp.'=null;'.trash();
          }
          
$loader = base64_encode(gzdeflate($crypted.$loader.'eval('.$var_unpack.');'.$var_unpack.'=null;'.trash().trash()));
          
$loader = "<?php\r\n eval(gzinflate(base64_decode('".$loader."'))); \r\n?>";
          return 
$loader;
    }
    
    
/* **************** */
    
if (isset($_POST['data']))
    {
        echo 
htmlspecialchars(pcrypt(stripslashes($_POST['data'])));
        die();
    }
?>
<html>
<head>
    <title>Simple PHP cryptor</title>
</head>
<body>
    <center>[PHPCrypt] by BlackSun [S.T.A.R.S. Team]</center><br>
    <form method="POST">
        <textarea name="data" style="width:70%;height:120px"></textarea><br>
        <input type="submit" value="Crypt php"><br><br>
        <font color="red">* После криптовки обязательно проверяйте работоспособность!</font>
    </form>
</body>
</html>
 
Ответить с цитированием