Monitorar drive A

Olá,

vez ou outra encontro no fórum uma pessoa perguntando sobre como monitorar o drive A:, procurando por arquivos. Criei um script (adaptando um velho conhecido do site do ScriptCenter) para demonstrar algumas coisas:

strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &  strComputer & "\root\cimv2")
set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""a:\\\\""'")

Do
 Set objLatestEvent = colMonitoredEvents.NextEvent
 Wscript.Echo objLatestEvent.TargetInstance.PartComponent
 Wscript.sleep 100
Loop

Este script pode até enviar emails para o administrador quando algum usuário copiar um arquivo para seu drive a:. Bastaria trocar a linha em negrito pela chamada da função SendEmailWithoutSSL de um outro script meu, que monitora quando usuários plugam dispositivos de armazenamento USB e que está publicado aqui mesmo no blog.

Parece legal, mas esse script possui alguns problemas:

  • Ele utiliza eventos do WMI para monitorar o drive, de 10 em 10 segundos. A idéia é boa, mas um arquivo copiado nesse intervalo passaria despercebido pelo sistems. Diminuir esse intervalo por outro lado, tornaria o sistema como um todo mais lento.
  • Ver a lista de arquivos do drive A: faz barulho. =)
  • Copiar para disquete nada resolve nos dias de hoje, com emails de mais de 2gb de armazenamento.

Diante desses problemas, eu sugiro sair por outro lado: proibir o acesso ao drive A: via GPO. É mais simples e eficaz.

Dessa vez, a saída por scripting não é a mais viável.

Até mais!

Categorias dessa postagem:

Comentários

Unknown : como mapear impressora conforme o grupo do usuario logado, do dominio. [29/5/07 00:17 - link]

Vinicius Canto : http://lazynetworkadmin.com/content/view/7/6/ [4/6/07 09:28 - link]

Anônimo : Vinicius, vc pode me ajudar??? nao estou conseguindo alterar seu script para monitorar o que é gravado na USB... A linha original do script para monitorar o drive A é essa abaixo, mas como altera-la para monitorar a USB ?

set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""a:\\\\""'")

Desde ja obrigado.
Reginaldo.
rpzin@hotmail.com [13/9/07 17:16 - link]

Anônimo : Olá Vinicius, gostei muito desse seu script, consegui fazer com q ele mande as informações por e-mail, porem ele manda tbm o conteudo do disquete.

Como fazer q ele não envie tais informações? Quero saber apenas quando foi usado o drive a:, assim como vc fez o o USB!

Agradeço desde já,
Saulo Contaifer

email: batatinhak@globo.com [26/2/08 20:27 - link]

Unknown : Boa noite

Vinicius, show de bola os seus scripts, porém eu gostaria de uma ajuda, é possível fazer com que eu grave o que foi gravado em outra pasta do Windows ? exemplo fazer um txt, me informando o usário, data, e o nome do arquivo que foi copiado !? ou seja, os inves de ir para o WMI, direcionar para outro lugar ?

[]`s [16/7/08 20:43 - link]

Anônimo : Boa Tarde
Vinicios, alterei o Script para tentar juntar as duas funções, ele ficou assim

'USB Storage Monitor
'
'Vinicius Canto
'MVP Visual Developer - Scripting
'
'Grupo PET Computagco - Universidade de Sco Paulo - Brasil

'Disabling error messages...
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set colMonitoredEvents = objWMIService.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 3 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent=""w:\\\\""'")

do
Set objLatestEvent = colMonitoredEvents.NextEvent
Notifier(objLatestEvent.TargetInstance)
Loop

Sub Notifier(object)
Set objNet = CreateObject("Wscript.Network")
SendMailWithoutSSL _
"mcbarbalho@ung.br", _
"Arquivo Copiado " & , _
"usb@ung.br", _
"O Usuário " & objNet.Username & " Conectou um dispositivo USB no computer "& objNet.Computername, _
"smtp.intranet.ung.br", _
25, _
"usb@ung.br", _
"123456"
Wscript.sleep 100
end sub

' CDOSYS official documentation:
' http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wss/wss/_cdo_queue_top.asp
'
' by Vinicius Canto
Sub SendMailWithoutSSL(strDestination, strTitle, strFrom, strMessage, strSMTP, intPort, strUsername, strPassword)
set oMessage = CreateObject("CDO.Message")
set oConf = CreateObject("CDO.Configuration")
Set oFields = oConf.Fields



oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP
oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = intPort
oFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic: Auth with user and password sent with plain text
oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strUsername
oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strPassword
oFields.Item("http://schemas.microsoft.com/cdo/configuration/Smtpusessl") = false
oFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 '1: Using local SMTP; 2: Using port; 3: Using Exchange
oFields.Update

oMessage.Fields.Item("urn:schemas:mailheader:to") = strDestination
oMessage.Fields.Item("urn:schemas:mailheader:from") = strFrom
oMessage.Fields.Item("urn:schemas:mailheader:sender") = strFrom 'reply-to
oMessage.Fields.Item("urn:schemas:mailheader:subject")= strTitle
oMessage.Fields.Item("urn:schemas:mailheader:x-mailer") = "Vinicius Small Mail System -- by Vinicius Canto "
oMessage.Fields.Update

oMessage.Configuration = oConf

oMessage.TextBody = strMessage
oMessage.Send
End Sub

ele até envia o email a cada copia de arquivo mais não consigo mostrar os arquivos que estão sendo copiados

Pode me ajudar?/

Obrigado [1/9/08 17:50 - link]

Anônimo : Vinícius preciso saber que dispositivo esta se conectando na porta USB, Teria como? Por exemplo, o dispositivo pode ser tanto um pen drive, como pode ser uma impressora.
Como sei o que é?

Att. [16/11/09 16:31 - link]