elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Reg add nu guarda bien numeros con espacios "1 0 0 0"
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Reg add nu guarda bien numeros con espacios "1 0 0 0"  (Leído 3,358 veces)
jarpon

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Reg add nu guarda bien numeros con espacios "1 0 0 0"
« en: 18 Noviembre 2022, 15:55 pm »

Hola a todos

Tengo que cambiar n registro de windows de un maquina del tipo REG_SZ, el contenido habitual es "1 1 0 0" y debo poder cambiarlo a "1 0 0 0" o "0 1 0 0" pero cuando envio el dato (string) simpre me pone la clave a 1 en el primer caso y a 0 en el segundo caso. A partir del espacio no contempla los siguientes caracteres. Si el dato no contiene espacios funciona correctamente.

Estoy usando Reg Add en un bat

Reg Add %1 /V %2 /T %3 /D %4 /F

Llamandolo desde psexec

sPath="Ruta de la clave"
sValueName ="Nombre de la clave"
ValueType="REG_SZ"
sValueData="Valor de la clave"

IPMaquina = "xxx.xxx.xxx.xxx"
AdminUserMaquina1="Administrador"
AdminPWDMaquina="Password"

set objShell = CreateObject("WScript.Shell")
cmd= "D:\NUBOTBAT\psexec.exe \\"& IPMaquina &" -u " &AdminUserMaquina1&" -p " &AdminPWDMaquina &" -d -c -h -i -realtime -f D:\NUBOTBAT\WriteReg.bat " &sPath &" "&sValueName &" " &ValueType &" " &sValueData

objShell.Exec (cmd)

Creo que me falta algo en el comando, alguna idea?

Gracias por adelantado


En línea

Danielㅤ


Desconectado Desconectado

Mensajes: 1.680


🔵🔵🔵🔵🔵🔵🔵


Ver Perfil
Re: Reg add nu guarda bien numeros con espacios "1 0 0 0"
« Respuesta #1 en: 18 Noviembre 2022, 17:12 pm »

Hola, en la variable que va a llevar esos números prueba a ponerla entre comillas.



Saludos


En línea

Elektro Enjuto

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: Reg add nu guarda bien numeros con espacios "1 0 0 0"
« Respuesta #2 en: 18 Noviembre 2022, 17:23 pm »

Los argumentos con espacios en blanco han de encerrarse entre comillas dobles.

En esta linea, en concreto en la variable "sValueData":
Código:
cmd= "D:\NUBOTBAT\psexec.exe \\"& IPMaquina &" -u " &AdminUserMaquina1&" -p " &AdminPWDMaquina &" -d -c -h -i -realtime -f D:\NUBOTBAT\WriteReg.bat " &sPath &" "&sValueName &" " &ValueType &" " &sValueData

cada número después de un espacio en blanco contará como un nuevo argumento (%5, %6, etc).

Debes añadir comillas dobles antes y despues de "&sValueData":
Código:
cmd= ... & Chr(34) & sValueData & Chr(34)

En realidad deberías hacer eso también con las variables "sPath" y "sValueName" para evitar este mismo error al escribir una ruta de registro o un nombre de valor de registro que contengan espacios en blanco.

Y esto déjalo así para mayor seguridad:
Código:
REG ADD "%~1" /V "%~2" /T "%~3" /D "%~4" /F

Saludos.
« Última modificación: 18 Noviembre 2022, 17:26 pm por Enjuto Mojamuto » En línea

@%$& #$ %&#$, ¡hay que decirlo más!.
jarpon

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Reg add nu guarda bien numeros con espacios "1 0 0 0"
« Respuesta #3 en: 18 Noviembre 2022, 19:17 pm »

Gracias Enjuto

Lo hice y funciona perfecto.
En línea

jarpon

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Reg add nu guarda bien numeros con espacios "1 0 0 0"
« Respuesta #4 en: 18 Noviembre 2022, 19:41 pm »

Una ultima cosilla

Cuando realiza la grabacion al registro se abre una ventana de comando 1 segundo y se cierra.

Es possible ocultar esta ventana?

Gracias
En línea

Elektro Enjuto

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: Reg add nu guarda bien numeros con espacios "1 0 0 0"
« Respuesta #5 en: 19 Noviembre 2022, 04:28 am »

Una ultima cosilla

Cuando realiza la grabacion al registro se abre una ventana de comando 1 segundo y se cierra.

Es possible ocultar esta ventana?

Gracias

Utiliza el método Run en lugar de Exec:

Código:
objShell.Run (cmd, 0, true)

https://ss64.com/vb/run.html
En línea

@%$& #$ %&#$, ¡hay que decirlo más!.
jarpon

Desconectado Desconectado

Mensajes: 28


Ver Perfil
Re: Reg add nu guarda bien numeros con espacios "1 0 0 0"
« Respuesta #6 en: 23 Noviembre 2022, 23:31 pm »

Hola Enjuto

Muchas gracias por tu aportacion lo he probado y funciona perfectamente ocultando la ventana.

Pero tengo otros scripts que leen unos registros remotos con Reg query y no me funciona con Run.

Gracias por adelantado.

Este es el codigo:

Set sh = CreateObject("WScript.Shell")
'Sending credentials.
cmd = "CmdKey /Add:" & IPExt1 & " /User:" &AdminUser &"/Pass:" &AdminPWD
sh.Exec(cmd)

'Reading profile Fast.
cmd = "Reg Query ""\\" & IPExt1 & "\HKLM\SOFTWARE\WOW6432Node\_ProfAssoc"" /V Fast"
'Set rpta = sh.Exec(cmd)                     'este funciona pero se ven las ventana un instante.
Set rpta = sh.Run (cmd,0,true)            'este no funciona no llega a leer el registro.
sProfileFast = rpta.StdOut.ReadAll()
sProfileFast=Split(Split(sProfileFast, vbCrLf)(2), "    ")(3)
En línea

Elektro Enjuto

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: Reg add nu guarda bien numeros con espacios "1 0 0 0"
« Respuesta #7 en: 24 Noviembre 2022, 00:42 am »

El problema en ese último código que has publicado es que el método 'Exec' te devuelve un objeto del tipo 'WshExec' y este objeto tiene la propiedad 'StdOut' la cual estás intentando utilizar, pero el método 'Run' tan solo devuelve un valor numérico (el código de salida del programa ejecutado), así que como es evidente no puedes utilizar el valor de retorno de ambas funciones de la misma forma, por que son muy distintos.

Te voy a indicar una solución, pero sinceramente y siempre que no tengas inconveniente yo te aconsejaría migrar esos scripts a PowerShell para evitar complicarte la vida de esta forma con VBS.

Lo que puedes hacer con VBS es modificar el comando de REG QUERY para abrir una nueva instancia de la CMD con la que redireccionar la salida del comando REG a un archivo de texto plano, y luego leer el contenido de este archivo para obtener la salida del comando REG QUERY que se haya registrado en el archivo de texto.

Te muestro un ejemplo y tu ya lo adaptas al comando de REG QUERY que vayas a utilizar:

Código
  1. Option Explicit
  2. Dim fso, shell, regCommand, regCommandOutput, outputFilePath, outputFile
  3.  
  4. Set fso   = WScript.CreateObject("Scripting.FileSystemObject")
  5. Set shell = WScript.CreateObject("WScript.Shell")
  6.  
  7. outputFilePath = fso.GetSpecialFolder(2) & "\reg_query.tmp"
  8. ' C:\Users\{USERNAME}\AppData\Local\Temp\reg_query.tmp
  9.  
  10. regCommand = "CMD /C "" (REG QUERY ""HKLM\SOFTWARE"" /ve) 1> """ & outputFilePath & """ 2>&1 """
  11. ' CMD /C " (REG QUERY "HKLM\SOFTWARE" /ve) 1> "C:\Users\{USERNAME}\AppData\Local\Temp\reg_query.tmp" 2>&1 "
  12.  
  13. call shell.Run (regCommand, 0, true)
  14.  
  15. Set outputFile = fso.OpenTextFile(outputFilePath, 1)
  16. regCommandOutput = outputFile.ReadAll
  17. outputFile.Close
  18.  
  19. Call MsgBox(regCommandOutput, vbInformation, "REG QUERY COMMAND OUTPUT")
  20.  
  21. WScript.Quit(0)
« Última modificación: 24 Noviembre 2022, 00:53 am por Enjuto Mojamuto » En línea

@%$& #$ %&#$, ¡hay que decirlo más!.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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