elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  [m][SNIPPET] IsUserAnAdmin?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [m][SNIPPET] IsUserAnAdmin?  (Leído 2,265 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
[m][SNIPPET] IsUserAnAdmin?
« en: 30 Julio 2010, 16:19 pm »

Código
  1. 'ADVAPI32
  2. Private Declare Function CheckTokenMembership Lib "ADVAPI32" (ByVal TokenHandle As Long, ByVal pSidToCheck As Long, ByRef IsMember As Boolean) As Long
  3.  
  4. '---------------------------------------------------------------------------------------
  5. ' Procedure : IsUserAnAdmin
  6. ' Author    : Karcrack
  7. ' Date      : 300710
  8. ' Purpose   : Check wether the user is in the Administrator Group
  9. ' TestedOn  : Windows XP SP3
  10. '---------------------------------------------------------------------------------------
  11. '
  12. Private Function IsUserAnAdmin() As Boolean
  13.    Dim SID(1)  As Currency
  14.    'Hardcoded SID
  15.    SID(0) = 36028797018964.0193@: SID(1) = 233646220.9056@
  16.    Call CheckTokenMembership(0, VarPtr(SID(0)), IsUserAnAdmin)
  17. End Function

Es un pequeño codigo minimalista (como a mi me gusta ::)) que reemplaza a la funcion IsUserAnAdmin@SHELL32, que es simplemente un wrapper a CheckTokenMembership@ADVAPI32

Como podeis comprobar el SID (Security IDentifier) esta hardcodeado... asi que me gustaria que lo probaseis en vuestros PCs, no deberia fallar, pero nunca se sabe :laugh:

Originalmente posteado en:
Código:
http://cobein.com/wp/?p=559

Saludos :D


« Última modificación: 20 Noviembre 2011, 15:30 pm por Karcrack » En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [m][SNIPPET] IsUserAnAdmin?
« Respuesta #1 en: 30 Julio 2010, 16:31 pm »

Si me funciona¡! :D
Tengo Win XP...
Muy buena Kar! :-* :laugh:
Aunque no entiendo esto  :-[ :
Citar
Código
  1.    'Hardcoded SID
  2.    SID(0) = 36028797018964.0193@: SID(1) = 233646220.9056@
Me podrias explicar un poco¿?  :huh:

DoEvents¡! :P


« Última modificación: 30 Julio 2010, 16:32 pm por *PsYkE1* » En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
Re: [m][SNIPPET] IsUserAnAdmin?
« Respuesta #2 en: 30 Julio 2010, 16:40 pm »

Claro, con mucho gusto :D

Primero, Que es un SID?
Código:
http://msdn.microsoft.com/en-us/library/aa379594(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa379597(VS.85).aspx
En este caso el SID que utilizamos es el de: "Esta en el grupo Administradores?" :xD

Para utilizar el API CheckTokenMembership has de preparar el SID con (por ejemplo) el API ConvertStringSidToSid, estas conversiones son siempre constantes, es decir, tu podrias establecer directamente la estructura sin valerte de estas API de ayuda, a pesar de que Windows no lo recomienda....

El tamaño de la estructura SID es variable, pero en este caso ocuparia 16bytes (Es decir 2x8) cada Currency ocupa 8 bytes, asi que lo que he hecho ha sido definir la estructura en Currencies en vez de con Bytes,Integers y Longs, que es como deberia estar... Al API le da igual como lo haga, porque accede exactamente igual a la informacion, simplemente lo hago para acortar :D

Espero haber sido claro, no se me da muy eso de redactar a mi :laugh: :laugh:

Saludos ;)
En línea

raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: [m][SNIPPET] IsUserAnAdmin?
« Respuesta #3 en: 30 Julio 2010, 16:42 pm »

Aunque no entiendo esto  :-[ :
Citar
Código
  1.    'Hardcoded SID
  2.    SID(0) = 36028797018964.0193@: SID(1) = 233646220.9056@
Me podrias explicar un poco¿?  :huh:

Es la variable en memoria donde esta el flag si es admin o no?:..... .FAIL! :xD


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
:¬¬
En línea

Psyke1
Wiki

Desconectado Desconectado

Mensajes: 1.089



Ver Perfil WWW
Re: [m][SNIPPET] IsUserAnAdmin?
« Respuesta #4 en: 30 Julio 2010, 16:44 pm »

Claro, con mucho gusto :D

Primero, Que es un SID?
Código:
http://msdn.microsoft.com/en-us/library/aa379594(v=VS.85).aspx
http://msdn.microsoft.com/en-us/library/aa379597(VS.85).aspx
En este caso el SID que utilizamos es el de: "Esta en el grupo Administradores?" :xD

Para utilizar el API CheckTokenMembership has de preparar el SID con (por ejemplo) el API ConvertStringSidToSid, estas conversiones son siempre constantes, es decir, tu podrias establecer directamente la estructura sin valerte de estas API de ayuda, a pesar de que Windows no lo recomienda....

El tamaño de la estructura SID es variable, pero en este caso ocuparia 16bytes (Es decir 2x8) cada Currency ocupa 8 bytes, asi que lo que he hecho ha sido definir la estructura en Currencies en vez de con Bytes,Integers y Longs, que es como deberia estar... Al API le da igual como lo haga, porque accede exactamente igual a la informacion, simplemente lo hago para acortar :D

Espero haber sido claro, no se me da muy eso de redactar a mi :laugh: :laugh:

Saludos ;)
Gracias tio! ;-)
Lo voy a mirar! ;)

DoEvents¡!
:P
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.419


Se siente observado ¬¬'


Ver Perfil
Re: [m][SNIPPET] IsUserAnAdmin?
« Respuesta #5 en: 30 Julio 2010, 17:38 pm »

Ya ha sido probado en W$ 7 x86/x64

Resultado: Va de lujo :P
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[FASM-SRC]IsUserAnAdmin [Estrenando SubForo :P]
ASM
Karcrack 4 2,962 Último mensaje 30 Mayo 2009, 23:36 pm
por Eternal Idol
[Snippet]Suicide
Programación Visual Basic
Mi4night 1 1,416 Último mensaje 27 Julio 2010, 10:48 am
por fary
[SNIPPET] IsPCode()?
Programación Visual Basic
Karcrack 0 905 Último mensaje 3 Septiembre 2010, 18:01 pm
por Karcrack
[SNIPPET][VB6] WhereAmI, thisexe, GetMyPath...
Programación Visual Basic
Karcrack 4 2,233 Último mensaje 11 Marzo 2014, 03:42 am
por LeandroA
Ayuda .cpp Snippet
Programación C/C++
alexlopezcifuentes 1 834 Último mensaje 6 Marzo 2015, 11:11 am
por eferion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines