123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289 |
- <?php
- error_reporting(0);
- $commands=getopt('h:f:d:s:n:l:i:m:z:c:j:v:b:');
- $name='HutAV';
- $ver='1.0.0';
- $prog_dir='C:\hAV';
- $filtermd='hashes_list';
- $filtersd='domains_list';
- if(strpos(php_uname(),'Windows')!==false){
- $sobs="\\";
- }else{
- $sobs='/';
- }
- if($commands['h']=="c"){
- echo "$name -------------------------------------------------------------------------------------------\n";
- echo "-h c Команды\n";
- echo "-f [имя файла] Сканировать файл\n";
- echo "-d [директория] Сканировать все файлы на выбранном директории\n";
- echo "-s cd Сканировать все файлы на текущем директории\n";
- echo "-n [домен или IP] Сканировать веб-сайт\n";
- echo "-l [файл списка доменов] Сканировать веб-сайты из списка доменов\n";
- echo "-i sigs Информация о списков хэшов от вредоносных файлов, вредоносных сайтов\n";
- echo "-m [хэш MD5] Сканировать хэш MD5\n";
- echo "-z [файл списка хэшов] Сканировать хэши файлов MD5 из списка хэшов MD5\n";
- echo "-с delinfected При сканировании удалять вредоносные файлы\n";
- echo "-j Отключить лог сканирования\n";
- echo "-v prog Версия программы\n";
- die();
- }
- if(isset($commands['b'])){
- if(strpos(php_uname(),'Windows')!==false){
- }else{
- echo "Ошибка антивируса: Это только для Windows!";
- die();
- }
- $filter = fopen($prog_dir.$sobs.$filtermd,'r')or die('Ошибка антивируса: Не удалось открыть базу вирусов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtermd));
- fclose($filter);
- $md5 = md5_file($commands['b']);
- if(empty($md5)){
- system("mshta \"javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Файл не найден', 10, '$name', 64 );close()\"");
- die();
- }
- if(strpos($filterc,$md5)!==false){
- system("mshta \"javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Файл [".basename($commands['b'])."] вредоносный\\nMD5-хэш файла: ".$md5."', 10, '$name', 64 );close()\"");
- }else{
- system("mshta \"javascript:var sh=new ActiveXObject( 'WScript.Shell' ); sh.Popup( 'Файл [".basename($commands['b'])."] чистый\\nMD5-хэш файла: ".$md5."', 10, '$name', 64 );close()\"");
- }
- die();
- }
- if($commands['v']=='prog'){
- echo $name.' '.$ver;
- die();
- }
- if(isset($commands['z'])){
- $filter = fopen($prog_dir.$sobs.$filtermd,'r')or die('Ошибка антивируса: Не удалось открыть базу вирусов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtermd));
- fclose($filter);
- $infected = 0;
- $clean = 0;
- $list = file($commands['z']);
- if(isset($commands['j'])==false){
- $log = "Дата сканирования: ".date("Y-m-d h:i:s")."\n";
- $log .= "-----------------------------------------------------\n";
- }
- foreach($list as $hash){
- $hash = preg_replace('~[\r\n]+~','',$hash);
- $hash = strtolower($hash);
- if(preg_match('/^[a-f0-9]{32}$/i', $hash)){
- if(strpos($filterc,$hash)!==false){
- echo "Хэш файла [".$hash."] - опасен\n";
- if(isset($commands['j'])==false){
- $log .= "Хэш файла [".$hash."] - опасен\n";
- }
- $infected++;
- }else{
- echo "Хэш файла [".$hash."] - чистый\n";
- if(isset($commands['j'])==false){
- $log .= "Хэш файла [".$hash."] - чистый\n";
- }
- $clean++;
- }
- }
- }
- if(isset($commands['j'])==false){
- $log .= "-----------------------------------------------------\n";
- $log .= "Найдено $infected опасных хэшов\n";
- $log .= " $clean чистых хэшов\n";
- $logf = fopen($prog_dir.$sobs.'dav_scan.log','w') or die('Ошибка антивируса: Не удалось создать лог сканировании');
- fwrite($logf,$log);
- fclose($logf);
- echo "Лог файл: $prog_dir"."$sobs"."dav_scan.log\n";
- }
- echo "Найдено $infected опасных хэшов\n";
- echo " $clean чистых хэшов\n";
- die();
- }
- if(isset($commands['m'])){
- $filter = fopen($prog_dir.$sobs.$filtermd,'r')or die('Ошибка антивируса: Не удалось открыть базу вирусов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtermd));
- fclose($filter);
- if(strpos($filterc,$commands['m'])!==false){
- echo "Хэш файла [".$commands['m']."] - опасен\n";
- }else{
- echo "Хэш файла [".$commands['m']."] - безопасен\n";
- }
- die();
- }
- if($commands['i']=='sigs'){
- echo "Список хэшов от вредоносных файлов\n";
- echo "В списке: ".number_format(count(file($prog_dir.$sobs.$filtermd)))." хэшов\n\n";
- echo "Список вредоносных сайтов\n";
- echo "В списке: ".number_format(count(file($prog_dir.$sobs.$filtersd)))." доменов";
- die();
- }
- if(isset($commands['l'])){
- $filter = fopen($prog_dir.$sobs.$filtersd,'r')or die('Ошибка антивируса: Не удалось открыть базу вредоносных сайтов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtersd));
- fclose($filter);
- $list = file($commands['l']);
- $dangerous = 0;
- $clean = 0;
- foreach($list as $domain){
- $domain = str_replace('www.','',$domain);
- $domainws = preg_replace('~[\r\n]+~','',$domain);
- $domainws = strtolower($domainws);
- if(preg_match('/([a-zA-Z0-9\-_]+\.)?[a-zA-Z0-9\-_]+\.[a-zA-Z]{2,5}/',$domainws)){
- if(strpos($filterc,$domainws)!==false){
- echo "Сайт [".$domainws."] - опасен\n";
- if(isset($commands['j'])==false){
- $log .= "Сайт [".$domainws."] - опасен\n";
- }
- $dangerous++;
- }else{
- echo "Сайт [".$domainws."] - безопасен\n";
- if(isset($commands['j'])==false){
- $log .= "Сайт [".$domainws."] - безопасен\n";
- }
- $clean++;
- }
- }elseif(filter_var($domainws,FILTER_VALIDATE_IP)){
- if(strpos($filterc,$domainws)!==false){
- echo "Сайт [".$domainws."] - опасен\n";
- if(isset($commands['j'])==false){
- $log .= "Сайт [".$domainws."] - опасен\n";
- }
- $dangerous++;
- }else{
- echo "Сайт [".$domainws."] - безопасен\n";
- if(isset($commands['j'])==false){
- $log .= "Сайт [".$domainws."] - безопасен\n";
- }
- $clean++;
- }
- }
- }
- if(isset($commands['j'])==false){
- $log .= "-----------------------------------------------------\n";
- $log .= "Найдено $dangerous опасных сайтов\n";
- $log .= " $clean безопасных сайтов\n";
- $logf = fopen($prog_dir.$sobs.'dav_scan.log','w') or die('Ошибка антивируса: Не удалось создать лог сканировании');
- fwrite($logf,$log);
- fclose($logf);
- echo "Лог файл: $prog_dir"."$sobs"."dav_scan.log\n";
- }
- echo "Найдено $dangerous опасных сайтов\n";
- echo " $clean безопасных сайтов\n";
- die();
- }
- if(isset($commands['n'])){
- $filter = fopen($prog_dir.$sobs.$filtersd,'r')or die('Ошибка антивируса: Не удалось открыть базу вредоносных сайтов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtersd));
- fclose($filter);
- $commands['n'] = strtolower($commands['n']);
- if(strpos($filterc,$commands['n'])!==false){
- echo "Сайт [".$commands['n']."] - опасен\n";
- }else{
- echo "Сайт [".$commands['n']."] - безопасен\n";
- }
- die();
- }
- if(isset($commands['f'])){
- $filter = fopen($prog_dir.$sobs.$filtermd,'r')or die('Ошибка антивируса: Не удалось открыть базу вирусов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtermd));
- fclose($filter);
- $md5 = md5_file($commands['f']);
- if(empty($md5)){
- echo "Ошибка антивируса: Файл не найден.";
- die();
- }
- if(strpos($filterc,$md5)!==false){
- echo "Файл [".basename($commands['f'])."] - вредоносный\n";
- if($commands['c']=="delinfected"){
- unlink($commands['f']);
- }
- }else{
- echo "Файл [".basename($commands['f'])."] - чистый\n";
- }
- echo "MD5-хэш файла: ".$md5;
- die();
- }
- if($commands['s']=='cd'){
- $filter = fopen($prog_dir.$sobs.$filtermd,'r') or die('Ошибка антивируса: Не удалось открыть базу вирусов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtermd));
- fclose($filter);
- $infected = 0;
- $clean = 0;
- $files = array_filter(glob('*'),'is_file');
- if(isset($commands['j'])==false){
- $log = "Сканировано ".count($files)." файлов, в директории: ".getcwd()."\nДата сканирования: ".date("Y-m-d h:i:s")."\n";
- $log .= "-----------------------------------------------------\n";
- }
- foreach($files as $file){
- $md5 = md5_file($file);
- if(strpos($filterc,$md5)!==false){
- echo "Файл [".basename($file)."] - вредоносный\n";
- if(isset($commands['j'])==false){
- $log .= "Файл [".basename($file)."] - вредоносный\n";
- }
- if($commands['c']=="delinfected"){
- unlink(getcwd().$sobs.$file);
- }
- $infected++;
- }else{
- echo "Файл [".basename($file)."] - чистый\n";
- if(isset($commands['j'])==false){
- $log .= "Файл [".basename($file)."] - чистый\n";
- }
- $clean++;
- }
- }
- if(isset($commands['j'])==false){
- $log .= "-----------------------------------------------------\n";
- $log .= "Найдено $infected вредоносных файлов\n";
- $log .= " $clean чистых файлов\n";
- $logf = fopen($prog_dir.$sobs."dav_scan.log","w") or die('Ошибка антивируса: Не удалось создать лог сканировании');
- fwrite($logf,$log);
- fclose($logf);
- }
- echo "Лог файл: $prog_dir"."$sobs"."dav_scan.log\n";
- echo "Найдено $infected вредоносных файлов\n";
- echo " $clean чистых файлов\n";
- die();
- }
- if(isset($commands['d'])){
- $filter = fopen($prog_dir.$sobs.$filtermd,'r') or die('Ошибка антивируса: Не удалось открыть базу вирусов');
- $filterc = fread($filter,filesize($prog_dir.$sobs.$filtermd));
- fclose($filter);
- $infected = 0;
- $clean = 0;
- $files = array_filter(glob($commands['d'].$sobs.'*'),'is_file');
- if(isset($commands['j'])==false){
- $log = "Сканировано ".count($files)." файлов, в директории: ".$commands['d']."\nДата сканирования: ".date("Y-m-d h:i:s")."\n";
- $log .= "-----------------------------------------------------\n";
- }
- foreach($files as $file){
- $md5 = md5_file($file);
- if(strpos($filterc,$md5)!==false){
- echo "Файл [".basename($file)."] - вредоносный\n";
- if(isset($commands['j'])==false){
- $log .= "Файл [".basename($file)."] - вредоносный\n";
- }
- if($commands['c']=="delinfected"){
- unlink($file);
- }
- $infected++;
- }else{
- echo "Файл [".basename($file)."] - чистый\n";
- if(isset($commands['j'])==false){
- $log .= "Файл [".basename($file)."] - чистый\n";
- }
- $clean++;
- }
- }
- if(isset($commands['j'])==false){
- $log .= "-----------------------------------------------------\n";
- $log .= "Найдено $infected вредоносных файлов\n";
- $log .= " $clean чистых файлов\n";
- $logf = fopen($prog_dir.$sobs.'dav_scan.log','w') or die('Ошибка антивируса: Не удалось создать лог сканировании');
- fwrite($logf,$log);
- fclose($logf);
- echo "Лог файл: $prog_dir"."$sobs"."dav_scan.log\n";
- }
- echo "Найдено $infected вредоносных файлов\n";
- echo " $clean чистых файлов\n";
- die();
- }
- ?>
|