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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?  (Leído 3,277 veces)
xBart

Desconectado Desconectado

Mensajes: 33



Ver Perfil
Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
« en: 25 Octubre 2022, 23:38 pm »

Hola, buenas tardes. Me gustaría saber cómo puedo hacerle para evitar que se ejecute instrucción, ya sea un comando o un archivo, si me encuentro en cierto directorio.

Ejemplo:

Si tengo un script en batch que se encuentra en C:\ o en una USB pueda ejecutarse de  manera correcta. Pero si se encuentra en Escritorio, que este archivo no se ejecute.


En línea

Un  usuario mas de la red...
Tachikomaia


Desconectado Desconectado

Mensajes: 1.220


Superhacker (es broma xD )


Ver Perfil
Re: Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
« Respuesta #1 en: 26 Octubre 2022, 01:18 am »

Se me ocurre que el programa intente cargar un archivo o ver si existe, y en caso de que sí, no ejecuta el code. Pero eso solo serviría si antes pones el archivo en el directorio. Creo que tu pregunta depende mucho del lenguaje que uses, en el que yo uso no sé si es posible.

Por otro lado ¿me explicas la frase de tu firma? Creo que está mal expresada  :huh:


« Última modificación: 26 Octubre 2022, 01:21 am por Tachikomaia » En línea

xBart

Desconectado Desconectado

Mensajes: 33



Ver Perfil
Re: Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
« Respuesta #2 en: 26 Octubre 2022, 02:54 am »

Jajajaja, ya tenía demasiado tiempo (años) que  no entraba al foro, incluso, tuve que resetear mi contraseña para poder entrar. A qué viene esto? que andaba todo pendejo hace 12 años para haber escrito esa frase tan culera, jajajjaa.

En lo respecta  al script. Es buena idea, se me había ocurrido, solo que buscaba algo más practico.

Gracias
En línea

Un  usuario mas de la red...
Elektro Enjuto

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
« Respuesta #3 en: 26 Octubre 2022, 04:19 am »

Si tengo un script en batch que se encuentra en C:\ o en una USB pueda ejecutarse de  manera correcta. Pero si se encuentra en Escritorio, que este archivo no se ejecute.

No queda claro si pretendes hacer algo como esto que he escrito:

Código
  1. @ECHO OFF & (CHCP 1252)1>NUL
  2.  
  3. Set "blacklistPaths=%HOMEDRIVE%\;%WINDIR%\;%USERPROFILE%\Desktop\"
  4. :: Set "blacklistPaths=C:\;C:\Windows\;C:\Users\{USUARIO}\Desktop\"
  5.  
  6. FOR %%# IN (%blacklistPaths%) DO (
  7. If /I "%~dp0" EQU "%%~f#" (
  8. COLOR C
  9. ECHO:[x] Directorio de inicio no permitido: "%%~f#"
  10. ECHO:[x] El programa se cerrará.
  11. EXIT /B 1
  12. )
  13. )
  14.  
  15. ECHO:[i] Directorio de inicio: "%~dp0"
  16. ECHO:[i] Bienvenido %COMPUTERNAME%\%USERNAME%.
  17. EXIT /B 0

O si por lo contrario buscas algún software de terceros para bloquar la ejecución del archivo (algo como esto: https://foro.elhacker.net/seguridad/intentando_hacer_algo_con_el_regedit_y_el_antivirus_en_windows_10-t516290.0.html;msg2265664#msg2265664 ).

O quizás lo que realmente buscas es desarrollar un script/programa en otro lenguaje de programación para bloquear la ejecución de un archivo .bat que esté en el escritorio, imitando así lo que haría el controlador de archivos de un antivirus. Entonces para llevar a cabo esto, y siendo relativamente mucho menos complicado que desarrollar un controlador de archivos, podrías hookear el proceso del explorador de Windows para interceptar las llamadas a la función "CreateProcessW".

Aquí tienes un ejemplo precisamente de esto, para .NET:
Re: API para impedir la ejecución de ejecutables.

-Enjuto Mojamuto "rey de los frikis" a su disposición para futuras dudas.
« Última modificación: 26 Octubre 2022, 04:29 am por Enjuto Mojamuto » En línea

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

Desconectado Desconectado

Mensajes: 33



Ver Perfil
Re: Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
« Respuesta #4 en: 26 Octubre 2022, 06:08 am »

Excelente, sí, eso era lo que estaba intentando hacer. Muchas gracias.

Lo que estaba haciendo era crear un archivo en el escritorio para posteriormente verificar si ese archivo estaba, si estaba, pues no se iba a ejecutar, y si no estaba, sí se iba a ejecutar. Estaba usando el "~dp0" para ver.

Otra cosa:

Cómo sería para hacer que el archivo batch solo se ejecute si está en la raíz de una unidad. Por ejemplo, si está en C:\ o D:\ se ejecute sin problemas; pero si detecta que es un directorio o subdirectorio, como por ejemplo, "Escritoio o descargas" no se ejecute.

Gracias

En línea

Un  usuario mas de la red...
Elektro Enjuto

Desconectado Desconectado

Mensajes: 121



Ver Perfil WWW
Re: Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
« Respuesta #5 en: 26 Octubre 2022, 08:16 am »

Lo que estaba haciendo era crear un archivo en el escritorio para posteriormente verificar si ese archivo estaba, si estaba, pues no se iba a ejecutar, y si no estaba, sí se iba a ejecutar.

Ya viste que eso es innecesario. La variable especial de argumento "%0" (sus modificadores "d" de driveletter y "p" de path) te permite determinar el directorio de inicio o startup directory del archivo bat. Con la variable dinámica "%CD%" ("CD" es un acrónimo de Current Directory) puedes determinar el directorio de trabajo actual o working directory de la CMD, y con las variables de entorno o environment variables puedes determinar la ubicación de varios directorios predefinidos del sistema operativo actual.

( Te doy la info. tanto en Castellano como en Inglés por si es de tu interés. )

Cómo sería para hacer que el archivo batch solo se ejecute si está en la raíz de una unidad. Por ejemplo, si está en C:\ o D:\ se ejecute sin problemas; pero si detecta que es un directorio o subdirectorio, como por ejemplo, "Escritoio o descargas" no se ejecute.

Para impedir que el script prosiga con su ejecución al iniciarlo desde un directorio distinto al directorio raíz de un (cualquier)dispositivo, simplemente puedes tomar la variable especial "%0" y comparar su modificador "d" (driveletter) con sus modificadores "dp" (driveletter+path) para determinar si son distintos:

Código
  1. @ECHO OFF & (CHCP 1252)1>NUL
  2.  
  3. IF "%~d0\" NEQ "%~dp0" (
  4.    ECHO:[x] Este archivo por lotes debe ejecutarse desde la raíz de una unidad (ej.: "%~d0\"^).
  5.    ECHO:[x] El programa se cerrará.
  6.    ECHO+
  7.    PAUSE
  8.    EXIT /B 1
  9. )
  10.  
  11. EXIT /B 0

-Enjuto Mojamuto "rey de los frikis" a su disposición -por segunda vez- para futuras dudas.
« Última modificación: 26 Octubre 2022, 09:11 am por Enjuto Mojamuto » En línea

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

Desconectado Desconectado

Mensajes: 33



Ver Perfil
Re: Cómo evitar el ejecutar una instrucción si me encuentro en un determinado directorio?
« Respuesta #6 en: 26 Octubre 2022, 19:19 pm »

Muchas gracias Enjuto Mojamuto ; como yo pensaba hacerlo, no iba a poder. Gracias nuevamente  ;-)
En línea

Un  usuario mas de la red...
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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