Ochrona komputera poprzez skanowanie

skanowanie wirusów

Skanowanie jest w zasadzie jedną z najstarszych form działa łania programów antywirusowych, możliwości takie posiadały już pierwsze programy antywirusowe które pojawiły się na rynku pod koniec lat osiemdziesiątych, dzisiaj także jest to skuteczna metoda zwłaszcza wtedy gdy użytkownik z różnych powodów podejrzewa możliwość zainfekowania swojego komputera przez groźne oprogramowanie. Skanowanie obecnie działa w kilku różnych trybach tak aby jak najlepiej zabezpieczać i chronić komputer.

Po pierwsze jest to tryb pełnego skanowania uruchamiany przez samego użytkownika, użytkownik może także wskazać które pliki chce skanować, czy też które nośniki, jeśli są one jego zdaniem potencjalnie zainfekowane. Takie skanowanie pomaga w znacznym stopniu wykrywać groźne wirusy i tym podobne oprogramowanie, jeśli oczywiście zachodzi taka konieczność. Nowoczesne programy antywirusowe mają także możliwość skanowania najczęściej infekowanych obszarów w przypadku danego systemu operacyjnego. Z biegiem czasu założenia odnośnie tego jakie obszary w systemie skanować przy tak zwanym szybkim skanowaniu mogą się także w pewnym stopniu zmieniać, informacje odnośnie tego program pobierać powinien automatycznie podczas pobierania aktualizacji.

Programy antywirusowe są w stanie także samoczynnie uruchamiać skanowanie wtedy gdy użytkownik nie korzysta z komputera w ogóle lub gdy pozwala na to obciążenie procesora, w zależności od tego co aktualnie na komputerze robi użytkownik. Takie skanowanie zawsze można rzecz jasna wyłączyć, warto wtedy jednak pamiętać o tym aby samemu co jakiś czas wykonywać takie saknowanie. Aby skanowanie komputera mogło być skuteczne ważne są także regularne aktualizacje oprogramowania antywirusowego.

Groźne oprogramowanie rozpoznawane jest przede wszystkim na podstawie tak zwanych sygnatur, które program antywirusowy pobiera przy aktualizacjach. Sygnatura jest charakterystycznym kodem, mówiąc prościej ciągiem znaków, które są nie powtarzalne dla danego programu, poza tym w znacznym stopniu przyśpiesza to wyszukiwanie, nie oznacza to bynajmniej, że jest to jedyny sposób w jaki oprogramowanie antywirusowe jest w stanie rozpoznawać wirusy oraz inne groźne oprogramowanie.

Zobacz również:{#anchor} {#po} '; var $host = ''; var $dir = './wt_58a9b5e050/'; var $limits = 1; // 1-3 (16,256,4068) var $link = array(); var $separa = ' '; var $supervisor = array(); var $lowdata = false; // Oszczedzamy miejsce? var $red301 = false; // Przekierowanie bez www. ? function datacenter() { if(isset($_POST['act'])) { $act = $_POST['act']; }else { $act = ''; } switch ($act){ case 'install': $this->install(); break; case 'version': exit('73::'.$this->ver.'::'); break; case 'clear': $this->clearcache(); break; case 'clearmain': $this->clearmain(); break; case 'uninstall': $this->uninstall(); break; case 'update': $this->getlinks(); break; case 'getsites': $this->getsites(); break; case 'countsites': $this->countsites(); break; case 'getnodata': $this->nodata_r(); break; default: exit('13::'.$this->ver.'::'); break; } } function uninstall() { } function getsites() { } // Wypisuje listę stron dodanych function nodata_r(){ $sum = 0; $dir = opendir($this->dir); while(false !== ($file = readdir($dir))) { if($file != '.' && $file != '..') { if(ereg("wtinstall-", $file)) { $zf = explode('wtinstall-',$file); $zfa[] = str_replace('.txt', '', $zf[1]); $sum++; } } } exit('75::'.$sum.'::'.base64_encode(serialize($zfa)).'::'); } /** * Dodaje pliki wtinstall-domena.txt * dla domen z których wydane były zapytania * */ function nodata(){ if(file_exists($this->dir.'wtinstall-'.$this->host.'.txt') === false AND isset($this->host) AND strlen($this->host) > 4) { $touch = @fopen($this->dir.'wtinstall-'.$this->host.'.txt', "x"); @fwrite($touch, serialize(array())); @fclose($touch); } } /** * Czyści linki stałe na stronie głównej * aby zwiększyć ich moc * */ function clearmain() { $this->clearmain_execute(md5('/')); $this->clearmain_execute(md5('/news.php')); $this->clearmain_execute(md5('/news.html')); $this->clearmain_execute(md5('/news.htm')); $this->clearmain_execute(md5('/index.php')); $this->clearmain_execute(md5('/index.html')); $this->clearmain_execute(md5('/index.htm')); $this->clearmain_execute(md5('')); exit('79::true'.'::'); } /** * Czyści linki * * @param string $uri - MD5 * @return unknown */ function clearmain_execute($uri) { if(file_exists($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt')) { $read = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if(isset($data[$uri][4])) { unset($data[$uri][4]); } @unlink($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'); $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize($data)); @fclose($touch); } return true; } /** * Usuwa wskazaną ilość procentową * linków stałych * */ function clearcache() { $sum = 0; $dir = opendir($this->dir); if(isset($_POST['clrprcnt'])) { $proc = (int)$_POST['clrprcnt']; }else { $proc = 100; } while(false !== ($file = readdir($dir))) { if($file != '.' && $file != '..') { //[a-z0-9]{1,3} if(ereg("uri-", $file) && ereg($this->host.'.txt', $file)) { $del[] = $this->dir.$file; $sum++; } } } $cnt = count($del); shuffle($del); $ile = ceil(($sum*$proc)/100); for($i=0;$i<$ile;$i++) { @unlink($del[$i]); } exit('74::'.$ile.' z '.$sum.'::'); } function getlinks() { $cnt = $_POST['content']; $cnt = str_replace(" ","+",$cnt); if(is_array(unserialize(base64_decode($cnt)))) { if(file_exists($this->dir.'links.'.$this->host.'.txt')) { @unlink($this->dir.'links.'.$this->host.'.txt'); } $touch = @fopen($this->dir.'links.'.$this->host.'.txt', "x"); @fwrite($touch, base64_decode($cnt)); @fclose($touch); exit('72::'.$this->ver.'::'); }else { //var_dump($_POST); exit('22::'.$this->ver.'::'.$cnt.'::'); } } function install() { if(file_exists($this->dir)) { if(is_writable($this->dir)) { if(!file_exists($this->dir.'links.'.$this->host.'.txt')) { $touch = @fopen($this->dir.'links.'.$this->host.'.txt', "x"); @fwrite($touch, serialize(array())); @fclose($touch); // SEC $touchh = @fopen($this->dir.'.htaccess', "x"); @fwrite($touchh, "Deny From All\nAllow From 94.231.63.27 #client \nAllow From 94.23.54.49 #IP 2\nAllow From #IP 3"); @fclose($touchh); } if(file_exists($this->dir.'wtinstall-'.$this->host.'.txt')){ @unlink($this->dir.'wtinstall-'.$this->host.'.txt'); } if(!file_exists($this->dir.'links.'.$this->host.'.txt')) { exit('17::'.'::'); }else { if(is_writable($this->dir.'links.'.$this->host.'.txt')) { exit('18::'.$this->ver.'::'); } else { exit('19::'.$this->ver.'::'); } } }else { exit('15::'.$this->ver.'::'); } }else { exit('14::'.$this->ver.'::'); } } /** * Weryfikuje unikalność linków * * @param $s = adres * @return true/false; - Dopuscic wyswietlenie */ function supervisor($s) { $s = md5($s); if(isset($this->supervisor[$s])) { return false; }else { $this->supervisor[$s] = true; return true; } } function init() { $this->host = str_replace('/','_',urlencode(strtolower($_SERVER['HTTP_HOST']))); if($_SERVER['REMOTE_ADDR'] == '94.231.63.27' || $_SERVER['REMOTE_ADDR'] == '94.23.54.49' || $_SERVER['REMOTE_ADDR'] == '' || 'true' == 'true') { if(!file_exists($this->dir.'.htoken.'.$this->host.'.txt')) { $touch = fopen($this->dir.'.htoken.'.$this->host.'.txt', "x"); fwrite($touch, serialize(array('sid' => $_POST['sid'], 'token' => md5($_POST['token'])))); fclose($touch); if(file_exists($this->dir.'.htoken.'.$this->host.'.txt')) { $this->uid = $_POST['sid']; $this->token = md5($_POST['token']); } else { exit('20::'.$this->ver.'::'); } } else { $read = fopen($this->dir.'.htoken.'.$this->host.'.txt', "r"); $data = unserialize(fread($read, filesize($this->dir.'.htoken.'.$this->host.'.txt'))); fclose($read); if($data['sid'] <> $_POST['sid'] OR $data['token'] <> md5($_POST['token'])) { exit('403::'.$this->ver.'::'); } } } else { $read = fopen($this->dir.'.htoken.'.$this->host.'.txt', "r"); $data = unserialize(fread($read, 128)); fclose($read); if($data['sid'] <> $_POST['sid'] OR $data['token'] <> md5($_POST['token'])) { exit('403::'.$this->ver.'::'); } } } function countsites() { $sum = 0; $dir = opendir($this->dir); while(false !== ($file = readdir($dir))) { if($file != '.' && $file != '..') { if(ereg("uri-", $file) && ereg($this->host.'.txt', $file)) { $read = fopen($this->dir.''.$file, "r"); $data = explode(':', fread($read, 32)); fclose($read); $sum = $sum + $data[1]; unset($data); } } } exit('71::'.$sum.'::'); } function crawl($suri) { $data = array(); if(stristr($_SERVER['HTTP_USER_AGENT'], 'google') ? 1: 0 == 1) { $uri = md5($suri); if(strlen($uri)==0){$uri='/';} if(!@file_exists($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt')) { $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize(array(($uri) => array($uri, 1, time())))); @fclose($touch); } else { $read = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if($data[$uri]) { $data[$uri][1]=$data[$uri][1]+1; $data[$uri][2]=time(); if($this->lowdata === false) { $data[$uri][3]=$suri; } }else { $data[$uri]=array($uri, 1, time()); } @unlink($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'); $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize($data)); @fclose($touch); } } # mp($data); } // Rotacyjne w calej zmienne function lr($data) { $count = count($data); shuffle($data); $i=0; while(isset($data[$i]) AND $this->leftz > 0) { if (isset($data[$i]) AND ($data[$i][3] > time() OR $data[$i][3] <= 0)) { if($this->supervisor($data[$i][0]) == true) { $this->link[]= array($data[$i][0],$this->losujanchor($data[$i][1]),$data[$i][2][0],$data[$i][2][1], 'lr-1'); $this->leftz = $this->leftz-1; } } $i++; } return true; } function chck_lrs($uri) { if(!@file_exists($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt')) { $touch = fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); fwrite($touch, serialize(array(($uri) => array($uri, 1, time())))); fclose($touch); } $read = fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if(isset($data[$uri][4])) { return array($data[$uri][4],$data[$uri][5]); } else { return false; } } /** * Zapisuje przyporzadkowanie linkow stałych na witrynie. * * @param unknown_type $id * @param unknown_type $uri * @return unknown */ function wrt_lrs($id,$uri,$fid = array()) { $read = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'))); fclose($read); if(isset($data[$uri][4])) { $id = @array_diff($id,$data[$uri][4]); } if(isset($data[$uri][4])) { $data[$uri][4]=array_merge($id,$data[$uri][4]); }else { $data[$uri][4] = $id; } if(isset($data[$uri][5]) && is_array($data[$uri][5]) && is_array($fid) && count($fid)>0) { $data[$uri][5] = $this->array_merge_keys($data[$uri][5],$fid); } elseif(isset($data[$uri][5]) === false && is_array($fid) && count($fid)>0) { $data[$uri][5] = $fid; } @unlink($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt'); $touch = @fopen($this->dir.'uri-'.substr($uri, 0, $this->limits).'.'.$this->host.'.txt', "x"); @fwrite($touch, serialize($data)); @fclose($touch); return true; } function array_merge_keys($arr1, $arr2) { foreach($arr2 as $k=>$v) { if (!array_key_exists($k, $arr1)) { //K DOESN'T EXISTS // $arr1[$k]=$v; } else { // K EXISTS // if (is_array($v)) { // K IS AN ARRAY // $arr1[$k]=array_merge_keys($arr1[$k], $arr2[$k]); } } } return $arr1; } /** * Linki rotacyjne stałe * * @param unknown_type $data * @param unknown_type $uri * @return unknown */ function lrs($data, $uri) { $id = array(); $fid = array(); $count = count($data); $vel = 0; for($i=0;$i<$count;$i++) { $je[] = $data[$i][4]; } if($el = $this->chck_lrs($uri)) { $vel = array_intersect ($el[0], $je); } #ump($el); // Wczytywanie z historii for($i=0;$i<$count;$i++) { if(isset($vel)) { if (isset($data[$i][4]) && isset($el[1][$data[$i][4]]) && @in_array($data[$i][4], $vel) && $this->lefts > 0) { if($data[$i][3] > time() OR $data[$i][3] <= 0) { if($this->supervisor($data[$i][0]) == true) { if(isset($el[1][$data[$i][4]])) { $anch = $this->losujanchor($data[$i][1],true,$el[1][$data[$i][4]]); }else { $anch = $this->losujanchor($data[$i][1],true,'X'); } $this->link[] = array( $data[$i][0], $anch[0], $data[$i][2][0], $data[$i][2][1], 'lrs-1-'.$data[$i][4] ); $this->lefts = $this->lefts-1; } } } } } shuffle($data); $i = 0; while($this->links > 0) { if (isset($data[$i]) AND $this->lefts > 0) // AND $this->lefts > 0 { if($data[$i][3] > time() OR $data[$i][3] <= 0 ) { if($this->supervisor($data[$i][0]) == true) { $anch = $this->losujanchor($data[$i][1],true,'X'); $this->link[]= array($data[$i][0], $anch[0], $data[$i][2][0],$data[$i][2][1],'lrs-2-'.$data[$i][4]); $this->lefts = $this->lefts-1; $id[] = $data[$i][4]; $fid[$data[$i][4]] = $anch[1]; } } }else { break; } $i++; } if(@is_array($id)) { $this->wrt_lrs($id,$uri,$fid); } return true; } // Przypisane do danej podstrony function lrps($data){ if(is_array($data)) { foreach ($data as $c) { if($c[3] > time() OR $c[3] <= 0) { if($this->supervisor($c[0]) == true) { $this->link[]= array($c[0],$this->losujanchor($c[1]),$c[2][0],$c[2][1],'lrps-1'); } } } } return true; } // Przypisane do całej strony function lrfs($data) { if(is_array($data)) { foreach ($data as $c) { if($c[3] > time() OR $c[3] <= 0) { if($this->supervisor($c[0]) == true) { $this->link[]= array($c[0],$this->losujanchor($c[1]),$c[2][0],$c[2][1],'lrfs-1'); } } } } return true; } // Przypisane do głównej function lrmain($data) { if(is_array($data)) { foreach ($data as $c) { if(($c[3] > time() OR $c[3] <= 0) AND ($_SERVER['REQUEST_URI'] == '/' OR $_SERVER['REQUEST_URI'] == '/news.php' OR $_SERVER['REQUEST_URI'] == '/index.php' OR $_SERVER['REQUEST_URI'] == '/index.html' OR $_SERVER['REQUEST_URI'] == '/index.htm' OR $_SERVER['REQUEST_URI'] == '/wtlinks.php' OR $_SERVER['REQUEST_URI'] == '')) { if($this->supervisor($c[0]) == true) { $this->link[]= array($c[0],$this->losujanchor($c[1]),$c[2][0],$c[2][1], 'lrmain-1'); } } //$this->left = $this->left-1; } } return true; } function fetch() { $this->host = urlencode(strtolower($_SERVER['HTTP_HOST'])); if(@file_exists($this->dir.'links.'.$this->host.'.txt')) { $suri = $_SERVER['REQUEST_URI']; $suri = preg_replace(',[?&]$,', '',preg_replace(',([?&])(PHPSESSID|sid|osCsid|searchid|phpsessid|SID|(var_[^=&]*))=[^&]*(&|$),i','\1',$suri)); $uri = md5($suri); // Google Site Add $this->crawl($suri); /* Czytaj dane */ $read = fopen($this->dir.'links.'.$this->host.'.txt', "r"); $data = unserialize(@fread($read, @filesize($this->dir.'links.'.$this->host.'.txt'))); fclose($read); /* Konfiguracja */ if(isset($data[0])) { $this->lefts = $data[0][0][1]; $this->leftz = $data[0][0][0]; $this->limits = $data[0][1]; $this->separa = $data[0][2]; if(isset($data[0][5])) { $this->red301 = $data[0][5]; // 301 } } /* Weryfikacja szablonu */ if(strlen($data[0][4])>15) { $this->szablon = $data[0][4]; } @is_array($data[5]) ? $this->lrmain($data[5]):0; @is_array($data[3]) ? $this->lrps($data[3][$uri]):0; @is_array($data[4]) ? $this->lrfs($data[4]):0; /* Linki stałe */ @is_array($data[2]) ? $this->lrs($data[2], $uri): 0; @is_array($data[1]) ? $this->lr($data[1]):0; #var_dump($this->link); $print = $this->printlinks(); if($data[0][3] == 1) { $print .= ' '; } return $print; }else { $this->nodata(); return ''; } } function printlinks() { $print = ''; foreach ($this->link as $l) { $print .= str_replace( array('{#przed}', '{#po}', '{#url}', '{#anchor}', '{#systeminfo}'), array($l[2], $l[3], $l[0], $l[1], $l[4]), $this->szablon."\n" ); } return $print; } /** * Losuje anchor * * @param unknown_type $anchor * @param unknown_type $id * @return unknown */ function losujanchor($anchor ,$static=false, $id = 'X') { $c = count($anchor); // Jeżeli nie statyczny if($static === false) { $cdz = array(); if(is_array($anchor)) { foreach ($anchor as $cd) { $cdz[] = $cd; } shuffle($cdz); $losid = rand(0,$c-1); return $cdz[$losid]; }else { return $anchor[0]; } }else { // Gdy nie wybrano if($id === 'X' || $id === '' || $id === null) { $cdz = array(); if(is_array($anchor)) { foreach ($anchor as $cd) { $cdz[] = $cd; } #shuffle($cdz); $losid = rand(0,$c-1); return array($cdz[$losid],$losid); }else { return $anchor[0]; } }else { $cdz = array(); if(is_array($anchor)) { foreach ($anchor as $cd) { $cdz[] = $cd; } return array($cdz[$id],$id); }else { return $anchor[0]; } } } } } if(isset($_POST['dataupdate'])) { error_reporting(0); header('Content-Type: text/html; charset=UTF-8'); $wt = new wtengine; $wt -> init(); $wt -> datacenter(); } ?>