Newsgroup: it.comp.os.win.xp
Titolo: Automatizzare scansione/eliminazione dei malware

Sono un riparatore di computer e ultimamente su dieci pc che entrano otto
hanno solo problemi di virus, trojan ecc. Ormai è frustrante ripetere le
stesse azioni diverse volte in un giorno per settimane e settimane. Così mi
sono chiesto se non fosse possibile automatizzare questi processi.
Servirebbe un sistema automatizzato che esegua scansioni antivirus e
antispyware aggiornando le definizioni automaticamente e e che rimuova i
malware trovati. Per ora ho trovato solo questo programma "a-squared
Command Line Scanner 2.1" che attraverso un batch script permette di
aggiornasi ed eseguire la scansione. Sarebbe interessante poterlo fare con
un antivirus o due e magari altri anti-spyware poichè come certo saprete,
di solito un solo anti-malware non toglie granché.
Servirebbe anche un sistema per installare tutti gli aggiornameti di
windows e che si riavvii da solo quando necessario. A questo scopo potrebbe
andare bene una cosa simile 
http://www.autopatcher.com/
 ma non mi risulta
che sia automatizzata.
Per concludere sarebbe fantastico eseguire un "dskchk /f" seguito da un
riavvio ed un defrag ripetuto per x volte.
Se avete idee su come si possa realizare una cosa simile, vi prego datemi
qc dritta. Se invece una cosa simile potrebbe interessarvi ma da soli non
sapete come realizzarla, proviamo a confrontarci su questo NG. A volte
lavorando insieme si riesce a fare miracoli :)
Grazie e a presto, Paolo
-- 
Per ripondermi in privato usa la seguente email
reg(punt0)spm(ki0cci0la)virgilio(punt0)it
_______________________________________________
Un suggerimento: 40tude dialog per i NG
e spamfighter per la posta. Sono eccezzionali!

 lavorando insieme si riesce a fare miracoli :)
Considerando dove hanno appeso l'ultimo che ne faceva, non so se sia
una buona idea :-D
ciao,
Panathos

 Panathos
Ciao Panathos, ho cercato ancora per prodotti antimalware e ho trovato 4
antivirus ed un paio di antispyware tutti a riga i comando. Ora il problema
è come far partire il processo successivo. Mi spiego meglio, supponiamo che
impostiamo f-prot per scansionare e rimuovere i malware, a questo punto
come facciamo a far partire la scansione successiva?  Mi è venuta un'idea
balzana ma provo a dirla. Usando "taskkill" in modo che verifichi se uno
dei processi antimalware è in esecuzione. Nel caso siano in esecuzione
ritornerà a verificare lo stato dopo x minuti, nel caso in cui nessuno dei
nostri programmi sia in esecuzone potrebbe lanciare l'operazione
successiva. A dire il vero mi sembra una cosa troppo incasinata, hai altre
idee? Riguardo ad un server ftp sulla rete locale dove tutte le definizioni
vengono aggiornate mi sembra una buona idea, tuttavia si potrebbe valutare
anche la possibilita di usare UNC. 
A presto, Paolo

 anche la possibilita di usare UNC.
Purché la cartella da condividere risulti in sola lettura a Guest (la
macchina da riparare), non vedo perché no. Si semplifica anche un po'
il batch di partenza, con un net use invece della generazione di uno
script ftp.
ciao,
Panathos

 script ftp.
Cosa ne dici di provare con un 
"xcopy /s \\serverlocale\directory c:\autofix" ?
Ora ci manca il sistema per fare gli update di windows. Per diverse ragioni
credo sia meglio creare un archivio nella lan anziché passare ogni volta su
internet. Dovremmo capire se si riesce a gestire la cosa via batch
sfruttando questo sistema ( 
http://www.autopatcher.com/
 ). So che microsoft
ne ha uno suo ( 
http://tinyurl.com/6cea5
 ) ma non lo ho mai provato.
Se riusciamo a completare questa cosa credo che avrň molto tempo libero ;-)
A presto, Paolo

 Se riusciamo a completare questa cosa credo che avrò molto tempo libero ;-)
Dovremmo trovare un compromesso per il tempo che ci perdo io :-)
ciao,
Panathos

 Panathos
Facciamo cosě, lo facciamo insieme poi se funziona lo vendiamo ;) 
Magari proteggendo il codice con qc tipo "BAT2EXE"
Oggi e domani sono un po' imballato di lavoro, ma nei prossimi giorni
inizio. Se ci stai mi fa *molto piacere*, altrimenti continuo solo. Attento
perň, se dopo funziona non parteciperai ai dividendi :-)
A presto, Paolo
Ps: Sto pensando a come far riprendere le scansioni dopo il riavvio (quando
necessario). Mi vengono in mente due cose, una creare differenti batch per
ogni riavvio scrivendo il link in "esecuzione automatica" e cancellando
quello del bat in uso se presente. Due, creare un file di testo nel quale
alla fine di un esecuzione viene scritto ad esempio un numero. Al riavvio
far si che il batch scansioni il file di testo e se trova ad esempio un
dato numero lui riprende lo script dal punto in cui era rimasto prima di
riavviarsi. Provo a zippare il concetto ;) Prima di riavviarsi per la prima
volta lui scrive nel file di testo il numero "2", al riavvio il programma
in esecuzione automatica sa che se c'č scritto "2" deve riprendere le
operazione dalla posizione che abbiamo battezzato "2" all'interno dello
script.

 necessario).
Questo è facile: il batch controlla il proprio nome, e si ridireziona
su un altro se corrisponde ad una stringa:
--------------------
::: inizio del batch
@echo off
if "%0"=="avvio.cmd" type %0 >avvio1.cmd
defrag /tutto_quanto
chkdsk /tutto_quanto
::: ultima riga del batch
del %0
-------------------
La ridirezione ovviamente avviene sempre nella "esecuzione automatica".
Piuttosto, sto pensando ora che se si vuole fare checkdisk a tutti i
dischi bisogna pensare a qualcosa per enumerare i dischi fissi e
scansionarli.
Io ho diskext.exe della sysinternals, che con un colpetto di grep e sed
si può usare in questo modo:
-------------------
::: elenca unità disco nel sistema
diskext.exe | grep "Extents" | sed s/"Extents for "//>p.txt
::: per ogni unità esegue scandisk e defrag
FOR /F %%I IN (p.txt) DO (
defrag -f %%I
chkdsk /x %%I
)
del p.txt
-------------------
Eventualmente scrivimi da un indirizzo email valido (il mio lo è),
dovremmo scambiarci uno schemino di come funziona tutto l'ambaradan,
nonché l'elenco degli exe da scaricare ed includere, etc. etc.
ciao,
Panathos

 l'altro. In genere uso "ping -n xx 127.0.0.1>nul".
NON o letto tutto il thread , il tuo problema e'
lanciare una applicazoine alla volta ed aspettare che termini
prima di lanciare la successiva ??
se si :
o run
Runs a program in a new process.
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
bWaitOnReturn
Optional. Boolean value indicating whether the script should wait for the program to finish executing before continuing
to the next statement in your script. If set to true, script execution halts until the program finishes, and Run returns
any error code returned by the program. If set to false (the default), the Run method returns immediately after starting
the program, automatically returning 0 (not to be interpreted as an error code).
o meglio exec
esempio generico
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("calc")' programma principale
' aka tua connessione
'Quando il programma principale termina vengono
' terninati anche i secondari
Set oExec1 = WshShell.Exec("notepad")' programma secondario
Set oExec2 = WshShell.Exec("Clipbrd")' programma secondario
'Set oExec3 >> ecc
WScript.Sleep 1500
WshShell.AppActivate("calcolatrice")
msgbox"prova a chiudere la calcolatrice"
'togli le tre rige sopra che servono come demo
Do While oExec.Status = 0
     WScript.Sleep 10
Loop
''WScript.Echo "status" &" >>>"& oExec.Status &"     "  &"Closed"
oExec1.Terminate()
oExec2.Terminate()
'oExec3.Terminate()
'Copia incolla su notepad e salva con estensione .vbs
'tutti i file (*.*)  poi ci clicchi sopra. (per esempio Test.vbs)
'se ti da' errore disattiva l'antivirus
--
Fosco

 "Paolo"
ecco un coso piu intuitivo .. finche la calcolatrice sara'
"in process"  NON partira notepad
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("calc")' programma principale
Do While oExec.Status = 0
     WScript.Sleep 10
Loop
Set oExec1 = WshShell.Exec("notepad")' programma secondario
'
una migliore gestione di tutto questo lo puoi ottenere con autoit
che volendo puo controllare direttamnete i processi
http://www.autoitscript.com/autoit3/
ProcessExists
--------------------------------------------------------------------------------
Checks to see if a specified process exists.
ProcessExists ( "process" )
Parameters
process The name or PID of the process to check.
Return Value
Success: Returns the PID of the process.
Failure: Returns 0 if process does not exist.
Remarks
Process names are executables without the full path, e.g., "notepad.exe" or "winword.exe"
PID is the unique number which identifies a Process.
In order to work under Windows NT 4.0, ProcessExists requires the file PSAPI.DLL (included in the AutoIt installation
directory).
The process is polled approximately every 250 milliseconds.
Related
ProcessClose, ProcessWait, ProcessWaitClose, WinExists
Example
If ProcessExists("notepad.exe") Then
    MsgBox(0, "Example", "Notepad is running.")
EndIf



sei stato gentilissimo ma io conosco solo i batch script. sarebbe bello
poter utilizzare vbs, ma dovrei studiarli per un po. credo che andro avanti
con batch. in futuro spero di trovare il modo per studiarmi vbs che
permette di fare davvero tante cose. grazie ancora Fosco
-- 
Grazie e a presto, Paolo
_______________________________________________
Per ripondermi in privato usa la seguente email
reg(punt0)spm(ki0cci0la)virgilio(punt0)it
_______________________________________________
Un suggerimento: 40tude dialog per i NG, 
spamfighter (mail), VIM (editor),EvilLyrics 
(testi canzoni), Torpark (anonimizzatore free).
Buon lavoro ;)
_______________________________________________

 Panathos
Ti scrivo presto, ciao ciao
-- 
Grazie e a presto, Paolo
_______________________________________________
Per ripondermi in privato usa la seguente email
reg(punt0)spm(ki0cci0la)virgilio(punt0)it
_______________________________________________


 Ti scrivo presto, ciao ciao
Ok.
ciao,
Panathos