MS-DOS Ayuda

Iniciado por Tino, 19 Septiembre 2016, 02:35 AM

0 Miembros y 1 Visitante están viendo este tema.

Tino

Hola ElHacker!
Estoy con muchas dudas sobre mi Encryper (Letter Changer)  :huh:

Estoy creando un Ecriptador (Como un changer de letras, Ej: que la letra A se convierta a B)

Y he usado SET A=B
de muchas formas y cuando voy a poner el resultado en el el echo me dice:

Operador no valido
y ECHO esta desactivado
o no se cambia a las letras ordenadas (Ej: Hola se tendría que remplazar a Ipm0)




Alguien me puede ayudar? O corregir mi código?



CODE:


@echo off
title Encrypter by TinnahB
echo Encrypter by TinnahB
goto start

:start
cls
set a=b
set b=c
set c=d
set d=e
set e=f
set f=g
set g=h
set h=i
set i=j
set j=k
set k=l
set l=m
set m=n
set n=o
set o=p
set p=q
set q=r
set r=s
set s=t
set t=u
set u=v
set v=w
set w=x
set x=y
set y=z
set a=0
echo Texto para cifrar:
set /p changetext=
echo.
echo Texto cifrado: %changetext%
pause
goto start


[Arg] $triker;

#1
¿¿¿¿????

¿¿Qué estás intentando hacer?? Estás haciendo cualquier cosa.
Todo lo que hiciste fue poner el valor de un montón de variables y después hacer un hola mundo con entrada de texto.

Para que una variable se muestre en batch, hay que rodearla entre símbolos de porcentaje: %variable%.
Tendrías que separar cada letra del texto escrito y hacer que ese texto escrito se convierta en el nombre de una variable que a la vez se traduce en su valor, la letra que le sigue.

Esto no se puede hacer en batch.

Te faltan dos cosas para hacer algo como esto: aprender más y usar Python o Ruby.
8Noobs - Comunidad para todos y todas, sin importar sus conocimientos en informática.

--> Unirse a 8Noobs <--

MCKSys Argentina

#2
Cita de: EagleStrike en 19 Septiembre 2016, 19:10 PM
Esto no se puede hacer en batch.

Si que se puede:


@echo off

setlocal enabledelayedexpansion

set Alphabet=abcdefghijklmnopqrstuvwxyz

set oText=felicitaciones haz roto el cifrado caesar
set offset=20

call :ENCRYPT %offset% "%oText%"

echo KeySet=%KeySet%

set eText=%outText%

call :DECRYPT %offset% "%eText%"

set dText=%outText%

echo Texto Original:   %oText%
echo Texto Cifrado:    %eText%
echo Texto Descifrado: %dText%

goto :EOF

:ENCRYPT

call :GETKEYSET %1

set _from=%Alphabet%
set _to=%KeySet%

set outText=%~2

for /l %%a in (0, 1, 25) do call :STUFFIT %%a
for /l %%a in (0, 1, 25) do call :PROCESS %%a  

goto :EOF

:DECRYPT

call :GETKEYSET %1

set _from=%KeySet%
set _to=%Alphabet%

set outText=%~2

for /l %%a in (0, 1, 25) do call :STUFFIT %%a
for /l %%a in (0, 1, 25) do call :PROCESS %%a

goto :EOF

:STUFFIT

set fromChar=!_from:~%1,1!

set outText=!outText:%fromChar%=_%fromChar%!

goto :EOF

:PROCESS

set fromChar=!_from:~%1,1!
set toChar=!_to:~%1,1!

set outText=!outText:_%fromChar%=%toChar%!

goto :EOF

:GETKEYSET

set /a idx=%1 %% 26

set KeySet=!Alphabet:~%idx%!

if %idx%==0 goto :EOF

set KeySet=%KeySet%!Alphabet:~0,%idx%!



Saludos!

EDIT: Si pones la variable offset en 1, hará A=B (lo quequieres hacer).
MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."


Tino

Muchisimas gracias MCKys ;-)