"Encriptacion y crackmes en Batch desde 0"
by xassiz
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
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".
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.
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
@echo off
set alg=jajaHackrBlack
echo.%alg:~4,4%%alg:~9%
pause>nul
exit
@echo off
set alg=jajaHackBlackj
echo.%alg:~-10,9%
pause>nul
exit
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
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
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
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
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
% = 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
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
"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
Password: x4ss1z
Bien
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
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%
-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 y el programa vuelve a la linea siguiente al call.
Pondre un ejemplo mas facil:
@echo off
call :alg en Registrate Www.HackBlack.neT
pause>nul
exit
:alg
echo.%2 %1 %3
- Porque no mostraria "en Registrate Www.HackBlack.neT"?
- Facil. Cuando usamos los parametros no ponemos:
echo.%1 %2 %3
%2 %1 %3
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
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%
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!
ATENCION: si vas a copiar este tutorial menciona autor (xassiz) y fuente (Www.HackBlack.neT), y no lo modifiques
0 comentarios:
Publicar un comentario