Date post: | 23-Jun-2015 |
Category: |
Software |
Upload: | comandpromt |
View: | 165 times |
Download: | 0 times |
Bueno gente la idea de este manual es que alguien que sepa al menos como prender la computadora sea capaz de crear un pequeño programita constructivo… y al terminar que ese programita se transforme en destructivo… Pero empecemos por el principio… mmm… mejor no, hay un montón de manuales (o la misma Internet) que explica las nociones de la programación en batch, de que se trata y un montón de cosas aburridas, solo basta mencionar que trabajar con batch es trabajar con una shell de sistema, para conocer a este bichito tan raro solo hace falta ir a
Inicioà Ejecutar à cmd (apretar enter) // Alternativa: Tecla Windos + R
Nos va a abrir la típica ventanita negra, esa ventanita es la shell (se cierra escribiendo “exit” y apretando enter), desde allí podemos hacer lo que queramos como si estuviéramos en el mismísimo windows, claro que
no con unas ventanas tan lindas (ni sus lindos iconos) pero la realidad es que la shell es muy útil, completa y la forma de “navegar” es mas eficiente… una vez que uno sabe como funciona.
1 www.hackxcrack.es1 www.hackxcrack.es
Bueno no perdamos mas tiempo, ya tenemos una noción básica de lo que es la línea de comandos, ahora hace falta explicar que es un batch: Un batch, o bat, es una serie de instrucciones que nosotros le vamos a dar a la computadora que ésta va a realizar con mucho gusto. Como la ejecución es rápida no vamos a tardar en darnos cuenta si nos equivocamos así que pasaremos a aprender a programar cosillas nefastas
¿Cómo creamos un batch? La respuesta es muy sencilla, creamos un documento de texto plano… ¿que como lo hacemos? (digamos que estamos en el escritorio) Botón derechoà Nuevoà Documento de texto
Como verán el documento de texto es una hoja en blanco donde ni siquiera se le puede dar formato (formato = forma) mas que a la fuente (fuente = letra), no es como el Word con todos esos botones y colores.
2 www.hackxcrack.es2 www.hackxcrack.es
Una vez que creamos el “documento de texto” con una rutina adentro (tranquilo, ya vamos a llegar a la rutina) cambiamos la extensión del archivo a .bat… ¿Cómo cambiar la extensión del archivo? Muy fácil, si el documento de texto se llama “nuevo documento de texto.txt”, apretamos sobre él… Botón derechoà propiedadesà … …donde dice “nuevo documento de texto.txt” lo cambiamos por “nuevo documento de texto.bat”, el truco es cambiar el archivo “xxxxx.txt” a “xxxxx.bat”, cuando lo hagas una ventanita te va a preguntar si estas seguro, como seguro no hay nada en la vida clickea “si”, vas a ver como cambia el icono de una hoja a una ventanita
à Nota Importante: Si el Windows no esta configurado “apt” (a prueba de tontos) deberías ver la extensión sin problemas, pero en general Windows viene predeterminado para ser “apt”, para solucionarlo van a… Inicioà panel de controlà opciones de carpetas Hacemos clic en la solapa “ver” y destildamos “ocultar las extensiones de archivo para tipos de archivos conocidos”, clickeamos aplicar y después aceptar, a partir de ahora vamos a ver todas las extensiones de los archivos… Excel à.xls Word à.doc Músicaà .wma, .mp3 Videosà .avi, .mpeg Batchà .bat (este nos interesa)
3 www.hackxcrack.es3 www.hackxcrack.es
Texto planoà .txt (también este) Entre muchas otras extensiones
Rutinas Al fin llegamos a lo mas divertido… y también a lo mas largo y complicado, la rutina es aquello que yo deseo que haga el programa, hay que tener algo muy en claro… batch (o bat) son secuenciales, esto significa que hacen la rutina 1, después la 2, la tres y así sucesivamente… en criollo… digamos que mi rutina diaria es…
1. Despertarme 2. Desayunar 3. Trabajar 4. Entrar en hackxcrack 5. Almorzar 6. Estudiar 7. Cenar 8. Irme a dormir hasta despertarme
La computadora entiende una orden debajo de la otra por eso hay que tener cuidado de el orden en el cual escribo, digamos que yo pusiera…
1. Despertarme 2. Desayunar Trabajar 3. Entrar en hackxcrack 4. Irme a dormir hasta despertarme 5. Almorzar 6. Estudiar 7. Cenar
En este caso cuando llegue a la orden “irme a dormir hasta despertarme” me saltearía almorzar, estudiar y cenar, ya que estoy durmiendo y no puedo hacer las órdenes restantes… ¿se entiende?
Muchas veces vamos a tener pequeños errores que solo se van a deber a que la rutina es incorrecta o no se encamina por donde nosotros queremos, en estos casos mi recomendación (después amplio un truco) es que se preparen una taza de café y se alisten a pasar varios minutos observando porque demonios no quiere funcionar.
4 www.hackxcrack.es4 www.hackxcrack.es
@echo off Se que se ve raro pero es la línea principal de cualquier programa en batch, ¿Qué es lo que hace? El “echo off” oculta los procesos que se llevan a cabo en el .bat y que nosotros no tenemos intención que se vean, y el @ se encarga de ocultar esa primera orden, el “echo off”, como ya dijimos antes, trabajar con el .bat es como trabajar en una shell (¿se
acuerdan? La ventanita negra), en realidad el .bat corre en la shell, por eso una vez que sepamos como funciona el .bat nos va a ser mas fácil entender también la shell, cuando sientan que a este tutorial ya lo saben y no poseen dudas quiten el “echo off” y van a ver la maquina detrás de la ilusión, por ahora es mejor ver solo al hombre volando
echo Es la palabra que hay que poner antes de una frase para que esta aparezca en la shell (no se preocupen en un par de líneas van a comprender mejor) pause Detiene al programa con el mensaje “presione una tecla para continuar…”, no tiene mucha ciencia, detiene la rutina hasta que apretemos una tecla cualquiera, es muy importante dada la velocidad de este tipo de procesos, de lo contrario se iniciaría, ejecutaría y acabaría sin que nosotros nos diéramos cuenta Ahora si, con estos tres primeros comandos vamos a crear nuestro primer programa en batch… ¡mua ja ja! Abrimos un documento de texto que vamos a llamar “hola”, va a quedar “hola.txt”, lo abrimos y adentro escribimos @echo off Echo Mi primer práctico en hackxcrack Pause
Lo guardamos y convertimos en batch cambiando la extensión de .txt a .bat, es decir que con el cambio va a pasar a llamarse hola.bat, cuando el icono de la libretita se convierte en ventanita hacemos doble click sobre el… Vamos a ver una ventana negra que dice Mi primer practico en hackxcrack presione una tecla para continuar…
5 www.hackxcrack.es5 www.hackxcrack.es
Cuando apretamos cualquier tecla el programa se cierra, si sucede esto significa que… ¡tu primer programa ha sido todo un éxito! Bien, de ahora en mas voy a obviar la transformación de .txt a .bat, yo les voy a dar la receta para completar el .txt y el resultado que van a obtener cuando ejecuten el .bat, ya se esta
haciendo tarde y no queremos que te canses con repeticiones que en el peor de los casos podes chequear volviendo unas paginas para atrás El comando echo tiene varias funciones muy importantes, ya conocemos dos pero hay una tercera que nos va a servir de mucho
echo. Exacto, con solo un punto al final, la función de este “echo.” es crear un espacio entre líneas, es decir, ngresamos en el .txt lo siguiente… @echo off Echo. Echo Un espacio Echo. Echo Otro espacio Echo. Pause
Cuando ejecutemos el .bat (ejecutar = doble click sobre la ventanita con extensión .bat) vamos a ver en la shell Un espacio Otro espacio presione una tecla para continuar… Si lo ves significa que tu segundo batch esta echo, y además aprendiste a usar el “echo.” pause>nul Es igual que “pause” sin embargo este no escribe “presione una tecla para continuar…” aunque si queda a la espera de que presiones una tecla cualquiera, probémoslo… Ingresamos en el txt. lo siguiente… @echo off Echo Esto ya resulta fácil Pause>nul
6 www.hackxcrack.es6 www.hackxcrack.es
Cuando ejecutemos el .bat vamos a ver… Esto ya resulta fácil ¿Entienden? No esta ese mensaje de “presione una tecla para continuar…” y sin embargo espera a que presionemos una tecla cualquiera Ahora comencemos, digamos que queremos hacer un programa para ofender a alguien… (el soft malicioso no tiene porque ser dañino, ja ja ja)… mas o menos va a verse así Queres saber que pienso de vos? presione una tecla para continuar… Acá el usuario va a tener que presionar una tecla Te odio… Sabes que mas?, apreta una tecla El usuario tiene que apretar una tecla Te detesto… pero pensándolo bien… Quizás… Quizás… Apreta la “s” para saberlo El usuario tiene que apretar una tecla (es indiferente que tecla sea) Me prestas $5? La “p” es para putearme… El usuario tiene que apretar una tecla (es indiferente que tecla sea) y termina. La solución está a continuación… pero intentalo, no es tan difícil… @echo off Echo. Echo Queres saber que pienso de vos? Pause Echo. Echo Te odio… Echo Sabes que mas?, apreta una tecla Echo. Pause>nul Echo Te detesto… pero pensándolo bien… Echo. Echo Quizás…
7 www.hackxcrack.es7 www.hackxcrack.es
Echo. Echo Quizás… Echo. Echo Apreta la “s” para saberlo Pause>nul Echo. Echo Me prestas $5? Echo. Echo La “p” es para putearme… Pause>nul
Cls Sirve para limpiar la pantalla, en el caso anterior, las líneas se agregaban, con este comando las líneas visualizadas hasta el momento desaparecen… probémoslo @echo off Echo Primera línea Echo. Pause Cls Echo Segunda línea Echo. Pause
Como van a comprobar primero aparece… Primer línea presione una tecla para continuar… Cuando nosotros presionemos una tecla nos va a borrar todo lo escrito y continua con el programa Segunda línea presione una tecla para continuar… Title Poniendo en nuestro código la palabra title seguido por un texto lo que vamos a lograr es que cambie el nombre de la ventanita, en su defecto aparece la ruta donde se desarrolla el batch (concepto que después ampliaremos)
9 www.hackxcrack.es8 www.hackxcrack.es
9 www.hackxcrack.es
Color Esta función cambia el color de las letras y del fondo, la elección es hexadecimal (es decir 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f) y va de a pares… Ejemplo: titulo de la ventana “hackxcrack” con color al mejor estilo Windows registro de error fatal (letras blancas, fondo azul) @echo off Title hackxcrack Color 1f Echo Error fatal Echo. Echo Por favor reinicie su pc Pause>nul
Msg * El comando “msg *” es para dejar un mensaje desde el mostrador, una ventanita la cual nos da las únicas opciones de aceptar o cerrar @echo off Msg * Unite a hackxcrack… unite al conocimiento
Al ejecutarlo nos va a aparecer una ventanita con la misma leyenda, ya que no necesitamos que el programa se detenga no hace falta ingresar un “pause”
Start Ahora empezamos con uno de los comandos mas importantes, start nos va a servir (por el momento) para abrir paginas de Internet, ejecutar programas y abrir archivos… Digamos que queremos abrir una pagina de Internet, mas precisamente hackxcrack, la orden en el .txt seria @echo off Start www.hackxcrack.es
10 www.hackxcrack.es10 www.hackxcrack.es
Una vez mas aclaro que como no me interesa ver la shell (el cuadradito negro que aprendimos a cambiar de color) así que no pongo el pause… Ahora un .txt que habrá mi navegador de Internet @echo off Start firefox.exe
o “iexplorer.exe” dependiendo de cual tengan ¿Se dan cuenta? Con una simple orden podemos ejecutar un programa sin siquiera saber en que lugar de la computadora esta… para conocer el comando de cada software hay varias recetas, a mi criterio la mas simple es hacer correr el programa después… Alt+Ctrl+Suprà Procesos
Ahí vamos a ver todo los procesos con su sintaxis para ejecutarlos con el comando start, es solo cuestión de localizar cual es Otros ejemplos: Pdfà acrord32.exe ,Calculadoraà calc.exe, Nod32à nod32krn.exe, etc
11 www.hackxcrack.es11 www.hackxcrack.es
Set Este individuo es quien realiza las funciones de un programa en batch y quien además permite que el usuario interactué con el… sin embargo nunca viene solo, siempre lo acompañan sus dos amigos “/a” y “/p”, todo esto es algo mas abstracto, sin embargo ya a estas alturas no nos vamos a detener con una simple montañita “Set” significa que a una variable le voy a entregar determinado valor “Set/p” significa que le voy a pedir al usuario que ingrese el valor de una variable “Set/a” significa que voy a hacer cálculos con variables ¿Qué es una variable?, es una concatenación de letras y/o dígitos al cual le asigno un valor… en criollo, letras juntas que representan algo (¿verdad que sonaba mas complicado?), las variables en batch no deben estar definidas al comenzar el programa (algunos programas si lo requieren), se puede agregar una variable donde lo desee siempre y cuando sea anterior al momento de utilizarla Digamos que queremos que la variable “letras” valga 6 @echo off Set letras=6
Ahora le vamos no solo a pedir darle un valor a una variable, sino que además vamos a pedirle que nos muestre el valor de la misma @echo off Set letras=6 Echo %letras% Pause>nul
Algo curioso que tener en cuenta, es necesario para llamar a la variable encerrar su nombre entre %, de lo contrario en este caso nos mostraría la palabra “letras” En la pantalla solo vamos a ver 6 Cuando apretemos una tecla se cierra Set/p Ahora vamos a interactuar con el usuario pidiendole a el que ingrese el valor de una variable, ¿Cómo lo hacemos?, de la siguiente forma, pero hay que tener en cuenta el formato en que escribimos el set Set/p vil=Que nombre es el tuyo?= Separemoslo para comprenderlo de la mejor manera…
12 www.hackxcrack.es12 www.hackxcrack.es
“Set/p” nos indica que la variable va a pedirle al usuario su valor “vil” elegido al azar por mi es la variable la cual guardara el dato ingresado “=” significa el final del nombre de la variable y el comienzo de el texto que va a aparecer en pantalla “Que nombre es el tuyo?=” es la pregunta o texto que va a leer el usuario antes de ingresar el dato que pasara a tomar la variable, el = final es solo para la percepción del usuario, queda mas estético pero no tiene utilidad el agregarlo o no El .txt seria de esta forma: @echo off Set/p vil=Que nombre es el tuyo?= Echo. Echo Tu nombre es %vil%, la verdad no es nada lindo Pause
Cuando lo convirtamos en .bat vamos a ver… Que nombre es el tuyo?= Y en vez de continuar (como hasta ahora lo hacían todos los comandos), va a detenerse hasta que introduzcamos un dato… el set/p como pueden ver ahora hace las veces de pause también Al ingresar un texto (por ejemplo “Alan”) y apretar enter vamos a ver… Que nombre es el tuyo?= Tu nombre es Alan, la verdad no es nada lindo presione una tecla para continuar… De la misma forma podemos pedirle al usuario que ingrese valores para distintas variables, el nombre de estas se lo damos nosotros a nuestro antojo, pero siempre es mejor un nombre que se relacione para minimizar errores Set/a Este nuevo amigo nuestro se encarga de la aritmética (cuentas) cuando yo quiero sumar, restar, multiplicar o dividir… Nota importante: batch no trabaja con decimales por lo cual al intentar ingresar un valor con decimales va a decirnos “Falta el operador.” por no mandarnos a freír churros, a su vez cuando el resultado de con decimales solo se limita a redondear el numero y darnos un entero
13 www.hackxcrack.es13 www.hackxcrack.es
La forma de utilizarlo es la siguiente, digamos que queremos sumar dos números y mostrarlo por pantalla El .txt seria… @echo off Set/a suma=5+3 Echo %suma% Echo. Pause
Esto nos va a devolver por pantalla al ejecutar el batch 8 presione una tecla para continuar… Pero esto no es todo y lo gracioso es que nosotros le podemos pedir al usuario de nuestro batch (combinando el “set/p” y el “set/a”) que inserte los datos a sumar, multiplicar, restar o dividir… hagamos todo juntos así los confundo un poco… .txt @echo off Set/p ero=Ingrese el primer numero= Cls Set/p ndo=Ingrese el segundo numero= Cls Set/a suma=%ero%+%ndo% Set/a rest=%ero%-‐%ndo% Set/a mult=%ero%*%ndo% Set/a divi=%ero%/%ndo% Echo los números ingresados son %ero% y %ndo% Echo. Echo La suma entre ambos da %suma% Echo. Echo La resta del primero por el segundo da %rest% Echo. Echo La multiplicación da %mult% Echo. Echo La división del primero por el segunda da %divi% Echo. Pause
Lo que veríamos en la shell seria Ingrese el primer numero=
14 www.hackxcrack.es14 www.hackxcrack.es
Nosotros al ingresar el primer numero y dar enter (supongamos que ingreso el 60) va a borrar la primera frase (gracias al cls) y nos va a aparecer en pantalla Ingrese el segundo numero= El usuario va a elegir un segundo numero (en este caso 10) y al apretar enter el otro cls nos va a borrar la segunda frase y vamos a ver… Los números ingresados son 60 y 10 La suma entre ambos da 70 La resta del primero por el segundo da 50 La multiplicación da 600 La división del primero por el segundo da 6 presione una tecla para continuar… If Mucha gente se pregunta que hubiera pasado si…, este “if” significa un si condicional en ingles, una elección a través de diversos parámetros, esto esta sonando muy complicado… el if sirve para elegir un camino en caso de que ocurra algo… así quedo bonito El “if” funciona con su pandilla LSS (menor / < ) GTR (mayor / > ) LEQ (menor o igual <= ) GEQ (mayor o igual >= ) EQU o == (igual / = ) NEQ (distinto / != ) *En la segunda parte de cada paréntesis están los operadores usados en la mayoría de lenguajes un poco más avanzados, así ya os van sonando. ¿Cómo funciona? Nosotros le vamos a preguntar si un valor es igual, menor, mayor, etc, y este nos va a responder en dos forma, que el valor cumpla con el requisito (correcto) o que no lo haga (incorrecto) “If (variable, nombre o numero)(condición… ==, >,<)(variable, nombre o numero) (accion “dirección, valor, etc”) else accion (dirección, valor, etc)”
15 www.hackxcrack.es15 www.hackxcrack.es
Ufff!!!, se ve complicado pero con un ejemplo, algo sencillo (aclaro que el valor “correcto” e “incorrecto” pueden llevar el nombre que quieran) @echo off If 1==1 (echo correcto) else echo incorrecto Pause>nul
¿se entiende la sintaxis?, este ejemplo siempre nos va a mostrar correcto ya que siempre 1 va a ser = a 1, si plantearamos el caso de que 2 sea igual a 1 nos va a mostrar incorrecto Pero no solo podemos darle un valor fijo, podemos pedirle al usuario que inserte uno e inclusive ambos valores… ¿Cómo? Con el set/p Nota Importante: a medida que vamos avanzando no solo vamos a aprender nuevos comandos sino que también vamos incitar a que interactúen entre ellos, el siguiente es un buen ejemplo Vamos a realizar un pequeño juego en el cual nuestro usuario va a tener que adivinar en que numero estamos pensando @echo off Echo Adivina en que numero estoy pensando Set/p num=Es mayor que 0 y menor que 10…= Echo. If %num%==6 (echo Genio… como lo sabias?) else echo No… no adivinaste Echo. Pause
En la pantalla vamos a ver Adivina en que numero estoy pensando Es mayor que 0 y menor que 10…= En caso de escribir 6 nos va a aparecer la leyenda Sos Genio… como lo sabias? presione una tecla para continuar… En caso de que el numero sea otro vamos a leer… No… no adivinaste presione una tecla para continuar… ¡Pufff! Cuantas cosas vamos aprendiendo, quiero dejar en claro desde ahora y antes de entrar en terreno mas turbulento que el limite te lo vas a poner vos y tu
16 www.hackxcrack.es16 www.hackxcrack.es
imaginación, muchas cosas se te van a ocurrir así como a mi mientras busco el ejemplo mas sencillo para dejar en claro cada punto… Continuemos Goto Ahora comienzan los comandos, por así llamarlos, mas peligrosos, en realidad aquellos que nos permiten hacer alguna que otra cosilla perversa, el goto es una de ellas por una sencilla razón y es que… “goto” seria la traducción literal de “ir a”, lo que hace este comando es enviarnos a una parte determinada del código que estamos creando, la peculiaridad del comando es que nos va a enviar al lugar donde le demos la orden, solo que con dos puntitos antes Goto aca à :aca ¿difícil?... hagamos un programita sencillo @echo off Echo Comenzamos Goto segu :terc Echo Tercera línea Goto Cuar :segu Echo Segunda línea Goto terc :cuar Echo Cuarta línea Pause
17 www.hackxcrack.es
Cuando lo pasemos a batch vamos a ver en la shell Comenzamos Segunda línea Tercera línea Cuarta línea presione una tecla para continuar… A que ahora parece una tontería la explicación que voy a dar Goto segu à :segu Goto terc à :terc Goto cuar à :cuar
17 www.hackxcrack.es
así de simple, hay que tener bien en cuenta el orden y el no abusar (por nuestra propia salud) de este comando, pero además ahora vamos a tener que ingresar un comando de cierre, como ya hemos visto el batch sigue la rutina de arriba hacia abajo, a menos que el “goto” nos envíe a una nueva dirección, sin embargo a veces es necesario que se termine en cierto punto el programa, para esto (y es una sana costumbre usarlo siempre) existe el “exit”
17 www.hackxcrack.es
Exit Hasta ahora no lo hemos usado, sin embargo como dice una canción “todo tiene un final, todo termina”, voy demostrarles un ejemplo con el “exit” y sin el “exit” para que de un simple vistazo comprendan la diferencia, pero vamos a necesitar combinarlo con un “if” @echo off If 1==1 (goto op1) else goto op2 :op1 Echo Es cierto Pause :op2 Echo Es falso Pause
Que va a pasar en esta situación, sabemos que siempre 1 va a ser = a 1 por lo que vamos a salir en dirección al goto “op1” y vamos a ver Es cierto presione una tecla para continuar… Pero al apretar una tecla cualquiera el batch esta programado para seguir con la siguiente orden, sin el “exit” continuaría y veríamos Es cierto presione una tecla para continuar… Es falso presione una tecla para continuar… ¿Entienden? Una vez terminado el pause leería lo que sigue, como “:op2” es el receptor de un “goto” lo ignora y continua con las demás líneas La forma adecuada seria @echo off If 1==1 (goto op1) else goto op2 :op1 Echo Es cierto Pause Exit :op2 Echo Es falso Pause Exit
De esta forma al ir por la rama del “op1” y llegar al “exit” el programa al leer esa línea se cerraría sin mas, comprobemoslo
1 www.hackxcrack.es
Es cierto presione una tecla para continuar… Al apretar cualquier tecla el programa se cierra y no continua Ahora vamos a crear una clave de seguridad que nos pregunte un código @echo off :volv set/p código=Cual es el código?= if %codigo%==1234 (goto seguir) else goto no :no echo. echo El código es incorrecto echo Por favor inténtelo de nuevo pause cls goto volv :seguir echo. echo El código es correcto pause exit
En esta ocasión vamos a ver en la shell Cual es el código?= Si tecleamos 1234 y apretamos enter nos va a enviar por el lado de seguir y nos va a mostrar lo siguiente Cual es el código?=1234 El código es correcto presione una tecla para continuar… En caso de que tecleemos cualquier otra combinación al apretar enter vamos a ver Cual es el código?=4826 El código es incorrecto Por favor inténtelo de nuevo presione una tecla para continuar… El cls nos va a limpiar la pantalla y vamos a volver a la pregunta… Cual es el código?=
2 www.hackxcrack.es
A este lindo ejemplo de un código de seguridad además podemos sumarle un contador que en el caso de que lo intente tres veces sin éxito se cierre el programa @echo off Set/a conta=0 :volv Set/p código=Cual es el código?= If %codigo%==1234 (goto seguir) else goto no :no Set/a conta=%conta%+1 If %conta%==3 (exit) else goto oportu :oportu Echo. Echo El código es incorrecto Echo Por favor inténtelo de nuevo Pause Cls Goto volv :seguir Echo. Echo El código es correcto Pause Exit
Destaco que el “set/a conta=0” no es necesario ya que cuando reiniciamos el programa los valores también son reiniciados, sin embargo el presentar y resetear variables es utilizado en varios idiomas de programación por lo cual es otra buena costumbre que debemos adquirir El programa se va a ver exactamente igual, sin embargo ahora lleva adentro un pedacito de código extra que actúa como contador, mas precisamente Set/a conta=%conta%+1 If %conta%==3 (exit) else goto oportu
Cada vez que pase por ahí va a sumar 1, cuando llegue a 3 (es decir tres intentos fallados) el batch se va a ir por la rama del correcto y va a seguir la orden “exit” (cerrar) … Digamos que quiero hacer un “if” con varias opciones, en este caso y como una linda forma de dar a conocer el staff vamos a crear un batch que nos muestre el perfil de cada moderador por elección:
3 www.hackxcrack.es
@echo off :volv Echo 1. $0M8RA Echo 2. ++C0de Echo 3. 4n0nym0us Echo 4. CAM10N Echo 5. Cellu5 Echo 6. Filo y Navaja Echo 7. hacker fashion Echo 8. hecky Echo 9. juh Echo 10. Kr34t0r Echo 11. Larry Echo 12. moften Echo 13. mrobles Echo 14. netux Echo 15. Protodev Echo 16. Ryuu Echo 17. Stiuvert Echo 18. VaNcHoXcHk Echo. Echo. Set/p destino=Ingresa el numero del moderador del cual queres ver su perfil= If %destino%==1 (start http://www.hackxcrack.es/members/-‐0m8r4.html & goto fin) If %destino%==2 (start http://www.hackxcrack.es/members/-‐c0de.html &goto fin) If %destino%==3 (start http://www.hackxcrack.es/members/4n0nym0us.html & goto fin) If %destino%==4 (start http://www.hackxcrack.es/members/cam10n.html & goto fin) If %destino%==5 (start http://www.hackxcrack.es/members/cellu5.html & goto fin) If %destino%==6 (start http://www.hackxcrack.es/members/filo-‐y-‐navaja.html & goto fin) If %destino%==7 (start http://www.hackxcrack.es/members/hacker-‐fashion.html & goto fin) If %destino%==8 (start http://www.hackxcrack.es/members/hecky.html & goto fin) If %destino%==9 (start http://www.hackxcrack.es/members/juh.html & goto fin) If %destino%==10 (start http://www.hackxcrack.es/members/kr34t0r.html & goto fin) If %destino%==11 (start http://www.hackxcrack.es/members/larry.html & goto fin) If %destino%==12 (start http://www.hackxcrack.es/members/moften.html & goto fin) If %destino%==13 (start http://www.hackxcrack.es/members/mrobles.html & goto fin) If %destino%==14 (start http://www.hackxcrack.es/members/netux.html & goto fin) If %destino%==15 (start http://www.hackxcrack.es/members/protodev.html & goto fin) If %destino%==16 (start http://www.hackxcrack.es/members/ryuu.html & goto fin) If %destino%==17 (start http://www.hackxcrack.es/members/stiuvert.html & goto fin) If %destino%==18 (start http://www.hackxcrack.es/members/vanchoxchk.html & goto fin)
Como siempre va a haber alguien chistoso que marque un numero que no se encuentre entre las opciones agregamos… :error Echo El valor que usted ingresa es incorrecto, no sea payaso e indique un valor verdadero Pause Cls Goto volv :fin Exit
:error
4 www.hackxcrack.es
Sirve para cuando definimos como en el anterior caso varias “if” positiva, en caso de que el usuario en vez de utilizar los valores a los cuales le asignamos una orden utiliza un valor fuera de los if el “:error” lo recoge y de ahí sigue como si fuera un receptor del “goto” Have a break, have a kit kat ( Descanso ) Ya hemos aprendido tanto que me da flojera releer todo el manual, sin embargo llega un momento en el que hay que explicar algunos conceptos que en su momento no se explicaron por una sencilla razón, no estaban preparados para comprender (no se me ofendan, mientras escribo este manual yo también estoy aprendiendo muchas cosas que ignoraba) Hagamos un recuento de algunas cosas que en su momento no les explique… Esto realmente va a ser mas complicado Como ya dijimos trabajar en batch es igual a hacerlo en una shell, por lo cual hay que tener en cuenta varias cosas acerca de la segunda para ampliar conceptos de la primera, es decir que entre mas conozcamos una mas cosas vamos a poder hacer con la otra Por ejemplo si abrimos una shell Inicioà ejecutarà cmd (apretar enter)
La famosa pantallita negra, una vez adentro nos va a decir que sistema operativo es y la ubicación en donde nos encontramos… Ahora si llego lo difícil, digamos que nosotros queremos crear un archivo en la shell, ese archivo (a menos que le dijera algo diferente) se crearía en esa dirección, C:\Documents and settings\Administrador>
5 www.hackxcrack.es
Es la que viene por defecto, y la mayoría, por no decir todos, arrancan desde ahí, visto desde Windows esto nos diría que el archivo que vamos a crear esta en el disco “C”, en la carpeta “Documents and settings”, dentro de la carpeta “Administrador” Nota importante: Si por alguna razón no podes ver las carpetas significa que Windows esta configurado “apt” (a prueba de tontos), lo solucionamos yendo a Inicioà panel de controlà opciones de carpetas Hacemos clic en la solapa “ver” y destildamos todas las opciones de ocultar y tildamos todas las de mostrar, clickeamos aplicar y después aceptar, a partir de ahora vamos a ver todas las carpetas y mucho mas… Siempre dentro de la shell (ventanita negra que se puede cambiar con la orden “color 1f” entre otras, se dan cuenta, igual que en el .txt del batch) vamos a escribir Help Y apretamos enter, cuando lo hagamos nos va a salir una inmensa lista de comandos que trabajan en la shell, todos pueden ser utilizados en batch (se que mas de uno se esta refregando las manos), sin embargo seria muy largo explicar todos así que solo voy a enseñarles a utilizar los que a mi (con toda humildad) me parecen los mas necesarios, como detalle les comento que cualquier comando anteponiendo la palabra help nos da el detalle y las posibilidades que nos ofrece, suena cada vez peor pero hagamoslo con nuestro tan conocido “echo”, escribamos Help echo Y démosle enter, nos dice
6 www.hackxcrack.es
“Muestra mensajes o activa y desactiva el eco del comando ECHO [ON / OFF] ECHO [mensaje] Escriba ECHO sin parámetros para mostrar la configuración actual del eco”
Se dan cuenta, nos explica brevemente el comando, para que sirve y como utilizarlo… un momento… no dice nada del “echo.”, ese Bill siempre se olvida de algo, los detalles, el “echo.”, la estabilidad… Volviendo al tema, nosotros de todo este grupo de comandos solo vamos a ver unos pocos, dejo a la segunda parte del manual y a su autor la decisión de ir agregando mas (no le vayan a decir que no aprendieron nada conmigo) CD
7 www.hackxcrack.es
“cd” sirve para dirigirme a un determinado lugar, digamos que quiero estar en “escritorio”(todo esto es mental, no quiero que comiencen a aceptar el suicidio masivo como opción), lo que tendríamos que escribir seria Cd “c:\documents and settings\administrador\escritorio” … -‐Vos, el morocho que esta levantando la mano desde hace unos 10 minutos -‐¿y porque? -‐¿Me estas agarrando para la joda?¿y porque que? -‐¿Por qué las comillas? -‐Ahhh, el tema de las comillas, muy buena pregunta, si me dejas continuar te explico-‐ -‐Esta bien, pero mas vale que sea una buena explicación-‐ … La shell esta creada en ms-‐dos, como no entra tanto en estas pocas hojas aclaro que en tal idioma hay dos reglas que nunca aplicamos, nombres de archivos con máximo 8 caracteres mas extensión y nombres sin espacio, crear una carpeta que se llame “mi día” o un archivo de texto con el titulo “hackxcrack.txt” es imposible por lo cual para que tomen el valor que nosotros le damos la mejor forma es escribir toda la dirección o el archivo problemático entre comillas, de esta forma se arrodilla ante nosotros MD “Md” tiene la utilidad de crear una carpeta, digamos que ya estamos posicionados sobre el escritorio (ejercicio anterior) ahora tecleamos Md mi hackxcrack Que paso, claro como tenia espacio y no lo pusimos entre comillas nos creo dos carpetas, “mi” y “hackxcrack”… se lo que estas pensando y no, hoy no me comí un guiso de payaso, hagamoslo bien Md “mi hackxcrack” RD Y ahora si se creo la carpeta, pero como todo héroe tiene su enemigo, mientras el “md” crea el “rd” destruye, borremos esa carpeta que creamos hace unos segundos de la siguiente forma Rd “mi hackxcrack” Y listo, lo que creamos ha sido eliminado
8 www.hackxcrack.es
Una vez mas las cosas se alejan de batch para aprender un poco mas, un comando muy importante que se me estaba pasando por alto en la shell es “dir”, escribiendo eso vamos a conocer las subcarpetas y los archivos dentro de una carpeta determinada, solo por si se pierden y no saben donde están…. Aplicar “Cd” nos sirve cuando queremos trabajar desde un punto en particular, como en teoría nosotros lo vamos a hacer los mas mecánico posible vamos a ignorarlo y en vez de pararnos en una carpeta y ponernos allí a trabajar la orden siempre va a salir desde la partición, en la mayoría de los casos, “C”, en otras palabras en vez de pararnos en tal lugar y escribir siempre lo vamos a detallar desde el principio Ahora que finalizamos el teórico hagamos un lindo batch que incluya esto que hemos estado viendo y un “if” que todavía no vimos, ¿tengo que explicarlo?... bueno aca va If exist
9 www.hackxcrack.es
Transparente, si existe algo (nosotros vamos a definir que) que haga tal cosa, de lo contrario que haga tal otra… Como ya estas canchero en el tema vamos a darte el código para no hacerte esperar If exist hackxcrack.bat (echo Ya existe) else (echo No existe)
Lo que va a hacer con esta línea su pc es buscar el archivo hackxcack.bat, si lo encuentra en alguna parte va a mostrar por pantalla Ya existe En caso de no encontrar ese archivo No existe Ahora si, abarajemos todo lo que hemos aprendido hasta ahora y… y… Ups! Sepan disculparme, hay dos cositas que me estoy olvidando de contarles La primera es que se puede abrir cualquier carpeta o documento con el comando start mas la ruta en la cual se encuentra la carpeta, digamos que queremos abrir una carpeta en el escritorio que se llama hackxcrack (esto recién a estas alturas es entendible) Start “c:\documents and settings\administrador\escritorio\hackxcrack”
O un documento hackxcrack.doc Start “c:\documents and settings\administrador\escritorio\hackxcrack.doc”
La ruta es solo un ejemplo de la pc en la que escribo ahora, puede variar según la configuración o versión pero al menos de esta forma comprenden que la shell (como el comando “start”) también puede servir para abrir carpetas y documentos, además de los programas que antes habíamos mencionado… &
10 www.hackxcrack.es
Agregado de ultimo momento… si uno quiere que el batch haga mas de una acción a la vez es necesario agregar “&”, siempre en el orden adecuado amigo, como lo explicamos en un principio no es lo mismo Echo Otra vez & Goto inicio
Que Goto inicio & Echo Otra vez
En el primer caso va a mostrarnos por la pantalla Otra vez Y luego nos va a direccional a “:inicio”, en el segundo caso nos va a redireccionar a “:inicio”… y nada mas, puesto que al llegar a esa ejecución nos manda a otro lado y el “Echo Otra vez” queda en la nada > y >>
11 www.hackxcrack.es
Amigos con esto terminamos la primer parte del curso de batch, estos comandos sirven para darle a algo un nuevo valor, (>) para trasferir y borrar lo anterior o (>>) para agregar a un valor al anterior sin borrarlo Supongamos que tenemos un archivo llamado hackxcrack.txt (somos bien
originales con los nombres), además ese ese archivo se encuentra en mi escritorio… En caso de no ser la misma solo deben aplicar su ruta con el mismo ejemplo, vamos a crear un batch que nos permita darle un valor a ese hackxcrack.txt que se encuentra en nuestro escritorio.
@echo off If exist hackxcrack.txt (goto seguir) else (Md “c:\documents and settings\administrador\escritorio\hackxcrack.txt”& goto seguir) :seguir Set/p uju=Insetar texto= Echo %uju% > “c:\documents and settings\administrador\escritorio\hackxcrack.txt” ¡Uuaauu! Parecia tan complicado pero ya lo entendemos, es increíble… El programa empieza preguntando si existe hackxcrack.txt continua en :seguir, si no existe lo crea y se dirige a :seguir (muy útil esta parte)… ambos continúan en :seguir. Lo que nos va a pedir este batch es: Insertar texto= Una vez que le insertemos algo y le demos enter vamos a poder ir a donde está el archivo hackxcrack.txt y abrirlo, con suerte y si seguimos todos los pasos bien vamos a ver el texto que escribimos dentro del archivo, pero hagamos algo, volvamos a abrir el batch e insertemos otra cosa, lo que se les ocurra en su retorcida mente Algo como “hackxcrack, un lugar donde aprender” una vez que lo lleven a cabo vuelvan al archivo hackxcrack.txt y ábranlo, como verán el primer texto desapareció y ahora aparece el ultimo que ingresamos… esa leyenda tan acertada, “hackxcrack, un lugar donde aprender”… Noto que algunos ya van agarrando el truco, para desconcertarlos un poco en el final cambien el “>” por un “>>” y veamos que pasa con el mismo ejemplo…
¿Lo ven? Con esta modificación en vez de borrar el valor anterior por el nuevo los va apilando uno debajo del otro dentro del hackxcrack.txt, prueben iniciando varias veces el programa e ingresando diferentes frases… Ahora si para terminar voy a darle un par de reglas mas… Hay variables fijas como por ejemplo “%date%” (que es el día) o %time% (que es la hora), como yo solo voy a utilizar solo esas dos para el ejemplo final las aclaro ahora, sin embargo existen muchas mas, solo hay que buscarlas en el lugar adecuado.
12 www.hackxcrack.es
A tener en cuenta: -‐En general los pequeños errores se cometen en espacios olvidados o agregados por equivocación… Para destripar el batch lo único que hay que hacer es poner entre orden y orden un “pause” de esta forma siguiendo una por una las ordenes vamos a detectar fácilmente el error-‐ -‐Lo que manejamos en este manual tiene muy poco de malware, sin embargo tocamos conceptos que nos van a ser muy útiles en la continuación-‐ -‐Ser autodidacta es la mejor opción, aca solo les muestro una gota en el mar, hay muchas mas funciones y utilidades, sin embargo espero haber cumplido mi propósito que les haya sido ameno el ingreso a este mundo maravilloso-‐ Ultimo batch que me parece interesante para el caso… pero esta vez lo voy a dejar para que lo vean, esta todo explicado mas arriba así que cualquier duda pueden visitarnos en… www.hackxcrack.es como siempre vamos a estar gustosos de responder sus dudas.. Ultimo batch
13 www.hackxcrack.es
@echo off title Alan++, ultimo batch color 1f :otra set/p hh=que día es?(dd)= echo. set/p dd=que mes es?(mm)= echo. set/p aa=que año es?(aa)= echo. echo %hh%-‐%dd%-‐20%aa% set mun=%hh%-‐%dd%-‐%aa% echo. set/p exac=la fecha es correcta?(si/no)= if %exac%==si (goto seguir) if %exac%==no (goto otra) :error echo. echo valor invalido echo. goto otra :seguir if exist ventas (goto upus) else md "c:\documents and settings\administrador\escritorio\ventas" & goto upus :upus if exist %mun% (goto ukus) else md "c:\documents and settings\administrador\escritorio\ventas\%mun%" & goto ukus :ukus echo %date%>> "c:\documents and settings\administrador\escritorio\ventas\%mun%\en el dia.txt" set/a total=0 :volv cls echo. >> "c:\documents and settings\administrador\escritorio\ventas\%mun%\en el dia.txt" echo. >> "c:\documents and settings\administrador\escritorio\ventas\%mun%\en el dia.txt" set/a venta=0 set/p venta=Monto de la venta?($)= echo %time% >> "c:\documents and settings\administrador\escritorio\ventas\%mun%\en el dia.txt" echo %venta% >> "c:\documents and settings\administrador\escritorio\ventas\%mun%\en el dia.txt" set/a sum=%total%+%venta% set/a total=%sum% echo. echo el total de ventas es de $%total% pause goto volv
Lo dejo sin solución para que ustedes me digan que es… Muchas gracias a los miembros del staff y mas aun a vos por leer este manual Espero que te haya sido útil, Alan++
14 www.hackxcrack.es