elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
11 Octubre 2008, 18:41  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Scripting
| | | |-+  Bath - Guardar en una variable un valor de una clave de registro
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: Bath - Guardar en una variable un valor de una clave de registro  (Leído 636 veces)
nhaalclkiemr

Desconectado Desconectado

Mensajes: 1.644


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Bath - Guardar en una variable un valor de una clave de registro
« en: 22 Marzo 2007, 17:14 »

Bien, como no hay sección Bath en este foro lo pongo aki pork servirá para troyanos...

He encontrado por internet una manera de hacer "if exist" a una clave del registro usando los comandos "reg export","find" y "for" en ese orden. Primero exporta el registro a un archivo, en ese archivo busca si existe un valor, si existe establece con el "for" la variable 1 o 0 segun sea falso o verdadero k existe...

Pues bien...yo quiero hacer algo parecido, en vez de buscar si una clave existe o no, lo que quiero es poder guardar en una variable el valor de una clave del registro.
Supongo que se podrá hacer de manera parecida a lo anterior...por eso lo pongo...sin embargo yo no se usar bien el comando "for" por eso quería que me ayudarais...

En otro lado me dieron este bath:

Código:
reg export "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" temp.tmp
type temp.tmp | find "shell" > cadena_encontrada.tmp
for /f %%A IN (cadena_encontrada.tmp) DO set VARIABLE=%%A

Pero a mi no me funcionó, si alguien pudiera corregirlo o sabe como hacerlo lo agradecería mucho.

Gracias y un saludo ;) ;) ;) ;)
En línea

StasFodidoCrypter 1.0 - 100%
StasFodidoCrypter 2.0- 85%
Fire AV/FW-Killer - 97%

CUIDADO!!!!

sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.653


HAND


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #1 en: 27 Marzo 2007, 02:35 »

escribe en la consola..
REG /?

eso saca todos los argumentos que acepta REG.. sino
www.computerhope.com/reg.htm

Saludos!!
En línea

nhaalclkiemr

Desconectado Desconectado

Mensajes: 1.644


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #2 en: 30 Marzo 2007, 16:24 »

No me entiendes, ya se usar el reg. Lo que quiero es ex`prtar el registro a un archivo, despues busco una clave en concreto, y almaceno en una variable  el valor de esa clave

esto lo hago pork no existe ningun parametro para reg que te permita exportar el valor de una clave.

un saludo ;)
En línea

StasFodidoCrypter 1.0 - 100%
StasFodidoCrypter 2.0- 85%
Fire AV/FW-Killer - 97%

CUIDADO!!!!

sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.653


HAND


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #3 en: 30 Marzo 2007, 23:10 »

claro que si existe.. no te conteste en ese mmento porque no tenia tiempo, pero si te fijas en los links que puse, hubieras visto.. xD

reg export HKLM\Software\Microsoft\Windows\CurrentVersion\Run "c:\ex.reg"

eso funciona en WIN XP SP1, SP2 Pro y Home
En línea

ne0x

Desconectado Desconectado

Mensajes: 270



Ver Perfil
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #4 en: 31 Marzo 2007, 20:40 »

Na, que sigues sin entender...

Es cojer el valor de una cadena y guardarlo en una variable.
En línea

sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.653


HAND


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #5 en: 01 Abril 2007, 02:51 »

tu sigues sin entender..
de ahi con un for lo sacas..
En línea

ne0x

Desconectado Desconectado

Mensajes: 270



Ver Perfil
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #6 en: 01 Abril 2007, 12:00 »

Si, con el FOR saco la variable:

"nombre_de_cadena"="valor_cadena"

Hago un set variable=%variable:"=%

Y sale asi:

nombre_de_cadena=valor_cadena

Ahhh !! se me acaba de ocurrir un metodo para sacar solo lo que hay a la derecha del igual.

En un bucle cojemos y quitamos el primer caracter, si el caracter que hemos quitado es un "=" paramos, y si no quitamos el segundo caracter y hacemos lo mismo.

Entonces sacamos solo la parte que hay a la derecha del " = "
En línea

nhaalclkiemr

Desconectado Desconectado

Mensajes: 1.644


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #7 en: 02 Abril 2007, 21:09 »

A ver, la idea es esa:

Imaginaros que quiero guardar el valor de la clave "amd_dc_opt" que está en "HKLM\Software\Microsoft\Windows\CurrentVersion\Run". El valor es "C:\Archivos de programa\AMD\Dual-Core Optimizer\amd_dc_opt.exe"
Todo esto sin las comillas claro...

-Primero con reg export guardo en un archivo de texto plano las entradas por ejemplo de "HKLM\Software\Microsoft\Windows\CurrentVersion\Run"  Eso lo se hacer.

Código:
reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"

-Ahora tengo un archivo así:

Código:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run]
"nod32kui"="\"C:\\Archivos de programa\\Eset\\nod32kui.exe\" /WAITSERVICE"
"Gainward"="C:\\Archivos de programa\\XpertVision\\TBPanel.exe /A"
"NvCplDaemon"="RUNDLL32.EXE C:\\WINDOWS\\system32\\NvCpl.dll,NvStartup"
"NvMediaCenter"="RUNDLL32.EXE C:\\WINDOWS\\system32\\NvMcTray.dll,NvTaskbarInit"
"amd_dc_opt"="C:\\Archivos de programa\\AMD\\Dual-Core Optimizer\\amd_dc_opt.exe"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents]

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\IMAIL]
"Installed"="1"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\MAPI]
"Installed"="1"
"NoChange"="1"

[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\OptionalComponents\MSFS]
"Installed"="1"


-Ahora con el FOR, el TYPE y el FIND busco la linea llamada "amd_dc_opt"

Código:
type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
for /f %%A IN (cadena_encontrada.tmp) DO set VARIABLE=%%A
del /S /F /Q /A:- temp.tmp


-Pues ahora tengo la linea :

Código:
"amd_dc_opt"="C:\\Archivos de programa\\AMD\\Dual-Core Optimizer\\amd_dc_opt.exe"

Eso lo tengo en un archivo "cadena_encontrada.tmp" y en una variable %%A

Ahora habría que hacer lo que dice ne0x...quedarse solo con el valor y quitar el "amd_dc_opt"=



Ahora los principales problemas son:

-Aunke consigamos quedarnos solo con el valor, los simbolos \ aparecen como \\

-Si hay algun espacio, la variable solo coje hasta el espacio, prové a poner comillas pero no se donde las tengo que poner...

Por ejemplo, en el ejemplo anterior que puse yo la linea teorica que es %%A es:

Código:
"amd_dc_opt"="C:\\Archivos de programa\\AMD\\Dual-Core Optimizer\\amd_dc_opt.exe"

pero en la realidad la variable será:

Código:
"amd_dc_opt"="C:\\Archivos



Bueno, espero que me podais ayudar, gracias y un saludo ;) ;)
En línea

StasFodidoCrypter 1.0 - 100%
StasFodidoCrypter 2.0- 85%
Fire AV/FW-Killer - 97%

CUIDADO!!!!

ne0x

Desconectado Desconectado

Mensajes: 270



Ver Perfil
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #8 en: 03 Abril 2007, 00:10 »

Y si ponemos "%%A" ??.
En línea

nhaalclkiemr

Desconectado Desconectado

Mensajes: 1.644


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #9 en: 04 Abril 2007, 16:00 »

Ya lo prové pero no funciona...

Si pones "%%A" despues de FOR /F así:

Código:
reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"
type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
for /f "%%A" IN (cadena_encontrada.tmp) DO set a=%%A
del /S /F /Q /A:- temp.tmp

da un error:

Código:
No se esperaba IN en este momento.


Si pones "%%A" en SET a="%%A" asi:

Código:
reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"
type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
for /f %%A IN (cadena_encontrada.tmp) DO set a="%%A"
del /S /F /Q /A:- temp.tmp

lo que va a pasar es que la salida en vez de ser asi:

Código:
"amd_dc_opt"="C:\\Archivos

va a ser así:

Código:
""amd_dc_opt"="C:\\Archivos"

Yo pienso que usando delims, tokens, etc... que se podría hacer, pero no se utilizar esos parámetros del FOR



Pues aun nos queda pendiente el tema ese de los espacios y tambien el tema de transformar las barras dobles \\ en una barra sola \

Weno, pues haber si alguien me puede ayudar...

Un saludo ;) ;)
En línea

StasFodidoCrypter 1.0 - 100%
StasFodidoCrypter 2.0- 85%
Fire AV/FW-Killer - 97%

CUIDADO!!!!

nhaalclkiemr

Desconectado Desconectado

Mensajes: 1.644


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #10 en: 09 Abril 2007, 22:31 »

¿¿Alguien puede ayudar con el problema de convertir las barras dobles // en barras simples / y el problema de los espacios??
 :huh: :huh: :huh:

Venga, espero vuestra ayuda, quería resolver el tema principal de este post pronto...

Venga, saludos ;) ;)
En línea

StasFodidoCrypter 1.0 - 100%
StasFodidoCrypter 2.0- 85%
Fire AV/FW-Killer - 97%

CUIDADO!!!!

sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.653


HAND


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #11 en: 10 Abril 2007, 02:07 »

Código:
@echo off
FOR /F "tokens=2* delims==" %%I IN (reg.reg) DO (
call:PARSEA %%I
)
goto:EOF
:PARSEA
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
if "%PP:~-14%"=="amd_dc_opt.exe" (
echo La cadena encontrada fue: "%PP%"
)
« Última modificación: 10 Abril 2007, 02:13 por Sirdarckcat » En línea

nhaalclkiemr

Desconectado Desconectado

Mensajes: 1.644


Máximo exponente 9DB9F1AEED2FADBDE 997BBE20FEDA92


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #12 en: 10 Abril 2007, 20:23 »

Magnifico Sirdarckat, ahora solo me queda una pregunta...

¿A k viene este IF?:

Código:
if "%PP:~-14%"=="amd_dc_opt.exe" (
echo La cadena encontrada fue: "%PP%"
)

No se para que sirve...

He hecho este BATCH gracias a tu ayuda y pienso que funciona correctamente:

Código:
@echo off
reg export "RUTA_CLAVE" "temp.tmp"
if not %errorlevel%==0 goto error
type temp.tmp | find "NOMBRE_CLAVE" > cadena_encontrada.tmp
del /S /F /Q /A:- temp.tmp
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO set var="%%I"
if "%var%"=="" goto error
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO (
call:PARSEA %%I
)
goto :EOF
:PARSEA
del /S /F /Q /A:- cadena_encontrada.tmp
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
::aqui va el bat
exit
:error
::aqui va el bat de error en caso de que la RUTA_CLAVE o NOMBRE_CLAVE no exista
exit

El valor de "NOMBRE_CLAVE" queda perfectamente definido en la variable %PP% y ademas, le he añadido un control de errores que en caso de que "NOMBRE_CLAVE" o "RUTA_CLAVE" no existan te lleva a la etiqueta :error en la que puedes poner un BATCH diferente.

Por ejemplo, en nuestro caso sería:

Código:
@echo off
reg export "HKLM\Software\Microsoft\Windows\CurrentVersion\Run" "temp.tmp"
if not %errorlevel%==0 goto error
type temp.tmp | find "amd_dc_opt" > cadena_encontrada.tmp
del /S /F /Q /A:- temp.tmp
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO set var="%%I"
if "%var%"=="" goto error
FOR /F "tokens=2* delims==" %%I IN (cadena_encontrada.tmp) DO (
call:PARSEA %%I
)
goto :EOF
:PARSEA
del /S /F /Q /A:- cadena_encontrada.tmp
SET PP="%~1"
SET PP=%PP:\\=\%
SET PP=%PP:"=%
echo %PP%
exit
:error
del /S /F /Q /A:- cadena_encontrada.tmp
echo Error! La clave buscada no existe
exit

Ahora ya tenemos lo que queremos, pienso que el tema quedo zanjado, gracias ne0x y sobre todo Sirdarckat. :xD :xD

Un saludo ;) ;)
En línea

StasFodidoCrypter 1.0 - 100%
StasFodidoCrypter 2.0- 85%
Fire AV/FW-Killer - 97%

CUIDADO!!!!

sirdarckcat
sdc
CoAdmin
*****
Desconectado Desconectado

Mensajes: 4.653


HAND


Ver Perfil WWW
Re: Bath - Guardar en una variable un valor de una clave de registro
« Respuesta #13 en: 10 Abril 2007, 20:40 »

ahh el if era para que el for parseara el .reg y no tuvieras que hacer el pipe al find..
pero es lo mismo :P

que bien que ya pudiste

Saludos!!
En línea

Páginas: [1] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats