Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Eleкtro en 6 Mayo 2012, 13:11 pm



Título: [Reto Batch] cifrado caesar
Publicado por: Eleкtro en 6 Mayo 2012, 13:11 pm
Aquí pueden comentar todo lo que quieran, sus dudas, avances o soluciones acerca del siguiente reto:


Reto Nº 10

Nombre:           Cifrado Caesar (Elektro H@cker)
Dificultad:        7/10
Objetivo:         Crea un bat que pida una palabra/frase, En fin, Texto. Y séa capaz de encriptarlo Y DESENCRIPTARLO por el método CAESAR de deslizamiento de caracteres.
Indicaciones:   El bat debe tener una opción para definir el shift del cifrado, Es decir, El número de veces que se deslizará cada caracter hacia la derecha.
 
Ejemplo:
                         (http://img23.imageshack.us/img23/3342/prtscrcapture3q.jpg)  (http://img94.imageshack.us/img94/1649/prtscrcapturegp.jpg)  (http://img528.imageshack.us/img528/4239/prtscrcapture4q.jpg)  (http://img525.imageshack.us/img525/1781/prtscrcapture2g.jpg)
Solución:         Pedir por mensaje privado


Título: Re: [Reto Batch] cifrado caesar
Publicado por: ELVJop en 6 Mayo 2012, 15:21 pm
7 de difultidad?? Tanto? Voy a probar... Una cosa la palabra es obligatorio poneral gunta o puedo pedir que se ponga por espacios la letra?


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Eleкtro en 6 Mayo 2012, 15:26 pm
la palabra es obligatorio poneral gunta o puedo pedir que se ponga por espacios la letra?

Debe aceptar cualquier frase introducida por el usuario.. ya tenga espacios o no

salu2


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Runex en 6 Mayo 2012, 15:40 pm
7 de difultidad?? Tanto? Voy a probar... Una cosa la palabra es obligatorio poneral gunta o puedo pedir que se ponga por espacios la letra?

Te aviso que es más complicado de lo que te piensas con el shift indicado por el usuario, yo lo hice en Python y ya te digo que lleva tu tiempo


Título: Re: [Reto Batch] cifrado caesar
Publicado por: ELVJop en 6 Mayo 2012, 16:04 pm
Que va es facilito ya lo tengo pero hay algo que no esta bien porque me da problemas con cosas de menos de 2 letras i con algun limite maximo que todabian o se.


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Runex en 6 Mayo 2012, 16:07 pm
Que va es facilito ya lo tengo pero hay algo que no esta bien porque me da problemas con cosas de menos de 2 letras i con algun limite maximo que todabian o se.

Jaja, uno de los problemas está en el límite, a mi me pasó lo mismo :)


Título: Re: [Reto Batch] cifrado caesar
Publicado por: ELVJop en 6 Mayo 2012, 16:27 pm
Teniendo en cuenta que batch es mas lento a tu te va bien? Porque a mi me va pero tarda un monton parte de que me chupa el 40% de la CPU...


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Eleкtro en 6 Mayo 2012, 16:30 pm
Teniendo en cuenta que batch es mas lento a tu te va bien? Porque a mi me va pero tarda un monton parte de que me chupa el 40% de la CPU...

Algo estarás haciendo indebidamente :-/. Batch es lento, Pero la solución que yo hice no tarda ni 2 segundos. Investiga hasta que halles el modo! :P

salu2


Título: Re: [Reto Batch] cifrado caesar
Publicado por: ELVJop en 6 Mayo 2012, 16:36 pm
Te lo mando por MP me parece que lo corregui... pero mucha info de internet tube que sacar no era tan facil como parecia...


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Eleкtro en 6 Mayo 2012, 16:52 pm
Te lo mando por MP me parece que lo corregui... pero mucha info de internet tube que sacar no era tan facil como parecia...

Muy mal, ELVJop.
Solución no válida.

Solo le has modificado 4 cosas para que parezca otro code.
Al menos podrías haberte fijado un poco, Esto es lo que pasa cuando copias directamente desde el code con la sintaxis de pastebin, y no desde el "RAW Paste Data ":
Código:
Set "Char=!palabra2:~% class="re2">Next_char_palabra2%,1!"

PD: Obviamente, No funciona.

7 de difultidad?? Tanto? Voy a probar...

Si te parece tán fácil, Prueba sin copiar.

EDITO: Bueno, He hecho todas las soluciónes privadas, Así no copian más codes, Que no se porque se empeñan en copiar si esto no es una competición ni hay premio...

Salu2.


Título: Re: [Reto Batch] cifrado caesar
Publicado por: raul338 en 6 Mayo 2012, 17:27 pm
Nunca use batch :P pero para los retos, podrías hacer como en vb, postear la solución después de un tiempito (la típica: entrego después de que alguien entregue primero :xD)

[offtopic]
No sabia que eras moderador: Felicidades! :P (no te hicieron o no vi un post que diga esto :xD)
[/offtopic]


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Eleкtro en 6 Mayo 2012, 17:31 pm
Nunca use batch :P pero para los retos, podrías hacer como en vb, postear la solución después de un tiempito (la típica: entrego después de que alguien entregue primero :xD)
Ya no importa, las hice privadas así ya nadie copia xD

No sabia que eras moderador: Felicidades! :P (no te hicieron o no vi un post que diga esto :xD)
Gracias, GENIO de Ruby! :P
Es un placer verte de nuevo por el foro jeje

Salu2!


Título: Re: [Reto Batch] cifrado caesar
Publicado por: 79137913 en 8 Mayo 2012, 16:31 pm
HOLA!!!

100% codeado por mi no como otros chantas que andan dando vueltas por estos retos (no raul vos no XD)

No me pregunten porque pero parece que el sistema de seguridad analiza mi codigo como si fuera un intento de XSS por ende me suplanta palabras y lo deja sin funcionalidad aca el codigo completo:

http://pastebin.com/ZjchPt0q

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] cifrado caesar
Publicado por: BatchianoISpyxolo en 8 Mayo 2012, 17:54 pm
Yo lo anduve codeando el otro día pero me cansé y ahí lo tengo esperando... Ahora ando con Aplicaciones lineales y Bases xD


Título: Re: [Reto Batch] cifrado caesar
Publicado por: -- KiLiaN -- en 8 Mayo 2012, 18:24 pm
No me funciona tu código 79137913...cuando le doy a cifrar, escribo la frase y el shift y sólo me muestra el número que haya puesto de desplazamiento.

PD: Aqui  se te coló algo  :silbar:
Citar
< span="">style="color: #448888;"><>%%


Título: Re: [Reto Batch] cifrado caesar
Publicado por: 79137913 en 8 Mayo 2012, 18:54 pm
HOLA!!!

No me funciona tu código 79137913...cuando le doy a cifrar, escribo la frase y el shift y sólo me muestra el número que haya puesto de desplazamiento.
PD: Aqui  se te coló algo  :silbar:

No me pregunten porque pero parece que el sistema de seguridad analiza mi codigo como si fuera un intento de XSS por ende me suplanta palabras y lo deja sin funcionalidad aca el codigo completo:

http://pastebin.com/ZjchPt0q

P.D: solo con mayusculas, si quieren minusculas habria que agregar otro bucle mas sin sentido.

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] cifrado caesar
Publicado por: -- KiLiaN -- en 8 Mayo 2012, 23:10 pm
Ahora si funciona pero me aparece el desplazamiento y luego la palabra codificada (correctamente).


Título: Re: [Reto Batch] cifrado caesar
Publicado por: 79137913 en 9 Mayo 2012, 02:53 am
HOLA!!!

Justamente, es para poder decodificarla luego.

GRACIAS POR LEER!!!


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Eleкtro en 9 Mayo 2012, 12:42 pm
No me funciona tu código 79137913...cuando le doy a cifrar, escribo la frase y el shift y sólo me muestra el número que haya puesto de desplazamiento.

PD: Aqui  se te coló algo  :silbar:

Ya todos sabemos que hay errores en la sintaxis de batch al pegar código en Pastebin o aqui en el foro si el code tiene habilitado la expansion de variables y hay exclamaciones en el code !!!!!.

PD: Para algo está la opción de copiar el code desde el "RAW Paste Data" de pastebin.

Salu2!


79137913, Yo recibo esta salida xD:
EDITO: Ok no vi lo que comentaste de las mayusculas!


PD: No es dificil hacerlo andar con mayusculas/minusculas, Os dejo una pista de como lo codeé yo:

Código
  1. Set "Charlist= abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ01234567899876543210"

Salu2!


Título: Re: [Reto Batch] cifrado caesar
Publicado por: BatchianoISpyxolo en 10 Mayo 2012, 17:59 pm
Ya todos sabemos que hay errores en la sintaxis de batch al pegar código en Pastebin o aqui en el foro si el code tiene habilitado la expansion de variables y hay exclamaciones en el code !!!!!.

PD: Para algo está la opción de copiar el code desde el "RAW Paste Data" de pastebin.

Salu2!


79137913, Yo recibo esta salida xD:
EDITO: Ok no vi lo que comentaste de las mayusculas!


PD: No es dificil hacerlo andar con mayusculas/minusculas, Os dejo una pista de como lo codeé yo:

Código
  1. Set "Charlist= abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ01234567899876543210"

Salu2!

Yo en el "charlist" no lo hice sin números, habrá que incluirlos xD y me falta descifrar


Título: Re: [Reto Batch] cifrado caesar
Publicado por: leogtz en 11 Mayo 2012, 05:14 am
Si tengo tiempo este fin de semana lo resuelvo, la universidad no me deja en paz :s


Título: Re: [Reto Batch] cifrado caesar
Publicado por: SmartGenius 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.


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Eleкtro 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.  ;-)


Título: Re: [Reto Batch] cifrado caesar
Publicado por: BatchianoISpyxolo 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


Título: Re: [Reto Batch] cifrado caesar
Publicado por: Binary_Death 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.