lunes, 25 de abril de 2016

Como ejecutar archivos batch y comandos de forma invisible y ocultos

Crear aplicaciones en lenguaje MSDOS, que al ser ejecutadas por el usuario no muestren la famosa pantalla negra, o sea que las instrucciones se transmitan de forma oculta, sin ninguna señal que indique que se está procesando una orden de la consola de CMD. Como copiar datos e información de forma automática de la computadora a dispositivos de almacenamiento USB y viceversa, solo al insertarlos en el equipo.
Ejecutar los archivos batch y comandos de forma invisible y ocultosSe puede ejecutar en Windows cualquier archivo batch de forma oculta, silenciosa e invisible, de manera que no se muestre el proceso en la consola de CMD.
Para eso es necesario crear un script escrito en lenguaje VBScript, que sea el que llame y ejecute el archivo batch y lo ejecute de forma oculta.
Los scripts son sencillas aplicaciones auto ejecutables similares a los archivos batch, la diferencia es que contienen código escrito en lenguaje VBScript, una derivación del famoso Visual Basic de Microsoft.
Para crear uno de estos scripts, solo es necesario pegar el código necesario en el Bloc de notas de Windows y guardar el archivo con cualquier nombre, pero que tenga la extensión de archivo: .vbs, en vez de la tradicional: .txt

Crear un script para ejecutar un archivo batch de forma oculta
Para crear el script necesario copia el siguiente código en el Bloc de notas y guárdalo con la extensión .vbs.
Cambia "archivo.cmd", por la ruta y el nombre del archivo batch que se desea ejecutar.
Como comprobaras en el código, la opción "vbhide" es la que hace que no se muestre la pantalla al ejecutarse el batch.
set objshell = createobject("wscript.shell")
objshell.run "archivo.cmd",vbhide

Archivo batch para copiar datos de dispositivos en unidades USB de forma oculta

Archivo batch que permite copiar de manera eficaz datos de cualquier dispositivo insertado en un puerto USB de la PC de forma oculta.
El método utilizado es un VBScript que al ejecutarlo llama al batch que hace la función de copia, este batch está diseñado de forma tal que automáticamente detecta en que unidad esta insertado el dispositivo y copia todo su contenido a una carpeta en tu PC, en este caso en la ruta D:\COPIA\.
Tanto el script como el batch se ejecutan de forma invisible por lo que todo el proceso es imperceptible.
El script tiene que estar en este caso en el mismo directorio que el batch, pero puedes crear un acceso directo y tenerlo por ejemplo en el escritorio.
En este caso el script ejecutará el copiador FLASHCopy.cmd por lo que al insertar cualquier memoria o disco duro USB en tu PC te permitirá con solo dos clics copiar su contenido de forma inadvertida.
Puedes descargar en el link más abajo un archivo que contiene FLASHCopy.cmd y el script, recuerda de tenerlos siempre en el mismo directorio.

Descarga en el siguiente vínculo el archivo que contienen los batch que se mencionan anteriormente, descomprímelos para poder usarlos. Estan incluidas las versiones para usarlo en Windows XP, Vista y 7

Batch para copiar datos de dispositivos flash usb de forma ocultaArchivo batch para copiar datos de dispositivos flash usb de forma oculta



Copiar datos de forma automática de la PC a la memoria flash
Es posible también hacer lo inverso, tener los archivos necesarios en la memoria flash para que al insertarla en una PC, de forma automática se copien al dispositivo los archivos que hayas especificado de antemano en el archivo batch, esto se logra creando un archivo autorun.inf que indica a Windows iniciar el script y este a su vez ejecuta el batch que realiza la copia, todo esto funciona de forma automática e imperceptible para el usuario.
El código del archivo batch puede ser como el siguiente, que hace la copia de la carpeta Mis Documentos a la carpeta DATOS en la memoria, solo cambia la ruta por la de tu conveniencia, cópialo al Bloc de notas y guárdalo como Rcopy.cmd:
robocopy.exe /MIR "%userprofile%\Documents" %1\DATOS"
Si usas Windows XP y no has instalado robocopy.exe en tu sistema, entonces tendrás que utilizar en tu archivo batch el comando XCOPY como en el ejemplo siguiente:
XCOPY "%userprofile%\Documents" %1\DATOS" /E /F /I /C /Y
Para hacer el archivo autorun.inf copia el siguiente código al Bloc de notas y guárdalo comoautorun.inf:
[Autorun]
Open= start.vbsIcon=icons\drive.icoLabel=Test
UseAutoPlay=1
action=Abrir USB
El otro archivo a crear seria el script con el siguiente código, cópialo al Bloc de notas y guárdalo como start.vbs:
set objshell = createobject("wscript.shell")
objshell.run "bin\Rcopy.cmd",vbhide
Lo siguiente es copiar start.vbs y autorun.inf a la raíz de la memoria y el batch Rcopy.cmd al interior de una carpeta nombrada bin. Listo, cuando insertes la memoria en otra PC copiará la carpeta en este caso Mis Documentos a la carpeta DATOS de tu memoria flash.

Como cancelar el proceso de cualquier copia en curso

Recuerda que en el proceso de copia no se mostrará ninguna ventana, por lo que si tienes que cancelar la copia solo podrás hacerlo mediante el Administrador de tareas.
También tienes la alternativa de utilizar un batch para cancelar el proceso, para eso créalo con el siguiente código:
@echo off

taskkill /f /IM robocopy.exe
taskkill /f /IM cmd.exe
Para Windows XP seria de la siguiente forma:
@echo off

taskkill /f /IM xcopy.exe
taskkill /f /IM cmd.exe
Descarga en el siguiente vínculo el archivo que contienen los archivos batch que se mencionan anteriormente, descomprímelos para poder usarlos. Estan incluidas las versiones para usarlo en Windows XP, Vista y 7

Batch para copiar datos de forma automática de la PC a la memoria flashBatch para copiar datos de forma automática de la PC a la memoria flash

La reproducción automática en Windows

➔ Los archivos batch anteriores solo funcionan si el equipo donde se introduce la memoria flash usa Windows XP.
➔ Si se tiene instalado Windows Vista, es necesario oprimir la tecla Enter, ya que será la primera opción que aparezca en el cuadro de Autoplay.
➔ En el caso de Windows 7 no funcionarán de ninguna manera ya que este sistema operativo tiene deshabilitada por completo la reproducción automática en medios extraíbles, solo es posible hacerlos funcionar, ejecutando el archivo que inicia la acción manualmente, en este caso el script "start.vbs".

Copiar datos de forma automática y oculta de una memoria USB a la PC o Notebook

En el artículo Hacer backup o respaldo de datos en una memoria flash de forma automática, se explica que en Vista y aún más en Windows 7 esta deshabilitada la reproducción automática en unidades extraíbles, por lo que es imposible utilizar el archivo autorun.inf para planificar la ejecución de ninguna tarea mediante un batch ni cualquier otro archivo.
En algunos casos es viable mediante la línea de comandos programar una tarea que cada cierto tiempo ejecute el script que se vio en el primer caso, que verifica si hay algún dispositivo conectado en la PC y si es así copia su contenido a una carpeta nuestra de forma silenciosa e invisible.
Para eso podemos utilizar el comando SCHTASKS.

Utilizar el comando SCHTASKS para programar tareas


El comando SCHTASKS es creado para programar tareas en el equipo, con opciones más avanzadas de lo que permite el anterior comando AT, que todavía es posible de utilizar, pero solo en tareas sencillas.
SCHTASKS lista, crea, elimina o permite editar tareas programadas en el equipo.
Al usarlo sin parámetros muestra todas las tareas programadas en la PC, algunas que ni tenemos idea ya que las ordenan aplicaciones o el propio sistema sin enterarnos.
Usándolo con la opción /CREATE podemos planificar una acción, que es lo que se ordena en el siguiente archivo batch, ejecutar el script start.vbs cada 3 minutos.

Usos prácticos del comando SCHTASKS


El siguiente batch hubo necesidad de crearlo y probarlo en solo cinco minutos, en una emergencia real de un caso de una persona allegada que esperaba a alguien (conocedor de informática y difícil de distraer), que venía a hacer una labor en su PC y tenía en su memoria flash un documento que le era muy necesario, pero que no iba a poder estar cerca ni en los alrededores de dicha PC.
En este caso se utiliza el siguiente batch llamado run.cmd
@echo off
SCHTASKS /create /SC MINUTE /MO 3 /tn copiar /TR C:\Hide\start.vbs 
El archivo batch run.cmd ejecuta el comando SCHTASKS que crea una tarea programada para ejecutarse cada 3 minutos.
Dicha tarea es ejecutar el script start.vbs, el cual a su vez ejecuta de forma oculta el batch FLASHCopy.cmd que verifica si existe algún dispositivo extraíble conectado y si es así copia todo su contenido de manera imperceptible a la carpeta D:\COPIA.
Las opciones usadas en este caso con SCHTASKS son las siguientes:
/SC MINUTE = Frecuencia de la programación
/MO Número de minutos
/tn = Nombre de la tarea
/TR = Ruta de acceso y el nombre de archivo del programa que se va a ejecutar
Si te interesa descarga un paquete con todos los archivos en el link más abajo.
Para usarlo copia la carpeta Hide a la unidad C. 
Utilízalo con precaución, se adjunta un batch llamado detener_tarea para detener y eliminar la tarea creada, si no es así el script se mantendrá ejecutándose aunque reinicies el sistema y poco a poco te llenará el disco duro de datos que capture en las memorias o cualquier dispositivo USB insertado.
Puedes usar los siguientes comandos en la consola de CMD para verificar manualmente si la tarea se está ejecutando, para detenerla y eliminarla en ese mismo orden.

SCHTASKS /query /tn copiar
SCHTASKS /tn copiar /End
SCHTASKS /tn copiar /delete


Batch para copiar datos de forma automática y oculta de una memoria flash USB a la PC o notebookArchivo batch para copiar datos de forma automática y oculta de una memoria flash USB a la PC o Notebook

Lee más información sobre el empleo de los scripts escritos en lenguaje VBScript en Windows en tareas y usos prácticos. Copia el código y crea tus propias aplicaciones: Códigos para crear aplicaciones en VBScript para usar en Windows

No hay comentarios:

Publicar un comentario