elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 05:19  


Tema destacado: [AIO elhacker.NET] Compilación herramientas análisis y desinfección malware

+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Novlucker, Leo Gutiérrez., EleKtro H@cker)
| | |-+  sacar permisos de un share
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: sacar permisos de un share  (Leído 660 veces)
pabluria

Desconectado Desconectado

Mensajes: 7


Ver Perfil
sacar permisos de un share
« en: 14 Junio 2011, 23:06 »

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


En línea
pabluria

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: sacar permisos de un share
« Respuesta #1 en: 7 Julio 2011, 18:55 »

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


« Última modificación: 7 Julio 2011, 20:15 por pabluria » En línea
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 2.968


/^$/


Ver Perfil WWW
Re: sacar permisos de un share
« Respuesta #2 en: 7 Julio 2011, 19:49 »

¿Que busque qué?
¿Lenguaje?
¿Por qué no utilizas las etiquetas de código?
En línea

Código
(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}
 

leorocko13@hotmail.com
https://github.com/leogtzr/
pabluria

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: sacar permisos de un share
« Respuesta #3 en: 7 Julio 2011, 20:13 »

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!!!
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Net share
Hacking Básico
kicking people 0 333 Último mensaje 11 Noviembre 2005, 20:55
por kicking people
Share no regresa busqueda
Software
[Case] 0 273 Último mensaje 18 Diciembre 2007, 15:17
por [Case]
clip share
Hacking Básico
caven 0 504 Último mensaje 7 Febrero 2009, 21:34
por caven
Ayuda con share de TUENTI...
Chats; IRC y Messengers
777Rubenix777 0 851 Último mensaje 9 Noviembre 2010, 17:05
por 777Rubenix777
ayuda con el comando net share
Redes
chopy1989 2 2,293 Último mensaje 20 Febrero 2011, 04:18
por chopy1989
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines