Abbiamo ricordato spessissimo quanto sia importante mantenere aggiornati tutti i software che si utilizzano per comunicare in Rete così come i plugin per il browser. “Navigare” in Rete utilizzando software obsoleti può rappresentare una pericolosa minaccia per la sicurezza del personal computer e dei dati in esso memorizzati.
Secunia PSI è un’applicazione gratuita (ved. questa pagina) che permette di stabilire quanti e quali programmi, presenti sul sistema in uso, non siano adeguati all’ultima versione rappresentando, quindi, un potenziale rischio.
Secunia PSI è un software eccellente, indicato soprattutto per coloro che non hanno la consapevolezza di quali applicazioni possono costituire un pericolo se non aggiornate in modo tempestivo.
Presentiamo uno script VBS, destinato principalmente agli amministratori di sistema, che consente di verificare se siano disponibili degli aggiornamenti per alcuni tra i più importanti software.
Lo script deve essere, ovviamente, personalizzato come meglio si crede dal momento che – a scopo esemplificativo – ci siamo limitati ad effettuare un controllo sull’addon Adobe Flash Player per Internet Explorer e gli altri browser aggiungendo poi Pidgin ed il client FTP FileZilla.
La chiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
contiene le informazioni per l’eventuale disinstallazione delle applicazioni presenti sul sistema in uso. Controllando il contenuto della chiave con l’Editor del registro, si può ottenere la lista delle applicazioni installate.
Utilizzando dal prompt dei comandi le seguenti due istruzioni, si può ottenere – rispettivamente – il numero di versione corrispondente all’addon di Flash Player per Internet Explorer, Firefox e gli altri browser web:
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player Activex" /v DisplayVersion
reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player Plugin" /v DisplayVersion
Il file VBScript che segue (va salvato come file di testo quindi rinominato con estensione .VBS) consente di controllare il contenuto delle chiavi di registro che ospitano l’indicazione relativa al numero di versione di ciascun software quindi di verificare, sul sito web del produttore, se fosse disponibile una release più recente:
messaggio="" const HKEY_LOCAL_MACHINE = &H80000002 strComputer="." Function leggiregistro (strKeyPath,strValueName) Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv") objReg.GetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, sValue Set objReg=Nothing leggiregistro=sValue End Function Function leggipagina (url) Set xmlhttp = CreateObject("MSXML2.ServerXMLHTTP") xmlhttp.open "GET", url, 0 xmlhttp.send "" p=xmlhttp.responseText Set xmlhttp=Nothing leggipagina=p End Function chiave="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" valore="DisplayVersion" registry_keys=array(chiave+"Adobe Flash Player Activex",chiave+"Adobe Flash Player Plugin",chiave+"Pidgin",chiave+"FileZilla Client") urls=array("http://www.adobe.com/it/software/flash/about/","http://www.adobe.com/it/software/flash/about/","http://pidgin.im","http://filezilla-project.org/download.php?type=client") pagina_intera=array(false,false,true,true) sinizio=array("Internet Explorer (e altri browser che supportano i controlli e i plug-in di Internet Explorer ActiveX)</td>","Firefox, Mozilla, Netscape, Opera (e altri browser basati su plug-in)</td>","","") sfine=array("</tr>","</tr>","","") alerts=array("Flash Player per Internet Explorer non è aggiornato. ","Flash Player per Mozilla Firefox, Opera ed altri browser non è aggiornato. ","Pidgin non è aggiornato. ","FileZilla Client non è aggiornato. ") lungh_array=ubound(registry_keys) For i=0 to lungh_array versione=leggiregistro(registry_keys(i),valore) if versione then htmlpage=leggipagina(urls(i)) if pagina_intera(i)=false then inizio=instr(htmlpage,sinizio(i))+len(sinizio(i)) stringa=instr(inizio,htmlpage,sfine(i)) update=replace(mid(htmlpage,inizio,stringa-inizio),vbcrlf,"") update=replace(update,"<td>","") update=replace(update,"</td>","") update=trim(update) if instr(update,versione)=0 then messaggio=messaggio+"- "+ alerts(i) +"Versione più recente: "+update+vbcrlf else update=htmlpage if instr(update,versione)=0 then messaggio=messaggio+"- "+ alerts(i) + vbcrlf end if end if Next if messaggio="" then WScript.Echo "Tutti i software controllati risultano aggiornati all'ultima versione" else WScript.Echo messaggio end if
Il funzionamento dello script poggia sul contenuto di alcuni array che contengono, rispettivamente, la chiave del registro da verificare e l’URL remoto al quale connettersi. I successivi array consentono di stabilire se il numero di versione del programma debba essere estratto tra delimitatori ben precisi (tag html) oppure se rilevabile immediatamente cercando all’interno della pagina html completa.
Il confronto tra il numero di versione del software installato localmente e quello annotato sulla pagina web viene effettuato solamente se la chiave del registro è stata rilevata (ossia se il programma risulta installato).