Weno aki esta el reto... 8)
Se trata de la Base64 un metodo de cifrado
http://es.wikipedia.org/wiki/Base64
puej lo acabo de terminar...
Código:
@echo off
Title Encriptor--^>BASE64
setlocal enabledelayedexpansion
set e=echo
set sw=false
if %1. EQU . (echo Digite %~nx0 /? o help para mejor manejo&&goto fin)
if /I "%1" EQU "help" (call:help "%1") else (if "%1" EQU "/?" call:help "%1")
if /I "%1" NEQ "-c" (%e% Sintaxis Incorrecta.. %1&& exit)
if %2. NEQ . (set str=%2)
if %3. NEQ . (%e% Sintaxis Incorrecta.. && exit)
set str=%str:"=%
call:ini
cls
%e% Resultado...
%e%.
echo String : %~2
echo Cifrado : !cifrado!
pause >nul
endlocal
%e% Bye..
exit
:ini
cls
set pal=
set cifrado=
set base64=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
set p1=0
call:base64
del %temp%\enc.vbs
del ascii.txt
goto:EOF
:base64
cls
if %p1% EQU 3 (set p=&&set p1=0) else (set /a p1+=1&&set p=.%p%)
echo Codificando%p%
if not defined str goto:EOF
set chr3=%str:~0,3%
set code=
set sw=0
call:contar_chr "%chr3%"
if [%count%] LSS [3] (
if [%count%] EQU [2] (set sw=2)
if [%count%] EQU [1] (set sw=1)
)
call:ascii "%chr3%"
if exist ascii.txt (
for /f "tokens=*" %%a in (ascii.txt) do (
for %%b in (%%a) do call:dec_bin %%b
call:contar_bits !code!
call:codificar
)
)
set str=%str:~3%
goto base64
:codificar
if not defined code (
if ["%sw%"] EQU ["2"] (set cifrado=%cifrado%=)
if ["%sw%"] EQU ["1"] (set cifrado=%cifrado%==)
goto:EOF
)
set dig6=%code:~0,6%
set n=%dig6%
set c=0
set s=0
call:bin_dec
call set wzr=%%base64:~%s%,1%%
set cifrado=%cifrado%%wzr%
set code=%code:~6%
goto codificar
:dec_bin
set n=%1
set cad=
set c=0
call:binario
call:bits 8 %cad%
set code=%code%%cad%
goto:EOF
:bits
set digs=0
set long=%2
call:dim
:dimensionar
if [%digs%] LSS [%1] (set cad=0%cad%&& set /a digs+=1&&goto dimensionar) else (goto:EOF)
:dim
if not defined long goto:EOF
set long=%long:~1%
set /a digs+=1
goto dim
:bin_dec
if not defined n goto:EOF
call set bit=%%n:~-1%%
if [%bit%] EQU [1] call:sumar
set /a c+=1
set n=%n:~,-1%
goto bin_dec
:sumar
set /a d="1<<c"
set /a s+=d
goto:EOF
:binario
set /a c+=1
set /a dig=n%%2
set /a n/=2
set cad=%dig%%cad%
if %n% EQU 0 (if %c% EQU 1 (set cad=0%cad% & goto:EOF))
if %n% EQU 0 (goto:EOF) else (goto binario)
:contar_chr
set chrs=%~1
set count=0
:count_chrs
if not defined chrs goto:EOF
set chrs=%chrs:~1%
set /a count+=1
goto count_chrs
:contar_bits
set tbits=%1
set count=0
call:count_bits
if [!sw!] GTR [0] call:rellenar
goto:EOF
:rellenar
if [!sw!] LSS [2] (
if !count! LSS 12 (
set code=%code%0
set /a count+=1
goto rellenar)
)
if [!sw!] GTR [1] (
if !count! LSS 18 (
set code=%code%0
set /a count+=1
goto rellenar)
)
goto:EOF
:count_bits
if not defined tbits goto:EOF
set tbits=!tbits:~1!
set /a count+=1
goto count_bits
:ascii
echo Function enc (cad)>%temp%\enc.vbs
echo for i=1 to Len (cad)>>%temp%\enc.vbs
echo enc=enc ^& Asc(Mid(cad,i,1)) ^& " ">>%temp%\enc.vbs
echo Next>>%temp%\enc.vbs
echo End Function>>%temp%\enc.vbs
echo Set shell = CreateObject("Scripting.FileSystemObject")>>%temp%\enc.vbs
echo set b=shell.CreateTextFile("ascii.txt")>>%temp%\enc.vbs
echo b.write enc("%~1")>>%temp%\enc.vbs
echo b.close>>%temp%\enc.vbs
start %temp%\enc.vbs
ping 127.0.0.1 -n 1 >nul
goto:EOF
:help
%e%.
%e%.
%e% /\ \ /\__\ /\ \ /\ \
%e% _\:\ \ ___ /::^| ^| /::\ \ /::\ \
%e% /\ \:\ \ /\__\ /:/:^| ^| /:/\:\ \ /:/\:\__\
%e% _\:\ \:\ \ /:/__/ /:/^|:^| ^|__ /:/ /::\ \ /:/ /:/ /
%e% /\ \:\ \:\__\ /::\ \ /:/ ^|:^| /\__\ /:/_/:/\:\__\ /:/_/:/__/___
%e% \:\ \:\/:/ / \/\:\ \__ \/__^|:^|/:/ / \:\/:/ \/__/ \:\/:::::/ /
%e% \:\ \::/ / \:\/\__\ ^|:/:/ / \::/__/ \::/~~/~~~~
%e% \:\/:/ / \::/ / ^|::/ / \:\ \ \:\~~\
%e% \::/ / /:/ / ^|:/ / \:\__\ \:\__\
%e% \/__/ \/__/ ^|/__/ \/__/ \/__/
%e%.
%e% _____
%e% /::\ \
%e% /:/\:\ \
%e% /:/ \:\__\
%e% /:/__/ \:^|__^|
%e% \:\ \ /:/ /
%e% \:\ /:/ /
%e% \:\/:/ /
%e% \::/ /
%e% \/__/
ping 127.0.0.1 -n 3 >nul
%e%.
%e%.
%e%.
%e% Ej:%~nx0 %~1
%e%.
%e%.
%e% -c "cadena a cifrar" Con comillas si hay espacio
%e% -f "Archivo a cifrar" "Archivo cifrado"
%e%.
%e%.
%e%.
%e%.
%e%.
%e%.
%e%.
%e%.
%e% The magic.
exit
Suele tener un error al no poner las comillas " " cuando existe un espacion en el -c resolverlo y poner la condicion correcta sera (primer reto)
Como veran falta la operacion -f para cifrar todo un archivo y rederigir el resultado en otro archivo... no es muy complicado.. (segundo reto)
el mayor Reto para uds.. sera hacer en base por supuesto a las funciones q utilizo..., o si kieren utilizan sus propias funciones....
lograr el Decodificador para la Base64 (reto final)
mis respetos akellos q lo logren..., dare todo el tiempo necesario para q lo logren dado el caso q nadie llege hacerlo, aunke no kreo q suceda , publicare el Decodificador...
salu2-->