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
| |-+  Scripting
| | |-+  Script en VBS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Script en VBS  (Leído 3,139 veces)
Lacayo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Script en VBS
« en: 11 Julio 2018, 16:44 pm »

Hola a todos.

Solicito vuestra ayuda ya que no dispongo de conocimientos de programación.

Necesitaría crear un script en VBS que me permitiera habilitar o deshabilitar la WIFI en un equipo. Debería ser para WINDOWS.

El problema es que se me deshabilita la WIFI sin motivo y no dispongo de permisos de administrador para activar de nuevo el dispositivo.

Lo he conseguido hacer en un BAT con el comando:

 netsh interface set interface "Wi-Fi" enabled

pero requiere elevación.

VBS me debe permitir hacer lo mismo pero sin pedirme credenciales de administrador.

La duda: no se si es mejor hacerlo modificando claves de registro (no sé cuales) o a través de:

WshShell.Run ("cmd /c netsh interface set interface "Wi-Fi" enabled")

esta orden no me funciona en el script.

Gracias de antemano



En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Script en VBS
« Respuesta #1 en: 11 Julio 2018, 17:10 pm »

Citar
VBS me debe permitir hacer lo mismo pero sin pedirme credenciales de administrador.

por qué asumes eso? las credenciales de administrador es para acceso de diferentes "zonas" del sistema, todo lo que requiera ir a ellas te lo pedirá



Citar
Lo he conseguido hacer en un BAT con el comando:

 netsh interface set interface "Wi-Fi" enabled

pero requiere elevación

Citar
La duda: no se si es mejor hacerlo modificando claves de registro (no sé cuales) o a través de:

WshShell.Run ("cmd /c netsh interface set interface "Wi-Fi" enabled")

ambas opciones descritas requieren elevación, el VBS no esquiva ningún permiso


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Lacayo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Script en VBS
« Respuesta #2 en: 11 Julio 2018, 22:21 pm »

Gracias por responder

Citar
por qué asumes eso? las credenciales de administrador es para acceso de diferentes "zonas" del sistema, todo lo que requiera ir a ellas te lo pedirá

En un equipo donde no estaba habilitado la modificación del registro y era necesario cerrar sesión y dar permisos de administrador local al usuario para modificar una clave en HKCU, un script modificaba esa clave sin tener que elevar los permisos del usuario.

Entiendo que si adapto ese script puedo hacer lo que necesito.
En línea

Lacayo

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: Script en VBS
« Respuesta #3 en: 13 Julio 2018, 23:39 pm »

Buenas,

He progresado, pero poco.

localicé este batch que parece que servía:

Citar
REM .bat con permisos de administrador
:-------------------------------------
REM  --> Analizando los permisos
    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
>nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
) ELSE (
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
)

REM --> Si hay error es que no hay permisos de administrador.
if '%errorlevel%' NEQ '0' (
    echo Solicitando permisos de administrador... Requesting administrative privileges... Anfordern Administratorrechte ...
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

    "%temp%\getadmin.vbs"
    del "%temp%\getadmin.vbs"
    exit /B

:gotAdmin
    pushd "%CD%"
    CD /D "%~dp0"
:-------------------------------------- 

REM   INCLUYE AQUÍ TU CÓDIGO DEL FICHERO
::/Programa a Ejecutar
netsh interface set interface "WI-FI" enabled
pause
EXIT

Al final, y después de tanto código, creo que lo que hace es lo mismo que un runas /user:administrador. Es decir, para este viaje no hacían falta alforjas.
Eso sí, en un equipo que ya tiene permisos de administrador, no me pide elevación a la hora de ejecutar el script y me activa la WIFI.
En un equipo que no los tiene, me pide usuario y pass. La duda es si me lo pedirá en un equipo que tenga la UAC deshabilitada.

Imagino que la elevación a administrador se realiza aqui:

Citar
    goto UACPrompt
) else ( goto gotAdmin )

:UACPrompt
    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
    set params = %*:"=""
    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"

pero no tengo ni idea de para qué crea el script getadmin.vbs y si realmente sirve de algo.

Por otro lado he probado este otro script:

Citar
Rem Definiciones
Dim objShell, RegLocate, RegLocate1
Const EWX_LOGOFF = 0
Rem Librerias
Set objShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")
On Error Resume Next
Rem Cambia el valor del DWORD (Clave del registro)
RegLocate = "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{XXXXXXXXXXXXXXXXXXXXXXXX}\RegistrationEnabled"
objShell.RegWrite RegLocate,"0","REG_DWORD"
Rem Advierte del deslogeo
intReturn = objShell.Popup("Se va a cerrar la sesion para guardar los cambios, presione aceptar", _
20, "Auto LogOff", wshYesNoDialog + wshQuestionMark)
If intReturn = wshYes Then
For Each objPC In GetObject("winmgmts:{(shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
objPC.Win32Shutdown LOGOFF + FORCE
Next
ElseIf intReturn = wshNo Then
wscript.Quit
Else
Rem Si no responde se forza el deslogeo
For Each objPC In GetObject("winmgmts:{(shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
objPC.Win32Shutdown LOGOFF + FORCE
Next
End If
WScript.Quit (0) ' Detiene el Script y sale.

Este es peor. También requiere de elevación pero además no debe ser la clave de registro correcta ya que ni reiniciando ni cerrando sesión consigo activar o desactivar la WIFI.
Este segundo script hacía su trabajo perfectamente en un Windows XP. Es decir, no llegaba a pedir en ningún momento credenciales de administrador.

No sé si con esta nueva información me podréis ayudar

Saludos



En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines