script analyse antivirus à l'accès

script analyse antivirus à l'accès - VB/VBA/VBS - Programmation

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
 

Reply

Marsh Posté le 12-11-2013 à 04:36:06   

Reply

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
 

Reply

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

Reply

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 …
 

Reply

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  :sarcastic:  
 
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 :o...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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)"...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

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 ! …
 

Reply

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.

Reply

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.

Reply

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é   :pfff:
 
Rassures-moi, tu travailles pas dans une administration française ou une société un peu sensible ?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 14-11-2013 à 10:59:58   

Reply

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 ;).


Message édité par flopel le 14-11-2013 à 21:52:00
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed