Encriptacion y crackmes_en_batch_desde_0_by_xassiz
1. "Encriptacion y crackmes en Batch desde 0"
by xassiz
>INDICE:
1.Introduccion
2.Usando Variables
3.Extraccion de Caracteres
4.Reemplazo de Caracteres
5.Parametros
6.Despedida
1. Introduccion
Bueno, en este tutorial explicare cosas sobre la encriptacion en Batch.
Codificando nuestros codes, haremos que sea mas dificil la lectura a otras
personas por ejemplo para que no nos copien.
Sirve para muchas cosas por ejemplo para encriptar una contraseña dentro
del .bat que no queremos que descubran dandole
a editar, un virus para que el antivirus no lo detecte tan facilmente...
y por supuesto para hacer crackmes.
2. Usando variables
Para empezar veremos que ya se hace mas dificil leer un bat si escondemos
palabras o incluso
comandos en variables:
@echo off
set cls=echo
set adios=hola
set exit=pause
%cls%.%adios%
%exit%
exit
2. que seria lo mismo que:
@echo off
echo.hola
pause
exit
En un virus podriamos "setear" (del comando set) estas variables:
set a=s
set b=h
set c=u
set d=t
set e=d
set f=o
set g=w
set h=n
y escribir:
%a%%b%%c%%d%%e%%f%%g%%h% -s
para que se apagase el ordenador.
Para disimular aun mas podemos por ejemplo crear varias variables para el
mismo comando o valor, como en el ejemplo anterior.
@echo off
set pau=pau
set se=se
%pau%%se%
exit
Por ejemplo tenemos un bat con contraseña:
@echo off
set/p pass="Password: "
if %pass%==xassiz (echo.Bien) else (echo.Mal)
pause>nul
exit
..y en este se veria claramente que la password es "xassiz".
3. Si lo pusieramos asi, seria mas dificil:
@echo off
set abc=siz
set cba=xas
set/p pass="Password: "
if "%pass%"=="%cba%%abc%" (echo.Bien) else (echo.Mal)
pause>nul
exit
Y si pusieramos asi, aun seria mucho mas dificil:
@echo off
set alg=xzsasi
set/p pass="Password: "
if "%pass%"=="%alg:~0,1%%alg:~3,1%%alg:~2,1%%alg:~4,1%%alg:~-1%%alg:~1,1%"
(echo.Bien) else (echo.Mal)
pause>nul
exit
Este ultimo ejemplo es normal que no lo entendais, es algo mas avanzado que
veremos en el siguiente capitulo: La extraccion de caracteres.
4. 3. Extraccion de caracteres
Bueno, esta tecnica, como su nombre indica, es extrayendo caracteres de una
variable.
Su sintaxis es sencilla:
%nombre_variable:~caracteres_desechados,caracteres_cogidos%
Si no lo entiendes ahora, no te preocupes, con unos ejemplos todo se arregla:
@echo off
set opc=zzholazz
echo.%opc:~2,4%
::y mostraria "hola"
pause>nul
exit
% = Los dos por cientos indican que es una variable
: = Indican que vamos a trabajar con dicha variable
~ = Indican que la tecnica va ser por extraccion
nombre_variable = opc
caracteres_desechados = 2 (los dos primeros caracteres son zz por lo
que no los queremos y los quitamos)
caracteres_cogidos = 4 (los cuatro siguiente caracteres son los que
queremos utilizar)
Los verdes son los campos reemplazables
Bien, pues veremos algunos ejemplos rapidos por encima:
@echo off
set alg=jajaHackjajBlackjaj
echo.%alg:~4,4%%alg:~11,5%
pause>nul
exit
Que mostraria HackBlack
@echo off
set alg=jajaHackrBlack
echo.%alg:~4,4%%alg:~9%
pause>nul
exit
5. Que mostraria lo mismo que el anterior. Aqui vemos que la variable alg no
acaba en j, por lo que lo que queremos coger llegaria hasta el final. En la
extraccion ponemos ~9, pero como no hay ninguna coma separando algun
otro digito, tomaria todos los caracteres apartir del caracter numero 10.
@echo off
set alg=jajaHackBlackj
echo.%alg:~-10,9%
pause>nul
exit
En esta extraccion, vemos que la variable alg tiene el valor jajaHackBlackj;
entonces en este caso utilicé una extraccion con valor negativo: -10.
Esto empezaria a contar por el final diez carácteres hasta llegar a la H. A partir
de ahi cogeria los 9 siguientes hacia delante porque no queremos que coja la j.
@echo off
set alg=jajaHackBlack
echo.%alg:~-9%
pause>nul
exit
Este es como hace dos ejemplos, pero ahora con valores negativos. Vemos que
elimine la j del valor de la variable!
Entonces, contamos 9 hacia atras y llegamos a la H; como no hay coma
separando otro digito coge hasta el final y muestra HackBlack.
@echo off
set alg=jajaHackBlackj
echo.%alg:~-10,-1%
pause>nul
exit
Ahora le volvimos a cambiar el valor de alg a jajaHackBlackj. En este caso
ves que podemos combinar valores negativos en la extraccion -10,-1, que
seguiria mostrando HackBlack porque coge desde la H (-12) hasta la k (-1).
Inventandonos ejemplos veremos cosas utiles que podemos hacer... ahora
podemos hacer el programa de la Password usando la Extraccion de
Caracteres:
@echo off
set alg=xzsasi
6. set/p pass="Password: "
if "%pass%"=="%alg:~0,1%%alg:~3,1%%alg:~2,1%%alg:~4,1%%alg:~-1%%alg:~1,1%"
(echo.Bien) else (echo.Mal)
pause>nul
exit
Este era el ultimo ejemplo del programa, que supongo que ahora ya
entenderas.
7. 4. Reemplazo de caracteres
Bueno, esta es una tecnica usada mas bien para otro tipo de cosas, pero puede
utilizarse tambien para encriptacion.
La sintaxis es parecida a la extraccion pero es mas facil de entender:
%nombre_variable:caracter_reemplazador=caracter_reemplazado%
@echo off
set alg=H4ckBl4ck
echo.De %alg% a %alg:4=a%
pause>nul
exit
Muestra primero la variable alg (H4ckBl4ck) y luego muestra la misma
variable pero los cuatros que aparecian se convirtieron en as (HackBlack).
% = Los dos por cientos indican que es una variable
: = Indican que vamos a trabajar con dicha variable
caracter_reemplazador = 4 (cambiamos los cuatros..)
= = Indica que se va a reemplazar
caracter_reemplazado = a (..por as)
Los verdes son los campos reemplazables
Bueno, con esta tecnica se juega mas cambiando el valor de la variable, por
ejemplo que la variable alg de valor H4ckBl4ck se quede HackBlack (aunque
no la mostremos).
Cambiando la variable (o creando otra) podemos cambiar varios caracteres,
como veremos en el siguiente ejemplo:
@echo off
set alg=x4ss1z
set alg2=%alg:4=a%
set alg2=%alg2:1=i%
echo.De %alg% a %alg2%
pause>nul
exit
Que mostraria primero x4ss1z y despues xassiz.
8. Con esto podriamos crear un "encriptador":
@echo off
set/p palabra="Palabra>> "
set alg=%palabra:x=123%
set alg=%alg:a=234%
set alg=%alg:s=345%
set alg=%alg:i=456%
set alg=%alg:z=567%
cls
echo."%palabra%" encriptado = %alg%
pause>nul
exit
Que si en donde nos pide la palabra escribimos xassiz, nos devolveria:
"xassiz" encriptado = 123234345345456567
El programa de la contraseña podriamos hacerlo asi:
@echo off
set alg=xzsasi
set alg=%alg:a=4%
set alg=%alg:i=1%
set/p pass="Password: "
if "%pass%"=="%alg:~0,1%%alg:~3,1%%alg:~2,1%%alg:~4,1%%alg:~-1%%alg:~1,1%"
(echo.Bien) else (echo.Mal)
pause>nul
exit
Que para que nos diera correcto tendriamos que cambiar las a por 4 y las i por
1:
Password: x4ss1z
Bien
9. 5. Parametros
Bueno, esto se utiliza mas bien para las llamadas Funciones, pero tambien se
utiliza bastante en los virus para ahorrar lineas, o tambien en los crackmes!
Vamos a poner un ejemplo sencillito para ver como se utilizan:
@echo off
set/p palab="Palabra>> "
call :alg %palab%
echo."%palab%" encriptado = %par%
pause>nul
exit
:alg
set par=%1
set alg=%par:x=123%
set alg=%alg:a=234%
set alg=%alg:s=345%
set alg=%alg:i=456%
set alg=%alg:z=567%
goto:eof
Que seria exactamente igual que el encriptador de antes. La gente que no sepa
usar parametros le va ser imposible de sacar y a la que los sabe utilizar le va
ser mas complicado que de la otra manera, pero mas adelante veremos un
ejemplo mejor.
Analizando el codigo vemos lo que pasa:
-Primero preguntamos el valor de la variable %palab%.
-Ahora llamamos a la etiqueta :alg con call pasandole como primer parametro
la palabra que escribiera el user:
call :alg %palab%
Hasta ahi sencillo no? Pues ahora llegan los parametros.
-Seteamos la variable par como %1. Eso es un parametro, el parametro 1.
Los parametros son numeros, en este caso es el primer parametro. Es como
una variable, cual sera su valor? pues lo que vaya despues de call+:etiqueta,
que en este caso es otra variable, %palab%.
Entonces si el user escribiera xassiz seria como si hiciesemos:
set par=xassiz
A partir de ahi se van reemplazando los caracteres.. hacemos un goto:eof
para salir de la etiqueta (eof= EndOfFile) y el programa vuelve a la linea
siguiente al call.
10. Pondre un ejemplo mas facil:
@echo off
call :alg en Registrate Www.HackBlack.neT
pause>nul
exit
:alg
echo.%2 %1 %3
Que mostraria "Registrate en Www.HackBlack.neT".
- Porque no mostraria "en Registrate Www.HackBlack.neT"?
- Facil. Cuando usamos los parametros no ponemos:
echo.%1 %2 %3
sino que ponemos:
%2 %1 %3
ordenando las palabras.
Tambien te preguntaras por que no puse goto:eof para salir de la etiqueta..
pues es solo para demostrar una curiosidad, que es que si cuando se acaba la
etiqueta no hay mas codigo delante, no haría falta ponerlo. Por lo que si el
code fuera asi no valdria:
@echo off
call :alg en Registrate Www.HackBlack.neT
pause>nul
exit
:alg
echo.%2 %1 %3
:nada
cls
echo.Esto se vera porque el code sigue despues de la etiqueta :alg
pause>nul
exit
11. Ahora os mostrare el programa de contraseña mezclando todo lo que vimos
hasta aqui en el tutorial:
@echo off
set echo=set alg2
set alg=xassiz
set/p pass="Password: "
call :alg %alg%
if "%pass%"=="%alg2%" (echo.Bien) else (echo.Mal)
pause>nul
exit
:alg
%echo%=%1
%echo%=%alg2:a=4%
%echo%=%alg2:i=1%
La contraseña es x4ss1z, que si seguiste el tutorial supongo que sabrias ^^
12. 6. Despedida
Despues de todo este rollo espero que aprendierais.. xD
O sino a leerlo otra vez! Para que os quede probad los codes y cread los
vuestros =P
Espero que os gustara..
Saludos! :)
www.hackblack.net
xassiz@hotmail.com