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