Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - pabluria

#1
Scripting / Eventos del sistema de hoy
28 Septiembre 2011, 16:15 PM
Hola amigos!!
estoy buscando una forma simple de poder filtrar con un script de vbs, algunos eventos de seguridad de hoy.
es posible eso?
Mil Gracias!!!

Set colEvents = objWMIService.ExecQuery _
    ("Select * from Win32_NTLogEvent Where LogFile='Security' AND (EventCode=624 or EventCode=630 or EventCode=642 or EventCode=628)")
#2
Scripting / Re: sacar permisos de un share
7 Julio 2011, 20:13 PM
perdon. es vbs, el script me da los permisos de una carpeta y sus subdirectorios, el error me lo da en un directorio que tiene "." "C:\Windows\CSC\v2.0.6" para el script.
Muchas gracias!!!
#3
Scripting / Re: sacar permisos de un share
7 Julio 2011, 18:55 PM
buenas gente:
encontre uno mejor
pero me da el siguiente error.

C:\acl.vbs(86, 2) SWbemServicesEx: Ruta de acceso del objeto no válida

me dan una mano?
gracias!!!

Código (vb) [Seleccionar]
Option Explicit

Dim str_CarpetaOrigen     
Dim obj_ServicioWMI         
Dim obj_EntradasDeSeguridadDeCarpeta
Dim obj_DescriptorDeSeguridad     
Dim int_Devolucion                 
Dim int_FlagsDeControl           
Dim arr_ACEs                       
Dim obj_ACE                       
Dim obj_FileSystemObject           


Const SE_DACL_PRESENT = &h4
Const ACCESS_ALLOWED_ACE_TYPE = &h0
Const ACCESS_DENIED_ACE_TYPE  = &h1
Const FILE_ALL_ACCESS         = &h1f01ff
Const FOLDER_ADD_SUBDIRECTORY = &h000004
Const FILE_DELETE             = &h010000
Const FILE_DELETE_CHILD       = &h000040
Const FOLDER_TRAVERSE         = &h000020
Const FILE_READ_ATTRIBUTES    = &h000080
Const FILE_READ_CONTROL       = &h020000
Const FOLDER_LIST_DIRECTORY   = &h000001
Const FILE_READ_EA            = &h000008
Const FILE_SYNCHRONIZE        = &h100000
Const FILE_WRITE_ATTRIBUTES   = &h000100
Const FILE_WRITE_DAC          = &h040000
Const FOLDER_ADD_FILE         = &h000002
Const FILE_WRITE_EA           = &h000010
Const FILE_WRITE_OWNER        = &h080000
Const WBEM_RETURN_IMMEDIATELY = &h10
Const WBEM_FORWARD_ONLY = &h20


'la carpea que pasamos como parametro, sino la actual
If Wscript.Arguments.Count = 0 Then

    str_CarpetaOrigen = "."

Else

    str_CarpetaOrigen = Wscript.Arguments(0)

End If

'Creamos el objeto FileSystem
Set obj_FileSystemObject = CreateObject("Scripting.FileSystemObject")

'Llamamos a la rutina que obtiene las ACLs
Call s_Muestra_ACLs(obj_FileSystemObject.GetFolder(str_CarpetaOrigen))

Sub s_Muestra_ACLs(obj_Carpeta)

    Dim obj_SubCarpeta 'Objeto que albergará cada carpeta contenida en la
                    'carpeta obj_Carpeta

    'ruta de la carpeta en la que estamos
WScript.StdOut.Write  vbCrLf & obj_Carpeta.Path

'Creamos un objeto del servicio WMI
Set obj_ServicioWMI = GetObject("winmgmts:")

'Creamos un objeto con las entradas de seguridad de la carpeta
Set obj_EntradasDeSeguridadDeCarpeta = _
                obj_ServicioWMI.Get _
       ( _
        "Win32_LogicalFileSecuritySetting='" & _
     obj_Carpeta.Path & "'" _
     )

'Creamos un objeto descriptor de seguridad
int_Devolucion = _
         obj_EntradasDeSeguridadDeCarpeta.GetSecurityDescriptor _
                        (obj_DescriptorDeSeguridad)

'Almacenamos los flags de control del descriptor de seguridad
int_FlagsDeControl = obj_DescriptorDeSeguridad.ControlFlags

'revisamos los flags
If (int_FlagsDeControl AND SE_DACL_PRESENT) _
           = SE_DACL_PRESENT Then
    arr_ACEs = obj_DescriptorDeSeguridad.DACL

    For Each obj_ACE in arr_ACEs

        WScript.StdOut.Write "\" & obj_ACE.Trustee.Domain & "\" & obj_ACE.Trustee.Name & " "

        If (obj_ACE.AceType = ACCESS_ALLOWED_ACE_TYPE) _
           = ACCESS_ALLOWED_ACE_TYPE Then
            WScript.StdOut.Write "P: "

        ElseIf (obj_ACE.AceType = ACCESS_DENIED_ACE_TYPE) _
           = ACCESS_DENIED_ACE_TYPE Then

            WScript.StdOut.Write "D: "

        End If

        If (obj_ACE.AccessMask AND FILE_ALL_ACCESS) _
           = FILE_ALL_ACCESS Then

            WScript.StdOut.Write "FAA "

        End If

        If (obj_ACE.AccessMask AND FOLDER_ADD_SUBDIRECTORY) _
           = FOLDER_ADD_SUBDIRECTORY Then

            WScript.StdOut.Write "FAS "

        End If

        If (obj_ACE.AccessMask AND FILE_DELETE) _
           = FILE_DELETE Then

            WScript.StdOut.Write "FD "

        End If

        If (obj_ACE.AccessMask AND FILE_DELETE_CHILD) _
           = FILE_DELETE_CHILD Then

            WScript.StdOut.Write "FDC "

        End If

        If (obj_ACE.AccessMask AND FOLDER_TRAVERSE) _
           = FOLDER_TRAVERSE Then

            WScript.StdOut.Write "FT "

        End If

        If (obj_ACE.AccessMask AND FILE_READ_ATTRIBUTES) _
           = FILE_READ_ATTRIBUTES Then

            WScript.StdOut.Write "FRA "

        End If

        If (obj_ACE.AccessMask AND FILE_READ_CONTROL) _
           = FILE_READ_CONTROL Then

            WScript.StdOut.Write "FRC "

        End If

        If (obj_ACE.AccessMask AND FOLDER_LIST_DIRECTORY) _
           = FOLDER_LIST_DIRECTORY Then

            WScript.StdOut.Write "FLD "

        End If

        If (obj_ACE.AccessMask AND FILE_READ_EA) _
           = FILE_READ_EA Then

            WScript.StdOut.Write "FREA "

        End If

        If (obj_ACE.AccessMask AND FILE_SYNCHRONIZE) _
           = FILE_SYNCHRONIZE Then

            WScript.StdOut.Write "FS "

        End If

        If (obj_ACE.AccessMask AND FILE_WRITE_ATTRIBUTES) _
           = FILE_WRITE_ATTRIBUTES Then

            WScript.StdOut.Write "FWA "

        End If

        If (obj_ACE.AccessMask AND FILE_WRITE_DAC) _
           = FILE_WRITE_DAC Then

            WScript.StdOut.Write "FWD "

        End If

        If (obj_ACE.AccessMask AND FOLDER_ADD_FILE) _
           = FOLDER_ADD_FILE Then

            WScript.StdOut.Write "FAF "

        End If

        If (obj_ACE.AccessMask AND FILE_WRITE_EA) _
           = FILE_WRITE_EA Then

            WScript.StdOut.Write "FWEA "

        End If

        If (obj_ACE.AccessMask AND FILE_WRITE_OWNER) _
           = FILE_WRITE_OWNER Then

            WScript.StdOut.Write "FWO "

        End If

    Next

Else

    WScript.StdOut.Write "NACL"

End If

'Realizamos una llamada recursiva en cada una de las carpetas contenidas en la carpeta recibida como parámetro.
For Each obj_SubCarpeta In obj_Carpeta.SubFolders

     Call s_Muestra_ACLs(obj_Subcarpeta)

Next

End Sub
#4
Scripting / sacar permisos de un share
14 Junio 2011, 23:06 PM
Bunenas tardes amigos:

me darian una mano para hacer que este script sea recursivo y que busque en todas las carpetas.

un abrazo y como siempre mil gracias!!!

Option Explicit

Const SE_DACL_PRESENT = &h4
Const ACCESS_ALLOWED_ACE_TYPE = &h0
Const ACCESS_DENIED_ACE_TYPE  = &h1
Const FILE_ALL_ACCESS = &h1f01ff
Const FOLDER_ADD_SUBDIRECTORY = &h000004
Const FILE_DELETE = &h010000
Const FILE_DELETE_CHILD = &h000040
Const FOLDER_TRAVERSE = &h000020
Const FILE_READ_ATTRIBUTES = &h000080
Const FILE_READ_CONTROL = &h020000
Const FOLDER_LIST_DIRECTORY = &h000001
Const FILE_READ_EA = &h000008
Const FILE_SYNCHRONIZE = &h100000
Const FILE_WRITE_ATTRIBUTES = &h000100
Const FILE_WRITE_DAC = &h040000
Const FOLDER_ADD_FILE = &h000002
Const FILE_WRITE_EA = &h000010
Const FILE_WRITE_OWNER = &h080000
Const WBEM_RETURN_IMMEDIATELY = &h10
Const WBEM_FORWARD_ONLY = &h20

Dim objWMIService, objItem
Dim strComputer
Dim arrComputers
Dim colItems

Sub ReadDescriptor(strPath)
        Dim objFolderSecuritySettings, objSD, objACE
        Dim arrACEs
        Dim intControlFlags
       
        Set objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strPath & "'")
        objFolderSecuritySettings.GetSecurityDescriptor objSD
       
        intControlFlags = objSD.ControlFlags
       
                If intControlFlags AND SE_DACL_PRESENT Then
                        arrACEs = objSD.DACL
                For Each objACE in arrACEs
                        WScript.StdOut.Write  "\" & objACE.Trustee.Domain & "\" & objACE.Trustee.Name

                If objACE.AccessMask AND FILE_ALL_ACCESS Then
                        WScript.StdOut.Write " FILE_ALL_ACCESS "   
         End If
                If objACE.AccessMask AND FOLDER_ADD_SUBDIRECTORY Then
                         WScript.StdOut.Write "FOLDER_ADD_SUBDIRECTORY "
                End If
                If objACE.AccessMask AND FILE_DELETE Then                       
         WScript.StdOut.Write "FILE_DELETE "                 
      End If               
      If objACE.AccessMask AND FILE_DELETE_CHILD Then                       
         WScript.StdOut.Write "FILE_DELETE_CHILD "                 
      End If               
      If objACE.AccessMask AND FOLDER_TRAVERSE Then                       
         WScript.StdOut.Write "FOLDER_TRAVERSE "
                End If
                If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
                        WScript.StdOut.Write  "FILE_READ_ATTRIBUTES "
                End If
                If objACE.AccessMask AND FILE_READ_CONTROL Then
                        WScript.StdOut.Write "FILE_READ_CONTROL "
                End If
                If objACE.AccessMask AND FOLDER_LIST_DIRECTORY Then
                        WScript.StdOut.Write "FOLDER_LIST_DIRECTORY "
                End If
                If objACE.AccessMask AND FILE_READ_EA Then
                        WScript.StdOut.Write "FILE_READ_EA "
                End If
                If objACE.AccessMask AND FILE_SYNCHRONIZE Then
                        WScript.StdOut.Write "FILE_SYNCHRONIZE "
                End If
                If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
                        WScript.StdOut.Write"FILE_WRITE_ATTRIBUTES "
                End If
                If objACE.AccessMask AND FILE_WRITE_DAC Then
                        WScript.StdOut.Write "FILE_WRITE_DAC "
                End If
                If objACE.AccessMask AND FOLDER_ADD_FILE Then
                        WScript.StdOut.Write "FOLDER_ADD_FILE "
                End If
                If objACE.AccessMask AND FILE_WRITE_EA Then
                        WScript.StdOut.Write "FILE_WRITE_EA "
                End If
                If objACE.AccessMask AND FILE_WRITE_OWNER Then
                        WScript.StdOut.Write "FILE_WRITE_OWNER "
                End If
                next
                Else
                        WScript.StdOut.Write "No DACL present in security descriptor" & vbCrLf
                End If
         
End Sub

'
' Main Code
'
Const INPUT_FILE_NAME = "C:\tools\Computers.txt"
Const FOR_READING = 1
Dim objFSO
Dim objFile
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile(INPUT_FILE_NAME, FOR_READING)
                strComputer = objFile.ReadAll
                objFile.Close
                arrComputers = Split(strComputer, vbCrLf)
                        For Each strComputer In arrComputers                       
                        WScript.Echo strComputer
                                On Error Resume Next
                                Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
                                Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Share WHERE Type=0", "WQL",_
                                WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
                               
                        For Each objItem in colItems
                                WScript.StdOut.Write objItem.Path & " "
                                ReadDescriptor objItem.Path
            WScript.Echo
                        Next
                        Set objWMIService = Nothing
                        On Error Goto 0
                Next
#5
Scripting / Re: VBS no funciona guarda eventos
22 Febrero 2011, 02:09 AM
 :laugh: ;-) ;-) ;-) ;-) ;-)
Muchisimas Gracias!!!
me acabas de resolver un problema enorme, ya tenia quemada la cabeza!!!
#6
Scripting / Re: VBS no funciona guarda eventos
21 Febrero 2011, 17:35 PM
Muchas Gracias Por tu pronta respuesta. como podria hacer esta verificacion. soy nuevo en esto y hace dias que me estoy rompiendo la cabeza!!!
mil gracias!!!
#7
Scripting / VBS no funciona guarda eventos
16 Febrero 2011, 15:53 PM
Hola Amigos:

Tengo el siguiente problema con este script.
me funciona la parte de buscar y guardar un evento, pero cuando no se encuentran eventos deberia guardar en el archivo la leyenda "No se encontraron eventos." pero no lo hace, que estoy haciendo mail?

muchas Gracias!!!  :laugh:


Código (vb) [Seleccionar]
'Busca el nombre de la Pc local, de aca sacamos los eventos

Set wshShell = WScript.CreateObject( "WScript.Shell" )
strComputer = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )


'conectamos

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Backup, Security)}!\\" _
& strComputer & "\root\cimv2")

' definimos que buscar

Set colEvents = objWMIService.ExecQuery _
   ("Select * from Win32_NTLogEvent Where LogFile='Security' AND (EventCode=528 or EventCode=540)")

'creamos el archivo que contendra el log filtrado

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("C:\backup_evt\" & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".cvs")

'le decimos que mostrar y en que orden

For Each objEvent in colEvents
   strTimeWritten = objEvent.TimeWritten

   dtmTimeWritten = CDate(Mid(strTimeWritten, 5, 2) & "/" & _
       Mid(strTimeWritten, 7, 2) & "/" & Left(strTimeWritten, 4) _
           & " " & Mid (strTimeWritten, 9, 2) & ":" & _
               Mid(strTimeWritten, 11, 2) & ":" & Mid(strTimeWritten, 13, 2))

   dtmDate = FormatDateTime(dtmTimeWritten, vbShortDate)
   dtmTime = FormatDateTime(dtmTimeWritten, vbLongTime)

   strEvent = dtmDate & vbTab
   strEvent = strEvent & dtmTime & vbTab
   strEvent = strEvent & objEvent.SourceName & vbTab 'nombre
   strEvent = strEvent & objEvent.Type & vbTab   'Error
   strEvent = strEvent & objEvent.Category & vbTab 'categoria
   strEvent = strEvent & objEvent.EventCode & vbTab 'codigo
   strEvent = strEvent & objEvent.User & vbTab 'usuario
   strEvent = strEvent & objEvent.ComputerName & vbTab 'maquina


'mensaje que avisa que no se encontraron eventos no funca


   strDescription = objEvent.Message
   If IsNull(strDescription) Then
       strDescription = "No se encontraron eventos."
   End If
   strDescription = Replace(strDescription, vbCrLf, " ")
   strEvent = strEvent & strDescription

   objFile.WriteLine strEvent
Next

objFile.Close