BlackSun
29.07.2008, 10:10
Навалял сабж, правда баги окончательно выловить немогу, убиваю один - появляется 2 новых .. вообшем если кому надо, можете доработать) моск уже не варит, /me свалил спать, проснусь, доделаю
<?
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>
<?
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>