Вход Регистрация
Файл: www/and/ai-bolit.php
Строк: 390
<?php
///////////////////////////////////////////////////////////////////////////
// Автор: Григорий Земсков
// Email: greg@greg.su, http://revisium.com/ai/, http://greg.su, skype: greg_zemskov 

// Запрещено использовать в коммерческих целях без согласования с автором скрипта.
// Лицензия GPL v3, http://www.gnu.org/licenses/gpl.html
///////////////////////////////////////////////////////////////////////////

define('PASS''123'); // пароль для запуска
define('SCAN_ALL_FILES'0); // полное сканирование файлов (не только .js, .php, .html, .htaccess)
define('SCAN_DELAY'1); // задержка в миллисекундах при сканировании файлов для снижения нагрузки на файловую систему

// завернутые сигнатуры, чтобы не ругались антивирусы на PC и на хостинге
$g_DBShe unserialize(base64_decode("YTo3Mzp7aTowO3M6OTQ6IiRpbmZvIC49ICgoJHBlcm1zICYgMHgwMDQwKSA/KCgkcGVybXMgJiAweDA4MDApID8gJ3MnIDogJ3gnICkgOigoJHBlcm1zICYgMHgwODAwKSA/ICdTJyA6ICctJykiO2k6MTtzOjg0OiI8dGV4dGFyZWEgbmFtZT1cInBocGV2XCIgcm93cz1cIjVcIiBjb2xzPVwiMTUwXCI+Ii5AJF9QT1NUWydwaHBldiddLiI8L3RleHRhcmVhPjxicj4iO2k6MjtzOjEwMToiN1RNR0FIWTVLYU05bzM3Vy9HUS9mckZKZXRmcWxSR082RlNSVE1tN0lMU20zNW81ejQrdjBtY2Y0S2FIZ0tTNVkxN2VxcXZEMm1tTjhOenRleXBsTmQ2V093clFWSzQ0NUoveTAiO2k6MztzOjE2OiJjOTlmdHBicnV0ZWNoZWNrIjtpOjQ7czo4OiJjOTlzaGVsbCI7aTo1O3M6ODoicjU3c2hlbGwiO2k6NjtzOjE0OiJ0ZW1wX3I1N190YWJsZSI7aTo3O3M6NzY6IlIwbEdPRGxoSmdBV0FJQUFBQUFBQVAvLy95SDVCQVVVQUFFQUxBQUFBQUFtQUJZQUFBSXZqSStweSswUEY0aTBnVnZ6dVZ4WERub1EiO2k6ODtzOjc6ImNhc3VzMTUiO2k6OTtzOjEzOiJXU0NSSVBULlNIRUxMIjtpOjEwO3M6NDc6IkV4ZWN1dGVkIGNvbW1hbmQ6IDxiPjxmb250IGNvbG9yPSNkY2RjZGM+WyRjbWRdIjtpOjExO3M6MTE6ImN0c2hlbGwucGhwIjtpOjEyO3M6MTExOiJCREFRa0pDUXdMREJnTkRSZ3lJUndoTWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qSXlNakl5TWpJeU1qTC93QUFSQ0FBUUFCQURBU0lBQWhFQkEiO2k6MTM7czozMDoiW0F2NGJmQ1lDUyx4S1drJCtUa1VTLHhuR2RBeFtPIjtpOjE0O3M6MTU6IkRYX0hlYWRlcl9kcmF3biI7aToxNTtzOjEwNjoiOXRaU0IwYnlCeU5UY2djMmhsYkd3Z0ppWWdMMkpwYmk5aVlYTm9JQzFwSWlrN0RRb2dJQ0JsYkhObERRb2dJQ0JtY0hKcGJuUm1LSE4wWkdWeWNpd2lVMjl5Y25raUtUc05DaUFnSUdOcyI7aToxNjtzOjg2OiJjcmxmLid1bmxpbmsoJG5hbWUpOycuJGNybGYuJ3JlbmFtZSgifiIuJG5hbWUsICRuYW1lKTsnLiRjcmxmLid1bmxpbmsoImdycF9yZXBhaXIucGhwIiI7aToxNztzOjEwNToiLzB0VlNHL1N1djBVci9oYVVZQWRuM2pNUXdiYm9jR2ZmQWVDMjlCTjl0bUJpSmRWMWxrK2pZRFU5MkM5NGpkdERpZit4T1lqRzZDTGh4MzFVbzl4OS9lQVdnc0JLNjBrSzJtTHdxenFkIjtpOjE4O3M6MTE1OiJtcHR5KCRfUE9TVFsndXInXSkpICRtb2RlIHw9IDA0MDA7IGlmICghZW1wdHkoJF9QT1NUWyd1dyddKSkgJG1vZGUgfD0gMDIwMDsgaWYgKCFlbXB0eSgkX1BPU1RbJ3V4J10pKSAkbW9kZSB8PSAwMTAwIjtpOjE5O3M6NDQ6IldUK1B7fkVXMEVyUE90blVAI0AmXmxec1AxbGRueUAjQCZuc2srcjAsR1QrIjtpOjIwO3M6Mzc6ImtsYXN2YXl2LmFzcD95ZW5pZG9zeWE9PCU9YWt0aWZrbGFzJT4iO2k6MjE7czoxMjI6Im50KShkaXNrX3RvdGFsX3NwYWNlKGdldGN3ZCgpKS8oMTAyNCoxMDI0KSkgLiAiTWIgIiAuICJGcmVlIHNwYWNlICIgLiAoaW50KShkaXNrX2ZyZWVfc3BhY2UoZ2V0Y3dkKCkpLygxMDI0KjEwMjQpKSAuICJNYiA8IjtpOjIyO3M6MzE6InMoKS5nKCkucygpLnMoKS5nKCkucygpLnMoKS5nKCkiO2k6MjM7czo4ODoiQ1Jic2tFSVMreWJLQXdjNi9PQjFqVThZMFlJTVZVaHhoYU9Jc0hBQ0J5RDB3TUFOT0hxWTVZNDhndWlCbkNoa3dQWU5Ua3hkQlJWUlpMSEZrb2pZOTZJSSI7aToyNDtzOjczOiIkcG9ydF9iaW5kX2JkX3BsPSJJeUV2ZFhOeUwySnBiaTl3WlhKc0RRb2tVMGhGVEV3OUlpOWlhVzR2WW1GemFDQXRhU0k3RFFwIjtpOjI1O3M6MTI3OiJDQjJhVFpwSURFd01qUXREUW9qTFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRMUzB0TFEwS0kzSmxjWFZwIjtpOjI2O3M6NzoiTlREYWRkeSI7aToyNztzOjc2OiJhIGhyZWY9Ijw/ZWNobyAiJGZpc3Rpay5waHA/ZGl6aW49JGRpemluLy4uLyI/PiIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uIjtpOjI4O3M6MTE1OiJUUlVGRVJGSXNNU2s3RFFwaWFXNWtLRk1zYzI5amEyRmtaSEpmYVc0b0pFeEpVMVJGVGw5UVQxSlVMRWxPUVVSRVVsOUJUbGtwS1NCOGZDQmthV1VnSWtOaGJuUWdiM0JsYmlCd2IzSjBYRzRpT3cwS2JHIjtpOjI5O3M6Mzg6IlJvb3RTaGVsbCEnKTtzZWxmLmxvY2F0aW9uLmhyZWY9J2h0dHA6IjtpOjMwO3M6MTEzOiJtOTFkQ3dnSkdWdmRYUXBPdzBLYzJWc1pXTjBLQ1J5YjNWMElEMGdKSEpwYml3Z2RXNWtaV1lzSUNSbGIzVjBJRDBnSkhKcGJpd2dNVEl3S1RzTkNtbG1JQ2doSkhKdmRYUWdJQ1ltSUNBaEpHVnZkWCI7aTozMTtzOjkwOiI8JT1SZXF1ZXN0LlNlcnZlclZhcmlhYmxlcygic2NyaXB0X25hbWUiKSU+P0ZvbGRlclBhdGg9PCU9U2VydmVyLlVSTFBhdGhFbmNvZGUoRm9sZGVyLkRyaXYiO2k6MzI7czo3MzoiUjBsR09EbGhGQUFVQUtJQUFBQUFBUC8vLzkzZDNjREF3SWFHaGdRRUJQLy8vd0FBQUNINUJBRUFBQVlBTEFBQUFBQVVBQlFBQSI7aTozMztzOjE2MDoicHJpbnQoKGlzX3JlYWRhYmxlKCRmKSAmJiBpc193cml0ZWFibGUoJGYpKT8iPHRyPjx0ZD4iLncoMSkuYigiUiIudygxKS5mb250KCdyZWQnLCdSVycsMykpLncoMSk6KCgoaXNfcmVhZGFibGUoJGYpKT8iPHRyPjx0ZD4iLncoMSkuYigiUiIpLncoNCk6IiIpLigoaXNfd3JpdGFibCI7aTozNDtzOjE2MToiKCciJywnJnF1b3Q7JywkZm4pKS4nIjtkb2N1bWVudC5saXN0LnN1Ym1pdCgpO1wnPicuaHRtbHNwZWNpYWxjaGFycyhzdHJsZW4oJGZuKT5mb3JtYXQ/c3Vic3RyKCRmbiwwLGZvcm1hdC0zKS4nLi4uJzokZm4pLic8L2E+Jy5zdHJfcmVwZWF0KCcgJyxmb3JtYXQtc3RybGVuKCRmbikiO2k6MzU7czoxMToiemVoaXJoYWNrZXIiO2k6MzY7czo1OiJzeXBleCI7aTozNztzOjU2OiJKQCFWckAqJlJIUnd+Skx3Lkd8eGxobkxKfj8xLmJ3T2J4YlB8IVZeQ3g5/fD9eP0iUN3nYnh+UCI7aTozODtzOjg6ImNpaHNoZWxsIjtpOjM5O3M6MTI2OiJYMU5GVTFOSlQwNWJKM1I0ZEdGMWRHaHBiaWRkSUQwZ2RISjFaVHNOQ2lBZ0lDQnBaaUFvSkY5UVQxTlVXeWR5YlNkZEtTQjdEUW9nSUNBZ0lDQnpaWFJqYjI5cmFXVW9KM1I0ZEdGMWRHaGZKeTRrY20xbmNtOTFjQ3dnYlciO2k6NDA7czo2MToiSkhacGMybDBZMjkxYm5RZ1BTQWtTRlJVVUY5RFQwOUxTVVZmVmtGU1Uxc2lkbWx6YVhSeklsMDdJR2xtSyI7aTo0MTtzOjc6IkZ4Yzk5c2giO2k6NDI7czozOToiV1NPc2V0Y29va2llKG1kNSgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pIjtpOjQzO3M6MTA3OiJDUWJvR2w3Zit4Y0F5VXlzeGI1bUtTNmtBV3NuUkxkUytzS2dHb1pXZHN3TEZKWlY4dFZ6WHNxK21lU1BITXhUSTNuU1VCNGZKMnZSM3IzT252WHROQXFONnduL0R0VFRpK0N1MVVPSndOTCI7aTo0NDtzOjE0MToiPC90ZD48dGQgaWQ9ZmE+WyA8YSB0aXRsZT1cIkhvbWU6ICciLmh0bWxzcGVjaWFsY2hhcnMoc3RyX3JlcGxhY2UoIlwiLCAkc2VwLCBnZXRjd2QoKSkpLiInLlwiIGlkPWZhIGhyZWY9XCJqYXZhc2NyaXB0OlZpZXdEaXIoJyIucmF3dXJsZW5jb2RlIjtpOjQ1O3M6MTY6IkNvbnRlbnQtVHlwZTogJF8iO2k6NDY7czo4NjoiPG5vYnI+PGI+JGNkaXIkY2ZpbGU8L2I+ICgiLiRmaWxlWyJzaXplX3N0ciJdLiIpPC9ub2JyPjwvdGQ+PC90cj48Zm9ybSBuYW1lPWN1cnJfZmlsZT4iO2k6NDc7czo0ODoid3NvRXgoJ3RhciBjZnp2ICcgLiBlc2NhcGVzaGVsbGFyZygkX1BPU1RbJ3AyJ10pIjtpOjQ4O3M6MjE6ImV2YWwoYmFzZTY0X2RlY29kZSgkXyI7aTo0OTtzOjE0MjoiNWpiMjBpS1c5eUlITjBjbWx6ZEhJb0pISmxabVZ5WlhJc0ltRndiM0owSWlrZ2IzSWdjM1J5YVhOMGNpZ2tjbVZtWlhKbGNpd2libWxuYldFaUtTQnZjaUJ6ZEhKcGMzUnlLQ1J5WldabGNtVnlMQ0ozWldKaGJIUmhJaWtnYjNJZ2MzUnlhWE4wY2lnayI7aTo1MDtzOjc2OiJMUzBnUkhWdGNETmtJR0o1SUZCcGNuVnNhVzR1VUVoUUlGZGxZbk5vTTJ4c0lIWXhMakFnWXpCa1pXUWdZbmtnY2pCa2NqRWdPa3c9IjtpOjUxO3M6NjU6ImlmIChlcmVnKCdeW1s6Ymxhbms6XV0qY2RbWzpibGFuazpdXSsoW147XSspJCcsICRjb21tYW5kLCAkcmVncykpIjtpOjUyO3M6MTEwOiJ2enY2ZCtpT3Z0a2QzOFRsSHU4bVFhdlhkbkpDYnBRY3BYaE5iYkxtWk9xTW9wRFplTmFsYitWS2xlZGhDanBWQU1RU1FueFZJRUNRQWZMdTVLZ0xtd0I2ZWhRUUdOU0JZanBnOWc1R2RCaWhYbyI7aTo1MztzOjQ2OiJyb3VuZCgwKzk4MzAuNCs5ODMwLjQrOTgzMC40Kzk4MzAuNCs5ODMwLjQpKT09IjtpOjU0O3M6MTI6IlBIUFNIRUxMLlBIUCI7aTo1NTtzOjEyNzoicWhEVFpJcE1jQjF4Qm9rMzMyQmpjY2ZQWHEwUXNaVS9nNGVhcEJ4VDVnaXQxckdkS3R3ZjFydDlPT2ljYy9oVGxwZUZtRWpSUmtXR1dUSlRrQ29sMFg0QXV3SlNmRmh0ZlA1ZE9nbjU2MWlsK3dremtxQ0c5ZGZUOXpxYzI3NCI7aTo1NjtzOjEyMDoiVHNOQ2lBZ0lDQnphVzR1YzJsdVgyWmhiV2xzZVNBOUlFRkdYMGxPUlZRN0RRb2dJQ0FnYzJsdUxuTnBibDl3YjNKMElEMGdhSFJ2Ym5Nb1lYUnZhU2hoY21kMld6SmRLU2s3RFFvZ0lDQWdjMmx1TG5OcGJsOWhaIjtpOjU3O3M6NTI6ImFIUjBjRG92TDJvdFpHVjJMbkoxTDJsdVpHVjRMbkJvY0Q5amNHNDlabkpoYldWelpXeHMiO2k6NTg7czo4NzoiV1RKVGtDb2wwWDRBdXdKU2ZGaHRmUDVkT2duNTYxaWwrd2t6a3FDRzlkZlQ5enFjMjc0dmVJZVNkNDFDeFVJdkhGbit0Vzc3b0Uzb2hxU3YwMUJYelQwIjtpOjU5O3M6NzE6IkhCeWIzUnZLU0I4ZkNCa2FXVW9Ja1Z5Y205eU9pQWtJVnh1SWlrN0RRcGpiMjV1WldOMEtGTlBRMHRGVkN3Z0pIQmhaR1J5IjtpOjYwO3M6MTc6IldlYiBTaGVsbCBieSBib2ZmIjtpOjYxO3M6MTY6IldlYiBTaGVsbCBieSBvUmIiO2k6NjI7czoxMToiZGV2aWx6U2hlbGwiO2k6NjM7czoyMDoiU2hlbGwgYnkgTWF3YXJfSGl0YW0iO2k6NjQ7czo4OiJOM3RzaGVsbCI7aTo2NTtzOjExOiJTdG9ybTdTaGVsbCI7aTo2NjtzOjExOiJMb2N1czdTaGVsbCI7aTo2NztzOjIyOiJwcml2YXRlIFNoZWxsIGJ5IG00cmNvIjtpOjY4O3M6MTM6Inc0Y2sxbmcgc2hlbGwiO2k6Njk7czoyMToiRmFUYUxpc1RpQ3pfRnggRngyOVNoIjtpOjcwO3M6MTI6InI1N3NoZWxsLnBocCI7aTo3MTtzOjI3OiJkZWZhdWx0X2FjdGlvbiA9ICdGaWxlc01hbiciO2k6NzI7czo0MjoiV29ya2VyX0dldFJlcGx5Q29kZSgkb3BEYXRhWydyZWN2QnVmZmVyJ10pIjt9"));
$g_SusDB unserialize(base64_decode("YToxNTp7aTowO3M6MjA6ImluaV9nZXQoJ3NhZmVfbW9kZScpIjtpOjE7czoyMDoiaW5pX2dldCgic2FmZV9tb2RlIikiO2k6MjtzOjI4OiJldmFsKGd6aW5mbGF0ZShiYXNlNjRfZGVjb2RlIjtpOjM7czoxOToiZXZhbChiYXNlNjRfZGVjb2RlKCI7aTo0O3M6OToicm9vdHNoZWxsIjtpOjU7czoyMDoic3JwYXRoOi8vLi4vLi4vLi4vLi4iO2k6NjtzOjc6IjxpZnJhbWUiO2k6NztzOjk6InBocGluZm8oKSI7aTo4O3M6MzE6ImV2YWwoZ3p1bmNvbXByZXNzKGJhc2U2NF9kZWNvZGUiO2k6OTtzOjE4OiJldmFsKGJhc2U2NF9kZWNvZGUiO2k6MTA7czoxNDoiU0hPVyBEQVRBQkFTRVMiO2k6MTE7czoxNDoicG9zaXhfZ2V0cHd1aWQiO2k6MTI7czoxNzoiJGRlZmF1bHRfdXNlX2FqYXgiO2k6MTM7czoxMzoiZXZhbCh1bmVzY2FwZSI7aToxNDtzOjIzOiJkb2N1bWVudC53cml0ZSh1bmVzY2FwZSI7fQ=="));
$g_AdwareSig unserialize(base64_decode("YToxMjp7aTowO3M6MTk6Il9fbGlua2ZlZWRfcm9ib3RzX18iO2k6MTtzOjEzOiJMSU5LRkVFRF9VU0VSIjtpOjI7czoxODoiX19zYXBlX2RlbGltaXRlcl9fIjtpOjM7czoyNjoiZGlzcGVuc2VyLmFydGljbGVzLnNhcGUucnUiO2k6NDtzOjExOiJMRU5LX2NsaWVudCI7aTo1O3M6MTE6IlNBUEVfY2xpZW50IjtpOjY7czoxNToiZGIudHJ1c3RsaW5rLnJ1IjtpOjc7czoxNjoidGxfbGlua3NfZGJfZmlsZSI7aTo4O3M6MTU6IlRydXN0bGlua0NsaWVudCI7aTo5O3M6MTA6Ii0+U0xDbGllbnQiO2k6MTA7czoxMToiLT5HZXRfTGlua3MiO2k6MTE7czo4MDoiaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSAmJiAoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddID09ICdMTVBfUm9ib3QiO30="));

////////////////////////////////////////////////////////////////////////////
$l_Res '';

$g_Structure = array();
$g_Counter 0;

$g_FileInfo = array();
$g_Iframer = array();

$g_TotalFolder 0;
$g_TotalFiles 0;

error_reporting(E_ALL E_NOTICE E_WARNING);

header("Content-Type: text/html;charset=windows-1251nn");

define('MAX_ALLOWED_PHP_HTML_IN_DIR'100);
define('BASE64_LENGTH'100);
?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251" >

<style type="text/css">
 body {
   font-family: Georgia;
   color: #303030;
   background: #FFFFF0; 
   font-size: 12px;
   margin: 20px;
   padding: 0;
 }

 h3 {
   font-size: 27px;
   margin: 0 0;
 }

 .sec {
  font-size: 25px;
  margin-bottom: 10px;
 }


 .warn {
   color: #FF4C00;
   margin: 0 0 20px 0;
 }

 .warn .it {
   color: #FF4C00;
 }

 .warn2 {
   color: #42ADFF;
   margin: 0 0 20px 0;
 }

 .warn2 .it {
   color: #42ADFF;
 }

 .ok {
   color: #007F0E;
   margin: 0 0 20px 0;
 }

 .vir {
    color: #A00000;
    margin: 0 0 20px 0;
  }

 .vir .it {
    color: #A00000;
 }

 .disclaimer {
   font-size: 11px;
   font-family: Arial;
   color: #505050;
   margin: 10px 0 10px 0;
 }

 .thanx {
  border: 1px solid #F0F0F0;
   padding: 20px 20px 10px 20px;
  font-size: 12px;
  font-family: Arial;
  background: #FBFFBA;
 }

 .footer {
  margin: 40px 0 0 0;
 }

 .rep {
  margin: 10px 0 20px 0;
 }

 .notice
 {
  border: 1px solid cornflowerblue;
  padding: 10px;
  font-size: 12px;
  font-family: Arial;
  background: #E8F8F8;
 }

 .offer {
   position: absolute;
   width: 350px;
   right: 100px;
   top: 100px;
   background: #E08080;
   color: white;
   font-size: 11px;
   font-family: Arial;
   padding: 20px 20px 10px 20px;

 }

 .offer A {
   color: yellow;
 }

 .update {
   color: red;
   font-size: 12px;
   font-family: Arial;
   margin: 0 0 20px 0;
 }

 .tbg0 {
 }

 .tbg1 {
   background: #F0F0F0;
 }

 .it {
    font-size: 12px;
    font-family: Arial;
 }

 .ctd {
    font-size: 12px;
    font-family: Arial;
    color: #909090;
 }

 .flist {
   margin: 10px 0 30px 0;
 }

 .tbgh {
   background: #E0E0E0;
 }

 TH {
   text-align: left;
   font-size: 12px;
   font-family: Arial;
   color: #909090;
 }
</style>
</head>
<body>

<?php

////////////////////////////////////////////////////////////////////////////
$l_Result '';

$l_Result .= '<h3>AI-Болит v.20120414 &mdash; удаленькая искалка вредоносного ПО на хостинге.</h3><h5>Григорий Земсков, 2012, <a target=_blank href="http://revisium.com/ai/">Страница проекта на revisium.com.</a></h5>';


$l_CreationTime filemtime(__FILE__);
if (
time() - $l_CreationTime 86400) {
  
$l_Result .= '<div class="update">Проверьте обновление на сайте <a href="http://revisium.com/ai/">http://revisium.com/ai/</a>. Возможно, ваша версия скрипта уже устарела.</div>';
}


define('QCR_INDEX_FILENAME''fn');
define('QCR_INDEX_TYPE''type');
define('QCR_INDEX_WRITABLE''wr');
define('QCR_SVALUE_FILE''1');
define('QCR_SVALUE_FOLDER''0');

///////////////////////////////////////////////////////////////////////////
function printList($par_List) {
  global 
$g_Structure;

  
$l_Result '';
  
$l_Result .= "<div class="flist"><table cellspacing=1 cellpadding=4 border=0>";

  
$l_Result .= "<tr class="tbgh" . ( $i % 2 ). "">";
  
$l_Result .= "<th>Путь</th>";
  
$l_Result .= "<th>Дата создания</th>";
  
$l_Result .= "<th>Дата модификации</th>";
  
$l_Result .= "<th width=90>Размер (bytes)</th>";
  
$l_Result .= "</tr>";

  for (
$i 0$i count($par_List); $i++) {
     
$l_Creat $g_Structure['c'][$par_List[$i]] > date("d/m/Y H:i"$g_Structure['c'][$par_List[$i]]) : '-';
     
$l_Modif $g_Structure['m'][$par_List[$i]] > date("d/m/Y H:i"$g_Structure['m'][$par_List[$i]]) : '-';
     
$l_Size $g_Structure['s'][$par_List[$i]] > $g_Structure['s'][$par_List[$i]] : '-';

     
$l_Result .= "<tr class="tbg" . ( $i % 2 ). "">";
     
$l_Result .= "<td><div class="it">" $g_Structure['n'][$par_List[$i]] . "</div></td>";
     
$l_Result .= "<td><div class="ctd">" $l_Creat "</div></td>";
     
$l_Result .= "<td><div class="ctd">" $l_Modif "</div></td>";
     
$l_Result .= "<td><div class="ctd">" $l_Size "</div></td>";
     
$l_Result .= "</tr>";

  }

  
$l_Result .= "</table></div>";

  return 
$l_Result;
}

///////////////////////////////////////////////////////////////////////////
function QCR_ScanDirectories($l_RootDir) {
    global 
$g_Structure$g_Counter$g_Doorway;
    
$l_DirCounter 0;
    
$l_DoorwayFilesCounter 0;
    
$l_SourceDirIndex $g_Counter 1;

    if (
$l_DIRH opendir($l_RootDir)) {
       while (
$l_FileName readdir($l_DIRH)) {

          if (
$l_FileName == '.' || $l_FileName == '..') continue;

          
$l_FileName $l_RootDir '/' $l_FileName;

          
$l_Ext substr($l_FileNamestrrpos($l_FileName'.') + 1);

      
$l_IsDir is_dir($l_FileName);

            
$l_NeedToScan = (in_array($l_Ext, array('js''php''php3'
                           
'php4''php5''tpl''inc''htaccess''html''htm'))) || 
                
SCAN_ALL_FILES;  

      if (
$l_IsDir) {
             
$g_Structure['d'][$g_Counter] = $l_IsDir;
             
$g_Structure['n'][$g_Counter] = $l_FileName;

             
$l_DirCounter++;

             if (
$l_DirCounter MAX_ALLOWED_PHP_HTML_IN_DIR) {
                 
$g_Doorway[] = $l_SourceDirIndex;
                 
$l_DirCounter = -655360;
             }

             
$g_Counter++;

             
QCR_ScanDirectories($l_FileName);

         } else {
            if (
$l_NeedToScan) {
               
$g_Counter++;
               if (
in_array($l_Ext, array('php''php3'
                             
'php4''php5''html''htm'))) {
                  
$l_DoorwayFilesCounter++;

                  if (
$l_DoorwayFilesCounter MAX_ALLOWED_PHP_HTML_IN_DIR) {
                     
$l_Doorway[] = $l_SourceDirIndex;
                     
$l_DoorwayFilesCounter= -655360;
                  }
               }

               
$l_Stat stat($l_FileName);

               
$g_Structure['d'][$g_Counter] = $l_IsDir;
               
$g_Structure['n'][$g_Counter] = $l_FileName;
               
$g_Structure['s'][$g_Counter] = $l_Stat['size'];
               
$g_Structure['c'][$g_Counter] = $l_Stat['ctime'];
               
$g_Structure['m'][$g_Counter] = $l_Stat['mtime'];

               
$g_Counter++;
          }
         }
       }

       
closedir($l_DIRH);
    }

    return 
$l_Structure;
}

///////////////////////////////////////////////////////////////////////////
function QCR_GoScan($par_Offset) {
   global 
$g_Iframer$g_SuspDir$g_Redirect$g_Doorway$g_EmptyLink$g_Structure$g_Counter,
          
$g_WritableDirectories$g_CriticalPHP$g_TotalFolder$g_TotalFiles$g_WarningPHP$g_AdwareList
          
$g_CriticalPHP;

//print "<pre>";
//var_dump($g_Structure);
//print "</pre>";

   
for ($i $par_Offset$i $g_Counter$i++) {

        
$l_Filename $g_Structure['n'][$i];

        if (
$g_Structure['d'][$i]) 
        {
          
// FOLDER
          
$g_TotalFolder++;

          if (
is_writable($l_Filename)) {
             
$g_WritableDirectories[] = $i;
          }   
        } 
        else 
        {
          
// FILE
          
$g_TotalFiles++;

          
$l_Content join(''file($l_Filename));

          
// warnings
          
if (WarningPHP($l_Filename$l_Content)) 
          {
            
$g_WarningPHP[] = $i;
          }

          
// adware
          
if (Adware($l_Filename$l_Content)) 
          {
            
$g_AdwareList[] = $i;
          }

          
// critical
          
if (CriticalPHP($l_Filename$i$l_Content)) 
          {
            
$g_CriticalPHP[] = $i;
          }


          if 
             (
stripos($l_Filename'index.php') || 
             
stripos($l_Filename'index.htm') || 
             
SCAN_ALL_FILES) {
              if (
stripos($l_Content'<iframe')) 
              {
                 
$g_Iframer[] = $i;
              }
              
              if (
preg_match('|<a.+?>s*</a>|smi'$l_Content$l_Found)) 
              {
                 
$g_EmptyLink[] = $i;
              }
              
          }

         
// articles
         
if (stripos($l_Filename'article_index')) {
        
$g_AdwareSig[] = $i;
         }

         
// htaccess
         
if (stripos($l_Filename'.htaccess')) {
           if (
stripos($l_Content'index.php?name=$1') || 
               
stripos($l_Content'index.php?m=1')) {
               
$g_SuspDir[] = $i;
           }

           
$l_HTAContent preg_replace('|^s*#.+$|m'''$l_Content);
                                                                              
           if (
             
preg_match_all("|RewriteRules+.+?s+http://(.+?)/.+s+[.*R=d+.*]|smi"$l_HTAContent$l_FoundPREG_SET_ORDER)
              )  {
                 
$l_Host str_replace('www.'''$_SERVER['HTTP_HOST']);
                  for (
$j 0$j sizeof($l_Found); $j++)
                  {
                         
$l_Found[$j][1] = str_replace('www.'''$l_Found[$j][1]);
                     if (
$l_Found[$j][1] != $l_Host
                     {    
                         
$g_Redirect[] = $i;
                         break;
                     }
                  }
           }
        }
      } 
// end of if (file)

      
usleepSCAN_DELAY 1000 );
      
   } 
// end of for

}

///////////////////////////////////////////////////////////////////////////
function WarningPHP($l_FN$l_Content
{
  global 
$g_SusDB;

  
$l_Res false;

  foreach (
$g_SusDB as $l_Item
  {
    if (
stripos($l_Content$l_Item) && !stripos($l_Content'GGHJKJHG4567654FGGGGG')) {
       
$l_Res true;
       break;
    } 
  }

  return 
$l_Res
}

///////////////////////////////////////////////////////////////////////////
function Adware($l_FN$l_Content
{
  global 
$g_AdwareSig;

  
$l_Res false;

  foreach (
$g_AdwareSig as $l_Item
  {
    if (
stripos($l_Content$l_Item) && !stripos($l_Content'GGHJKJHG4567654FGGGGG')) {
       
$l_Res true;
       break;
    } 
  }

  return 
$l_Res
}

///////////////////////////////////////////////////////////////////////////
function CriticalPHP($l_FN$l_Index,  $l_Content
{
  global 
$g_DBShe$g_Base64;

  
// GGHJKJHG4567654FGGGGG
  
$l_Res false;

  foreach (
$g_DBShe as $l_Item
  {
    if (
stripos($l_Content$l_Item) && !stripos($l_Content'GGHJKJHG4567654FGGGGG')) {
       
$l_Res true;
       break;
    } 
  }

  
// detect base64 suspicious
  
if (preg_match('|([A-Za-z0-9+/]{' BASE64_LENGTH ',})|smi'$l_Content$l_Found
    && (
stripos($l_Content'eval') || stripos($l_Content'create_function') || stripos($l_Content'base64_decode'))
    && !
stripos($l_Content'GGHJKJHG4567654FGGGGG')) {
     
$g_Base64[] = $l_Index;
  }

  return 
$l_Res
}


///////////////////////////////////////////////////////////////////////////

if ($_GET['p'] != PASS && isset($_SERVER['HTTP_HOST'])) {
  print 
"Запустите скрипт с паролем, который установлен в переменной PASS (в начале файла). <br/>Например, так http://ваш_сайт_и_путь_до_скрипта/ai-bolit.php?p=<b>aaa123</b>";
  exit;
}

if (!
is_readable('.')) {
  print 
"Текущая директория не доступна для чтения скрипту. Пожалуйста, укажите права на доступ <b>rwxr-xr-x</b> или с помощью командной строки <b>chmod +r имя_директории</b>";
  exit;
}

QCR_ScanDirectories('.');
QCR_GoScan(0);

////////////////////////////////////////////////////////////////////////////

$l_Result .= "<div class="sec"><b>Отчет по " $_SERVER['HTTP_HOST'] . "</b></div>";

$l_Result .= "<div class="rep">Всего проверено $g_TotalFolder директорий и $g_TotalFiles файлов. Известно "count($g_DBShe) ." шелл-сигнатур.</div>";

$l_Result .= "<div class="sec">Критические замечания</div>";

$l_ShowOffer false;

if (
count($g_CriticalPHP) > 0) {

  
$l_Result .= "<div class="vir">Найдены сигнатуры шелл-скрипта. Подозрение на вредоносный скрипт:";
  
$l_Result .= printList($g_CriticalPHP);
  
$l_Result .= "</div>";

  
$l_ShowOffer true;
} else {

  
$l_Result .= '<div class="ok">Шелл-скрипты не найдены.</div>';

}

if (
count($g_Base64) > 0) {
  
$l_ShowOffer true;

  
$l_Result .= "<div class="vir">Найдены длинные зашифрованные последовательности в PHP. Подозрение на вредоносный скрипт:";
  
$l_Result .= printList($g_Base64);
  
$l_Result .= "</div>";



if (
count($g_Iframer) > 0) {
  
$l_ShowOffer true;

  
$l_Result .= "<div class="vir">Подозрение на вредоносный скрипт:";
  
$l_Result .= printList($g_Iframer);
  
$l_Result .= "</div>";



if (
count($g_SuspDir) > 0) {

  
$l_Result .= "<div class="vir">Скорее всего этот файл лежит в каталоге с дорвеем:";
  
$l_Result .= printList($g_SuspDir);
  
$l_Result .= "</div>";

} else {

  
$l_Result .= '<div class="ok">Не найдено директорий c дорвеями</div>';

}

$l_Result .= "<div class="sec">Предупреждения</div>";

if (
count($g_Redirect) > 0) {

  
$l_ShowOffer true;
  
$l_Result .= "<div class="warn">Редирект на внешний сервер. Возможно, дорвей или вредоносный скрипт:";
  
$l_Result .= printList($g_Redirect);
  
$l_Result .= "</div>";



if (
count($g_AdwareList) > 0) {
  
$l_ShowOffer true;

  
$l_Result .= "<div class="warn">В этих файлах размещен код по продаже ссылок. Убедитесь, что размещали его вы:";
  
$l_Result .= printList($g_AdwareList);
  
$l_Result .= "</div>";



if (
count($g_EmptyLink) > && SCAN_ALL_FILES) {
  
$l_ShowOffer true;

  
$l_Result .= "<div class="warn">В этих файлах размещены невидимые ссылки. Подозрение на ссылочный спам:<ul><li>";
  
$l_Result .= printList($g_EmptyLink);
  
$l_Result .= "</div>";



if (
count($g_Doorway) > 0) {
  
$l_ShowOffer true;

  
$l_Result .= "<div class="warn">Найдены директории, в которых подозрительно много файлов .php или .html. Подозрение на дорвей:";
  
$l_Result .= printList($g_Doorway);
  
$l_Result .= "</div>";



if (
count($g_WarningPHP) > 0) {
  
$l_ShowOffer true;

  
$l_Result .= "<div class="warn">Скрипт использует код, которые часто используются во вредоносных скриптах:";
  
$l_Result .= printList($g_WarningPHP);
  
$l_Result .= "</div>";

} else {

  
$l_Result .= '<div class="ok">Подозрительные скрипты не найдены</div>';

}

if (
count($g_WritableDirectories) > 0) {

  
$l_Result .= "<div class="warn2">Потенциально небезопасно! Директории, доступные скрипту на запись:";
  
$l_Result .= printList($g_WritableDirectories);
  
$l_Result .= "</div>";

} else {

  
$l_Result .= '<div class="ok">Не найдено директорий, доступных на запись скриптом</div>';

}

if (!
SCAN_ALL_FILES) {
  
$l_Result .= '<div class="notice"><span class="vir">[!]</span> В скрипте отключено полное сканирование файлов, проверяются только .php, .html, .htaccess. Чтобы выполнить более тщательное сканирование, <br/>поменяйте значение константы на <b>define('SCAN_ALL_FILES', 1);</b> в самом верху скрипта. Скрипт в этом случае может работать очень долго. Рекомендуется отключить на хостинге лимит по времени выполнения, либо запускать скрипт из командной строки.</div>';
}

$l_Result .= '<div class="footer"><div class="disclaimer"><span class="vir">[!]</span> Отказ от гарантий: даже если скрипт не нашел вредоносных скриптов на сайте, автор не гарантирует их полное отсутствие, а также не несет ответственности за возможные последствия работы скрипта ai-bolit.php или неоправданные ожидания пользователей относительно функциональности и возможностей.</div>';
$l_Result .= '<div class="thanx">Замечания и предложения по работе скрипта присылайте на <a href="mailto:audit@revisium.com">audit@revisium.com</a>.<p>Также буду чрезвычайно благодарен за любые упоминания скрипта ai-bolit на вашем сайте, в блоге, среди друзей, знакомых и клиентов. Ссылочку можно поставить на <a href="http://revisium.com/ai/">http://revisium.com/ai/</a>. <p>Если будут вопросы - пишите <a href="mailto:audit@revisium.com">audit@revisium.com</a>. Кстати, еще я написал <a href="http://sale.qpl.ru/">скрипт доски объявлений</a> и собрал точную <a href="http://gzq.ru/">базу IP</a> по городам России.</div>';
$l_Result .= '</div>';

if (
$l_ShowOffer) {
  print 
'<div class="offer">' 
        
'Не уверены, как правильно <b>очистить сервер от вредоносного ПО</b>? Напишите мне через <a href="http://www.revisium.com/ru/contacts/">форму на сайте</a> или на email: <a href="mailto:audit@revisium.com">audit@revisium.com</a>. Помогу за небольшое денежное вознаграждение.<p>' 
        
'Если скрипт оказался вам полезен, <br><a href="http://revisium.com/ai/others.php"><b>поддержите проект материально</b></a>. Спасибо.' 
        
'</div>';
}

////////////////////////////////////////////////////////////////////////////
print $l_Result;
?>
Онлайн: 3
Реклама