View file admin/anti/antishell.php

File size: 5.81Kb
<?php
    include '../../engine/includes/start.php';
    if (!$creator)
        Core::stop();
    $set['title'] = 'AntiShell | Сканер файлов';
    require incDir.'head.php';

    class file_search
    {
        public
            $key,
            $arr,
            $m = 0,
            $method,
            $kolvo = 0;

        public function file_search($key, $method)
        {
            $key = trim(str_replace('  ',' ',str_replace("\r\n",' ',$key)));
            $this->method=$method;
            if ($method == 1)
                $key=strtolower($key);
            $this->key = explode(' ',$key);
            return;
        }

        public function go_skan($dir)
        {
            $this->open_dir($dir);
            //krsort($this->arr);
            return $this->arr;
        }

        public function open_dir($dir)
        {
            if ($is = opendir($dir))
            {
                while (false !== ($file = readdir($is)))
                {
                    if ($file!='.' && $file!='..' )
                    {
                        if (is_file($dir.'/'.$file))
                        {
                            $size = filesize($dir . '/' . $file);
                            if ($size>=1)
                            {
                                $this->kolvo++;
                                $fopen = fopen($dir.'/'.$file,'r');
                                $list = fread($fopen,$size);
                                fclose($fopen);
                                $wiev = '';
                                $m = 0;
                                $this->m++;
                                if ($this->method==1)
                                    $list = strtolower($list);
                                foreach ($this->key as $key)
                                {
                                    if (strstr($list,trim($key)))
                                    {
                                        $m++;
                                        $wiev.='=|+|+|='.$key;
                                    }
                                }
                                if (!empty($wiev))
                                    $this->arr[$m.'.'.$this->m] = $dir.'/'.$file.$wiev;
                            }
                        }
                        else
                            $this->open_dir($dir.'/'.$file);
                    }
                }
            }
            return;
        }
    }


    if (isset($_POST['search']) && isset($_POST['dir']))
    {
        if (isset($_POST['method']))
            $method = $_POST['method'];
        else
            $method = 2;
        $class = new file_search($_POST['search'], $method);
        $wieF  = $class->go_skan($_POST['dir']);
        $kolvo = $class->kolvo;
        unset($class);

        if (is_array($wieF))
        {
            echo '<div class="post">Просканированно: '.$kolvo.' файл.<br />По ключевым словам найдено: '.count($wieF).' файлов.</div>';
            foreach($wieF as $list)
            {
                $list = explode('=|+|+|=', $list);
                $count=count($list);
                echo '<div class="post">B Файле: <a href="'.$list[0].'">'.$list[0].'</a> найдено: '.($count - 1).' совпадений согласно запросу!<br />Найдены ключевые слова:<br /><div style="background-color: #aaaaff">';
                for($i=1; $i < $count; $i++)
                {
                    echo '<span class="status">'.$list[$i].'</span>, '; 
                }
                echo  '<br /></div></div>';
            }
        }
        else
            echo 'По вашему запросу в данной директории не найдено не одного файла!<br />';
    }
    else
        ?><div class="post">Не рекомендуется проводить поиск сразу по всему серверу если у вас много файлов храниться на хосте, сканируйте каждую папку по очереди. 
                В противном случае скрипт либо не выполнится до конца либо повесит сервер. Старайтесь не применять поиск с "Без учета регистра" это увеличивает нагрузку на сервер! <br />
                Также ищите такие файлы как access.log, error_log, thumbs.db и тд и тп</div>
            <form method="post">Директория (без слэша в конце):<br />
            <input type="text" name="dir" value="../.." /><br />
            Ключевые слова (через пробел):<br />
            <textarea rows="4" cols="15" name="search">rmdir unlink chmod eval mkdir &lt;iframe&gt;</textarea><br />
            <input type="checkbox" name="method" value="1" /> Без учета регистра<br /><br />
            <input type="submit" value="Искать" /></form>
            <div class="post">Информация по функциям:<br />
            <span class="status">rmdir</span>(); - Удаляет директорию (если она пуста)<br />
            <span class="status">unlink</span>(); - Удаляет файл<br />
            <span class="status">chmod</span>(); - Выставляет/изменяет права доступа<br />
            <span class="status">eval</span>(); - Выполняет php код<br />
            <span class="status">mkdir</span>(); - Создает директорию</div>
            <a href='/admin/'><div class="menu_razd">Админка</div></a>
    <?php
    include incDir.'foot.php';