elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Reto Batch] cifrado caesar
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 2 [3] Ir Abajo Respuesta Imprimir
Autor Tema: [Reto Batch] cifrado caesar  (Leído 12,384 veces)
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: [Reto Batch] cifrado caesar
« Respuesta #20 en: 11 Mayo 2012, 05:14 am »

Si tengo tiempo este fin de semana lo resuelvo, la universidad no me deja en paz :s


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
SmartGenius

Desconectado Desconectado

Mensajes: 181


:P


Ver Perfil WWW
Re: [Reto Batch] cifrado caesar
« Respuesta #21 en: 11 Mayo 2012, 18:08 pm »

Hace ya un tiempo habia publicado en el Blog un codigo de implementacion del Cifrado Cesar, es algo basico, pero cumple con su proposito.

Código:
@Echo Off&Title Caesar Crypt - SmartGenius
Setlocal Enabledelayedexpansion

:Init
Set /p "Text=Enter Text >"
If Not Defined Text Goto :Init
Set /p "Rot=Enter Seed >"
If Not Defined Rot Goto :Init
If 26 LEQ %Rot% Goto :Init
Call :Crypt.A Text Rot
Echo.
Echo. Result: %Text%
Echo.
Pause
Exit

:Crypt.A
If not defined %1 Goto:Eof
Set "c="
Set "d=ABCDEFGHIJKLMNOPQRSTUVWXYZ"
:Crypt.B
Set "chr=!%1:~,1!"
For /l %%l in (0 1 26) do (
if "!chr!" equ " " (
Set "%1=!%1:~1!"
Set "c=!c! "
Goto :Crypt.B)
if "!chr!" equ "!d:~%%l,1!" (
  set /a "x=(~((%%l-26)*-1)+!%~2!)+1"
  call set "c=!c!%%d:~!x!,1%%"
))
Set "%1=!%1:~1!"
If defined %1 goto:Crypt.B
Set "%1=!c!"
Goto :Eof

Es la implementacion normal, en mayusculas, con una rotacion maxima de 25, se puede ampliar el diccionario y un par de modificaciones en los limites para que funcione como ustedes quieren :)

Saludos.


En línea


Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.818



Ver Perfil
Re: [Reto Batch] cifrado caesar
« Respuesta #22 en: 11 Mayo 2012, 19:15 pm »

Hace ya un tiempo habia publicado en el Blog un codigo de implementacion del Cifrado Cesar, es algo basico, pero cumple con su proposito.

Una solución de uno de los más grandes de Batch.  ;-)
En línea

BatchianoISpyxolo

Desconectado Desconectado

Mensajes: 166


Ver Perfil
Re: [Reto Batch] cifrado caesar
« Respuesta #23 en: 24 Mayo 2012, 01:59 am »

Sí, el código se puede optimizar xD pero no sé por qué tuve muchos problemas por los argumentos y bueno ahora es lo que es pero al menos funciona correctamente.

¡Saludos!

Código:
:: CIFRADO CAESAR - BATCHIANO :)
@echo off
setlocal enabledelayedexpansion
set "CHARS= abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
:MAIN
cls
echo.
echo CIFRADO CAESAR - BATCHIANO :)
echo.
echo. 1. cifrar
echo. 2. descifrar
echo. 3. salir
echo.
set /p op=Opcion:
if not defined op (
goto :main
) else (
if !op!==1 (
goto :cifrar
) else if !op!==2 (
goto :descifrar
) else (
exit/b
)
)
:cifrar
cls
set /p desp=Desplazamiento lateral:
set /p texto=Texto a cifrar:
for %%? in (desp,texto) do if not defined %%? goto :cifrar
call :analizar "e" "!texto!" !desp!
echo -------------------
echo. Texto cifrado: !cad!
pause>nul
goto :eof

:descifrar
cls
echo El formato para descifrar es [desplazamiento]texto - Ejemplo: 2razqnq
set /p texto=Texto a descifrar:
if not defined texto goto :descifrar
call :analizar "d" "!texto!"
echo -------------------
echo. Texto descifrado: !cad!
pause>nul
goto :eof

:analizar
set t=%~2
set TYPE=%~1
if "!TYPE!"=="e" (
set /a d=%3
set cad=!d!
set /a i=0
) else (
set /a i=1
set "cad="
set shift=!t:~0,1!
)
::while
:while
if "!t:~%i%,1!" NEQ "" (
call :find_char "!t:~%i%,1!" "!CHARS!"
call :class !return!
if "!TYPE!"=="e" (
set /a rd=!return!+!d!
) else (
set /a rd=!return!-!shift!
)
if "!CLASS!"=="NONE" (
set "cad=!cad!!t:~%i%,1!"
) else (
if "!CLASS!"=="SPACE" (
set "cad=!cad! "
) else (
if "!TYPE!"=="e" (
call :resize_enc !rd!
) else (
call :resize_dec !rd!
)
call :select_char "!CHARS!" !rd!
set "cad=!cad!!sc!"
)
)
set /a i+=1
goto :while)
goto :eof


:find_char
set C=%~1
set L=%~2
set /a pos=0
:loop
if "!C!" NEQ "!L:~%pos%,1!" (
set /a pos+=1
if !pos! LSS 64 (goto :loop)
)
set /a return=%pos%
goto :eof


:select_char
set lc=%~1
set key=%2
set sc=!lc:~%key%,1!
goto :eof


:class
if %1 == 0 (
set CLASS=SPACE
) else if %1 GTR 0 (
if %1 LSS 27 (
set CLASS=MIN
) else if %1 LSS 53 (
set CLASS=MAY
) else if %1 LSS 63 (
set CLASS=NUM
) else (
set CLASS=NONE
)
)
goto :eof


:resize_enc
if "!CLASS!"=="MIN" (
if !rd! gtr 26 (
set /a rd-=26
)
)
if "!CLASS!"=="MAY" (
if !rd! gtr 52 (
set /a rd-=26
)
)
if "!CLASS!"=="NUM" (
if !rd! gtr 62 (
set /a rd-=10
)
)
goto :eof

:resize_dec
if "!CLASS!"=="MIN" (
if !rd! lss 1 (
set /a rd+=26
)
)
if "!CLASS!"=="MAY" (
if !rd! lss 26 (
set /a rd+=26
)
)
if "!CLASS!"=="NUM" (
if !rd! lss 52 (
set /a rd+=10
)
)
goto :eof
« Última modificación: 24 Mayo 2012, 02:03 am por Batchiano » En línea

Puede que desees aprender a programar desde 0: www.espascal.es
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: [Reto Batch] cifrado caesar
« Respuesta #24 en: 21 Julio 2012, 22:59 pm »

Dejo aquí lo que hice yo:

Código:
@Echo Off
setlocal enableextensions enabledelayedexpansion

set /p "text=Texto: "
set /p "rotn=Desplazamiento: "
call:_caesar "%text%" "%rotn%"
echo: -Cadena cifrada ^>^> %ret_str%

pause 1>nul & exit

:_caesar
if "%~1" EQU "" goto :EoF
set "chr_lst=abcdefghijklmnopqrstuvwxyz"
set "string=%~1" & set "ret_str="
for /l %%i in (0,1,25) do set/a c[!chr_lst:~%%i,1!]=%%i
set /a cnt=-1
:__loop.a
set /a cnt+=1
set "chr=!string:~%cnt%,1!"
if not defined chr goto :eof
if "%chr%" EQU " " set "ret_str=%ret_str% " & goto :__loop.a
set /a "num_cs=(!c[%chr%]!+%~2) %% 26"
set "ret_str=%ret_str%!chr_lst:~%num_cs%,1!"
goto :__loop.a

PD: Ups! Se me olvidó lo de descifrar. Pero da igual, basta con poner la clave en negativo.
Por ejemplo, si cifras "hola" con desplazamiento 5, da "mtqf". Si cifras "mtqf" con desplazamiento -5 da "hola". Así que supongo que os sirve igual  :P

PD2: Funciona tanto con mayúsculas como con minúsculas, pero la cadena cifrada la retorna siempre en minúsculas.
« Última modificación: 21 Julio 2012, 23:13 pm por Binary_Death » En línea

Páginas: 1 2 [3] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
introduccion al cifrado en batch |By-Skull|
Scripting
[SMT] 4 3,873 Último mensaje 9 Abril 2008, 21:19 pm
por Crazy.sx
[Ayuda] Reto de Yashira - PHP Con cifrado
Desafíos - Wargames
emma93 5 8,368 Último mensaje 27 Diciembre 2010, 20:28 pm
por WHK
[Batch] Criptoanalizador del cifrado generico monoalfabetico por sustitucion
Scripting
lShadowl 0 3,776 Último mensaje 26 Febrero 2011, 14:23 pm
por lShadowl
[Reto Batch] It's a dir? « 1 2 3 4 »
Scripting
Eleкtro 30 19,152 Último mensaje 31 Marzo 2014, 18:13 pm
por Shell Root
[APORTE] [BATCH] Automatizar apertura de volumen y baúl cifrado v2.2
Scripting
cyberalejo17 4 5,200 Último mensaje 3 Mayo 2014, 00:30 am
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines