script analyse antivirus à l'accès - VB/VBA/VBS - Programmation
Marsh Posté le 12-11-2013 à 12:24:08
Bonjour,
lorsqu'un anti-virus est bien paramétré, il n'y a même pas besoin de script ‼
A moins qu'ils soient peu performants sans l'option de scanner les lecteurs externes …
Marsh Posté le 12-11-2013 à 21:27:37
Bonjour,
merci d'avoir pris le temps de répondre
c'est un peu plus compliqué que cela en fait mais j'aurai du mal à préciser sans en mettre des pages de but en blanc.
Encore une fois, je "débute" dans le monde des "bisounours"..... euh de l'informatique "professionnelle" et je me mets à niveau au fur et à mesure, mais bon y a de la route à faire .
En ce qui concerne les antivirus et leurs paramètres, pour différentes raisons (choix de mes prédécesseurs ou de la direction) je n'ai pas la main dessus. Comme on dis je fais avec les
moyens du bord. Et puis je me dis qu'en cherchant sur ce sujet ça me permettra d’améliorer un peu mes connaissances sur le fonctionnement des scripts.
Amicalement,
Florent
Marsh Posté le 13-11-2013 à 11:42:44
Là comme cela il n'y aura pas de miracle … Comme cela fonctionnait auparavant, il faut être sur place pour comprendre.
Te reste plus qu'à tracer la progression du code avec des Echo en point de passage ou contenu de variable …
Marsh Posté le 13-11-2013 à 15:26:51
Je rejoins Marc L : un anti-virus digne de ce nom assure une protection temps-réel. Pas de besoin de faire de script pour lancer l'analyse. Quand on insère un support externe (genre clé usb, cd...), s'il y a un autorun vérolé, l'anti-virus doit savoir le bloquer. Idem si on rentre dans un répertoire du support contenant un virus, l'anti-virus doit le signaler.
Et cette méthode sera bien plus sûre que faire un script maison moisi qui au moindre changement de contexte marchera plus
C'est justement ça, faire de l'informatique professionnelle. Appliquer des règles de l'art et pas faire des bidouilles dans son coin, a fortiori par un débutant. Ca vaut d'autant plus quand il s'agit de sécurité.
Un petit chiffre pour convaincre ta direction : une étude d'il y a 3-4 ans il me semble avait révélé qu'environ 60% des entreprises ayant subi une perte de leurs données (crash, virus, vol...) mettait la clé sous la porte dans les 2 ans qui suivent. Ca donne à réfléchir ...
Marsh Posté le 13-11-2013 à 15:29:06
Je parie que ça vient du fait que tes 2 anti-virus ne sont pas installés dans "Program files" mais dans "Program Files (x86)"...
Marsh Posté le 13-11-2013 à 15:35:18
J'avoue ne pas avoir regardé le code vu la plâtrée et qui plus est non entre balises avec l'icône prévue à cet effet …
Ensuite, c'est le B-A-BA d'un apprenti programmeur et là franchement, j'ai des doutes ! …
Marsh Posté le 13-11-2013 à 16:58:05
Y'a un paquet de "if" mais jamais de "else", faut vraiment avoir confiance!
Donc oui à part mettre des "else" avec des messages d'erreurs et te tenir au courant sur les modifications récentes à propos des 2 antivirus je ne vois pas ce que tu peux faire.
Marsh Posté le 13-11-2013 à 22:01:15
Merci pour vos réponses,
effectivement c'est bien le chemin (test en installant manuellement un des deux AV dans un répertoire diffèrent).
Pour ma défense et celle de mes prédécesseurs notre formation est généralement du genre ; "tiens y a ça à faire démerdez vous pour trouver comment!". Pour info j'ai 40ans et ma formation initiale date d'il y a 20 ans (rhaa les salles de TP à la FAC, le pascal,... putain 20 ans déjà!).
Depuis j'ai tenu plus de poste hors technique (par choix de ma hiérarchie) et ma remise dans le bain est très récente d'où mon noobisme avoué.
Là je m'y remets au fur et à mesure mais je peux pas me permettre de faire table rase et donc je suis obliger de partir de ce que l'équipe d'avant (qui était grosso modo dans mon cas) avait fait.
Sinon le script est plus là pour taguer la clé, pour autoriser ou pas son utilisation sur un poste de travail, que pour lancer les analyses.
Marsh Posté le 14-11-2013 à 10:59:58
Si je comprends bien, une fois la clé taguée, c'est bon, le script se lance plus pour l'analyser Ca c'est de la sécurité
Rassures-moi, tu travailles pas dans une administration française ou une société un peu sensible ?
Marsh Posté le 14-11-2013 à 21:13:26
Non c'est pas ça,
décidément j'ai du mal à me faire comprendre.
grosso modo, l'usager veut utiliser un fichier sur le réseau d'entreprise:
1 il va sur la station où ce script est installé (hors rzo)
2 le script lance les 2 scans, "tag" le support si aucun résultat positif ne remonte.
3 l'usager peut utiliser sa clé sur le rzo d'entreprise (où un 3ème AV est installé et va scanner le support).
Amicalement,
Florent
PS pas vraiment, j'ose espérer qu'ils ont plus de moyens et une direction plus avisée que ce que j'ai actuellement .
Marsh Posté le 12-11-2013 à 04:36:06
Bonjour,
Je suis nouveau dans le petit monde de l’informatique, des scripts (et sur ce forum ),
je m'excuse d'avance si ce type de question existe où vous parait triviale je suis encore en phase d'apprentissage.
Dans le cadre de mon travail les postes clients utilisent un script lors de l'insertion d'un support lançant l'analyse par 2 antivirus (clamAV et Maccafee).
Jusqu'à présent ce script marche très bien sur des postes sous xp, actuellement le parc des machines se renouvèle (enfin!) mais avec seven.
Mon problème c'est que si le script détecte bien les clés USB, il ne lance plus le scan par les antivirus.
Il ne me met pas d'erreur c'est juste qu'il ne lance pas les scans en question.
Y a t'il des paramètres à changer sachant que j'ai déjà suivi la piste des UAC mais que cela ne change rien.
Merci d'avance de prendre du temps pour m'aider
Florent
PS ci dessous le script en question:
DIM EXCLU,TROUVE,objFSO,objTS,colDrives,wshshell,env,message
DIM CLAMSCAN,MCAFEE,TEMPDIR,DATABASE,LOGG,MCAFEE_LOG
DIM VIRUS,nbVirus,Lecteur,content,lignes,ligne,RESULTAT,fichier
Dim MCAFEE_Content,CLAMWIN_Content
Dim NbLignesPrecedentes_LOGG,NbLignesPrecedentes_MCAFEE_LOG
on error resume next
Preparation_des_objets()
Reglages_des_variables()
Decouverte_des_lecteurs_actuels()
Do
Test_decouverte_nouveau_lecteur()
If TROUVE Then
analyser_ancien_journaux_logs()
'reponse=MsgBox("Voulez-vous scanner le support "&Lecteur&": ?",vbYesNo)
message = MsgBox ("La station blanche vient de détecter que vous venez de connecter un support amovible USB ("&Lecteur&"."&vbcrlf&"Ce support va être scanné par deux antivirus. A l'issu, un message vous informera de la fin de l'analyse"&vbcrlf&""&vbcrlf&""&vbcrlf&"Cliquez sur OK pour lancer l'analyse",4096,"Connexion d'un support amovible USB" )
'if reponse=6 then
nbvirus=0
set fichier=objFSO.GetFile(LECTEUR&":\"&resultat)
fichier.attributes=0
set fichier=objFSO.opentextFile(LECTEUR&":\"&resultat,2,true)
Start_CLAMWIN()
if nbVirus=0 then
Start_MCAFEE()
if nbVirus=0 then
Calcul_checksum(LECTEUR&":\" )
' Ajout des resultats en fin de fichier
fichier.WriteLine MCAFEE_Content
fichier.WriteLine CLAMWIN_Content
FermerTAG()
set fichier=objFSO.GetFile(LECTEUR&":\"&resultat)
fichier.attributes=6
FermerTAG()
'wshshell.Run "deveject.exe -EjectDrive:"&LECTEUR&":",0,True
'wscript.echo "CLEF PROPRE, Aucun Virus !!!"&vbcrlf&"Vous pouvez la retirer..."
Ejecter_cle()
message = MsgBox ("Aucun Virus n'a été détecté sur le support amovible USB : vous pouvez déconnecter votre support. "&Lecteur&".",4096,"Fin de l'anaylse." )
end if
end if
'end if
end if
wscript.sleep(1000)
Loop
Sub Calcul_checksum(strFolder)
Dim oFs, oFolder, oFiles, oFile, oSubFolder
Dim colFolders, colFiles
Dim Ext
Set oFs = CreateObject ("Scripting.FileSystemObject" )
Set oFolder = oFs.GetFolder (strFolder)
Set colFolders = oFolder.SubFolders
Set colFiles = oFolder.Files
For Each oFile in colFiles
if oFile.Name<>resultat then
a1=oFile.Attributes
t1=split(oFile.DateLastModified," " )
t11=split(t1(0),"/" )
a2=cint(t11(0))+cint(t11(1))+cint(t11(2))
t12=split(t1(1),":" )
a3=cint(t12(0))+cint(t12(1))+cint(t12(2))
a4=oFile.Size
ares=a1+a2+a3+a4
'wscript.echo ares&vbclf&cstr(ares)
fichier.writeLine CRYPT(cstr(ares),"SAS_ANTIVIRUS" )
end if
Next
' parcours récursif des sous-dossiers
For Each oSubFolder in colFolders
Calcul_checksum strFolder & "\" & oSubFolder.name
Next
End Sub
Function CRYPT(CO,KE)
K="":X = 1
For A = 1 To Len(KE)
K = K & Asc(Mid(KE,X,1))
X = X + 1
Next
For F = 1 To 3
Y = 1
CF = ""
For V = 1 To -Int(-Len(CO)/Len(K))
X = 1
For G = 1 To Len(K)
K2 = CInt(Mid(K,X,1))
C = Asc(Mid(CO,Y,1))
W = C + K2
If W > 255 Then W = W - 255
If W = 0 Then W = 255
If W < 0 Then W = 255 + W
CF = CF & Chr(W)
X = X + 1
Y = Y + 1
If Y > Len(CO) Then Exit For
Next
Next
CO = CF
K = Len(K) & strReverse(K) & Mid(K,1,1)
Next
CRYPT=CO
End Function
sub Start_MCAFEE()
wshshell.Run "cmd /C """&""""&MCAFEE&""""&" "&LECTEUR&": /autoexit"&"""",0,True
set strm= CreateObject("adodb.stream" )
strm.Charset= "utf-8"
strm.Type=2
strm.open
strm.LoadFromFile McAFEE_LOG
content=strm.ReadText
strm.close
lignes=split(content,vbNewLine)
MCAFEE_Content=""
For i=NbLignesPrecedentes_McAFEE_LOG To UBound(lignes)
MCAFEE_Content=MCAFEE_Content&vbCrLf&lignes(i)
next
if instr(MCAFEE_Content,"Processus détectés : 0" )=0 or _
instr(MCAFEE_Content,"Secteurs d'amorçage détectés : 0" )=0 or _
instr(MCAFEE_Content,"Fichiers avec des détections : 0" )=0 or _
instr(MCAFEE_Content,"Détections de fichiers : 0" )=0 then
'###### VIRUS PRESENT ######
'wshshell.Run "notepad "&MCAFEE_LOG,3,False
wscript.echo "Virus détéctés !!!"&vbNewLine&"Veuillez enlever et remettre la clef pour la rescanner !"&vbcrlf&MCAFEE_Content
nbvirus=nbvirus+1
end if
end sub
sub Start_CLAMWIN()
If objFSO.FileExists(LOGG) Then
objFSO.deleteFile LOGG,True
End If
wshshell.Run "cmd /C """&""&""""&CLAMSCAN&""""&" --tempdir "&""""&TEMPDIR&""""&" --keep-mbox --stdout --database="&""""&DATABASE&""""&" --log="&""""&LOGG&""""&" --infected --max-files=500 --max-scansize=150M --max-recursion=50 --max-filesize=100M --show-progress --recursive --exclude=""[^\]*\.dbx$"" --exclude=""[^\]*\.tbb$"" --exclude=""[^\]*\.pst$"" --exclude=""[^\]*\.dat$"" --exclude=""[^\]*\.log$"" --exclude=""[^\]*\.evt$"" --exclude=""[^\]*\.nsf$"" --exclude=""[^\]*\.ntf$"" --exclude=""[^\]*\.chm$"" --kill """&LECTEUR&":\\""""",3,True
set objTS=objFSO.OpenTextFile(LOGG,1)
content=objTS.ReadAll
objTS.close
lignes=split(content,vbNewLine)
CLAMWIN_Content=""
For i=NbLignesPrecedentes_LOGG To UBound(lignes)
CLAMWIN_Content=CLAMWIN_Content&vbCrLf&lignes(i)
next
if instr(CLAMWIN_Content,"Infected files: 0" )=0 then
'###### VIRUS PRESENT ######
Lecture_OK=True
VIRUS=""
nbVirus=0
for Each ligne in lignes
if ligne="----------- SCAN SUMMARY -----------" then Lecture_OK=False
if mid(ligne,1,1)<>"" and mid(ligne,1,1)<>"-" and Lecture_OK then
VIRUS=VIRUS&ligne&vbNewLine
nbVirus=nbVirus+1
end if
next
if nbvirus<>0 then
wscript.echo nbVirus&" virus détécté !!!"&vbNewLine&"Veuillez Supprimer les fichiers concernés :"&vbNewLine&VIRUS&vbcrlf&vbcrlf&"Après la suppression, enlevez et rescannez la clef !!!"
end if
' wscript.quit
end if
' ##### pas de Virus ####
'if nbVirus=0 then wscript.echo "CLEF PROPRE, Aucun Virus !!!"
end sub
sub Test_decouverte_nouveau_lecteur()
TROUVE=False
NEW_EXCLU=""
Lecteur=""
'on error resume next
For Each objDrive in colDrives
If InStr(EXCLU,objDrive.DriveLetter)=0 Then
TROUVE=True
LECTEUR=objDrive.DriveLetter
End If
If InStr(NEW_EXCLU,objDrive.DriveLetter)=0 Then
NEW_EXCLU=NEW_EXCLU&objDrive.DriveLetter
end if
Next
'on error goto 0
if len(NEW_EXCLU)>0 then EXCLU=NEW_EXCLU
end sub
sub analyser_ancien_journaux_logs()
' on error resume next
err.clear
' objFSO.DeleteFile LOGG,True
MCAFEE_Content=""
CLAMWIN_Content=""
NbLignesPrecedentes_LOGG=0
Set objFile = objFSO.OpenTextFile(LOGG, 1)
if err.Number=0 then
Do Until objFile.AtEndOfStream
objFile.ReadLine
NbLignesPrecedentes_LOGG=NbLignesPrecedentes_LOGG+1
Loop
objFile.Close
end if
err.clear
' objFSO.DeleteFile MCAFEE_LOG,True
NbLignesPrecedentes_MCAFEE_LOG=0
Set objFile = objFSO.OpenTextFile(MCAFEE_LOG, 1)
if err.Number=0 then
Do Until objFile.AtEndOfStream or err.Number<>0
objFile.ReadLine
NbLignesPrecedentes_MCAFEE_LOG=NbLignesPrecedentes_MCAFEE_LOG+1
Loop
objFile.Close
end if
err.clear
' on error goto 0
end sub
sub Decouverte_des_lecteurs_actuels()
For Each objDrive in colDrives
If InStr(EXCLU,objDrive.DriveLetter)=0 Then
EXCLU=EXCLU&objDrive.DriveLetter
End If
Next
end sub
sub Preparation_des_objets()
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set colDrives = objFSO.Drives
set wshshell = createobject("wscript.shell" )
Set env=wshshell.Environment("process" )
end sub
sub Reglages_des_variables()
CLAMSCAN=env("ProgramFiles" )&"\ClamWin\bin\clamscan.exe"
MCAFEE=env("ProgramFiles" )&"\McAfee\VirusScan Enterprise\scan32.exe"
TEMPDIR=env("temp" )
DATABASE=env("ALLUSERSPROFILE" )&"\.clamwin\db"
LOGG=env("temp" )&"\logsCLAMAV.txt"
McAFEE_LOG=env("DEFLOGDIR" )&"\OnDemandScanLog.txt"
RESULTAT="CLEF_PASSE_EN_STATION_BLANCHE.DAT"
EXCLU=""
VIRUS=""
nbVirus=0
end sub
sub FermerTAG()
if (IsNull(fichier) = False) And (IsEmpty(fichier) = False) Then
tagFerme = False
Do
'MsgBox "je ferme le TAG"
fichier.Close
If err<>0 then
'MsgBox("FermerTAG ERREUR : "&err&" - "&err.Description&"." )
err.Clear
Else
'MsgBox("TAG fermé" )
tagFerme = True
End If
Wscript.Sleep 100
Loop Until tagFerme
End If
end sub
sub Ejecter_cle()
cleNonEjecte = True
Do
'MsgBox "J'éjecte la clé : "&LECTEUR
'MsgBox "test 1 (éjection de "&LECTEUR&" ): "& objFSO.DriveExists(LECTEUR)
wshshell.Run "deveject.exe -EjectDrive:"&LECTEUR&":",0,True
'wshshell.Run "deveject.exe -EjectDrive:I:"
cleNonEjecte = objFSO.DriveExists(LECTEUR)
'MsgBox "test 2 (éjection de "&LECTEUR&" ): "& cleNonEjecte
'If (err<>0) then
' 'MsgBox("Ejecter_cle ERREUR : "&err&" - "&err.Description&"." )
err.Clear
'Else
' 'MsgBox("clé éjecté" )
cleEjecte = True
'End If
Wscript.Sleep 100
Loop Until cleNonEjecte = False
Test_decouverte_nouveau_lecteur()
end Sub