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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Batch] Criptoanalizador del cifrado generico monoalfabetico por sustitucion
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Batch] Criptoanalizador del cifrado generico monoalfabetico por sustitucion  (Leído 3,968 veces)
lShadowl

Desconectado Desconectado

Mensajes: 7


INTJ


Ver Perfil
[Batch] Criptoanalizador del cifrado generico monoalfabetico por sustitucion
« en: 26 Febrero 2011, 14:23 pm »

Se que aun puede tener alguno que otro fallo, pero aun no los he encontrado. Tambien me gustaria agilizar el proceso un poco mas.
Citar
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Decriptor del sistema de encriptacion generico monoalfabetico por
:: sustitucion
::Escrito por: lShadowl
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
@echo off
setlocal enabledelayedexpansion
:::::::::::::::::::::::::
::Establece las variables
:::::::::::::::::::::::::
set/p str=Cadena cifrada:
echo.&&echo.&&echo.
set abc=abcdefghijklmn_opqrstuvwxyz
set phieuler27=18
set str_len=0
set cnt=0
set ret=0
call :set_len
set/a s_len=%str_len%-1
echo.>%temp%\p.tmp
echo.>outp.txt
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Busca el conjunto de letras que utiliza la cadena cifrada
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
for /l %%x in (0,1,%str_len%) do (
   if !cnt!==0 (
      set letra_!cnt!=!str:~0,1!
      set /a cnt+=1
   ) else (
      set ret=1
      set/a v=!cnt!-1
      for /l %%y in (0,1,!v!) do call:cmp !letra_%%y! !str:~%%x,1!
      if !ret!==1 (
         set letra_!cnt!=!str:~%%x,1!
         set /a cnt+=1
      )
   )
)
set /a cnt-=2
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Busca el numero de repeticiones que tienen cada una de las letras
:: del conjunto de letras de la cadena cifrada
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
for /l %%x in (0,1,%str_len%) do (
   for /l %%y in (0,1,%cnt%) do (
      call:cmp !letra_%%y! !str:~%%x,1! %%y
   )
)
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::Realiza el ordenamiento de menor a mayor de las letras en relacion
:: a su cantidad de repeticiones en la cadena cifrada
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
set/a uv=%cnt%-1
set/a uv2=%cnt%
for /l %%a in (0,1,%uv%) do (
   set/a vaux=%%a+1
   for /l %%b in (!vaux!,1,!uv2!) do (
      if /I !cnt_%%a! gtr !cnt_%%b! (
         set tmp=!cnt_%%a!
         set tmp_l=!letra_%%a!
         set cnt_%%a=!cnt_%%b!
         set letra_%%a=!letra_%%b!
         set cnt_%%b=!tmp!
         set letra_%%b=!tmp_l!
      )
   )
)
::::::::::::::::::::::::::::::::
::Genera el alfabeto del mensaje
::::::::::::::::::::::::::::::::
set Kabc=%letra_0%
for /l %%a in (1,1,%cnt%) do (call:k %%a)
if /I %cnt% lss 27 (
   for %%a in (a b c d e f g h i j k l m n _ o p q r s t u v w x y z) do (
      echo !Kabc!|find "%%a">nul
      if !errorlevel!==1 set Kabc=!Kabc!%%a
   )
)
::::::::::::::::::::::::::
::Busqueda de congruencias
::::::::::::::::::::::::::
set/a ma=0,sw=0
:m1
set mb=0
if %ma%==0 (
   if %sw%==0 (
      set sw=1
      goto :m2
   )
) else if %ma%==26 goto :end
set/a ma+=1
:m2
set mc=0
set/a mb+=1
if not %mb%==27 (
   if %mb%==%ma% (goto :m2)
) else goto :m1
:m3
set/a mc+=1
if not %mc%==27 (
   if %mc%==%ma% (
      goto :m3
   ) else if %mc%==%mb% goto :m3
rem   echo %ma% %mb% %mc%
   call:atk %ma% %mb% %mc%
   goto :m3
) else goto :m2
:end
echo FINALIZADO
goto:eof

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:atk
call:fndpos !Kabc:~%1,1! p1 abc
call:fndpos !Kabc:~%2,1! p2 abc
call:fndpos !Kabc:~%3,1! p3 abc

set/a b=%p2%%%27

set/a parta=%p3%-%p1%
if /I %parta% lss 0 set parta=27-%parta%
set/a a=(%parta%*5)%%27

call:mcd %a%
rem echo %p1%:%p2%:%p3% mcd=%mcd%
if %mcd%==1 (
   for /f "tokens=* delims=" %%a in (%temp%\p.tmp) do if %a%%b%==%%a goto:eof
   echo %a%%b%>>%temp%\p.tmp
   set abc2=
   set txt=
   for /l %%x in (0,1,26) do (call:stABC %%x %a% %b%)
   echo a=%a% b=%b% ^>^>
   set txt=
   for /l %%x in (0,1,%s_len%) do (call:stT %%x)
   echo %txt%>>outp.txt
   echo.&&echo.
)
goto:eof

::Realiza comparaciones de cadenas   
:cmp
if %1==%2 (set ret=0&& if not '%3==' set val=%3&& set/a cnt_!val!+=1)
goto:eof

::Encuentra el largo de una cadena
:set_len
set var=!str:~%str_len%,1!
if %var%'==' goto:eof
set/a str_len+=1
goto:set_len

::Encuentra el maximo comun divisor
:mcd
set mcd=1
set cva=27
set cvb=%1
set i=2
:lop
set/a v_a=%cva%%%%i%,v_b=%cvb%%%%i%
if %V_a%%v_b%'==00' (
   set/a mcd*=%i%
   set/a cva/=%i%
   set/a cvb/=%i%
   set i=2
) else (set/a i+=1)
if /I not %i% geq %cva% goto:lop
goto:eof

::Genera la posible cadena
:stT
call:fndpos !str:~%1,1! t1 abc2
set/a t1%%=27
set/p txt=!abc:~%t1%,1!<nul
set txt=%txt%!abc:~%t1%,1!
goto:eof

::Genera el alfabeto para la ecuacion dada
:stABC
call:fndpos !abc:~%1,1! t1 abc
set/a ct=((%2*%t1%+(%3+1))%%27)
set abc2=%abc2%!abc:~%ct%,1!
goto:eof

::Busca el valor numerico de la letra dada
:fndpos
for /l %%a in (0,1,27) do (
   set ret=1
   call:cmp !%3:~%%a,1! %1
   if !ret!==0 call set %2=%%a
)
goto:eof


:k
set Kabc=%Kabc%!letra_%1!
goto:eof

PD: _=ñ
PD2: la frase a criptoanalizar escribanla en una sola linea sin espacios.


« Última modificación: 26 Febrero 2011, 14:26 pm por lShadowl » En línea


Linux Registered User #473016

Sarcasm....because arguing with stupid people is not nearly as fun.
-INTJ
Páginas: [1] 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 4,183 Último mensaje 9 Abril 2008, 21:19 pm
por Crazy.sx
Criptografía - Cifrado por sustitución
.NET (C#, VB.NET, ASP)
hadree 2 8,686 Último mensaje 22 Noviembre 2010, 19:14 pm
por hadree
opcion batch o vbs en sustitucion de schtasks.
Scripting
guajolote_vengador 9 9,409 Último mensaje 26 Marzo 2012, 07:26 am
por Eleкtro
Cifrado por sustitucion ASM
ASM
capiil4d 1 2,911 Último mensaje 19 Junio 2013, 11:23 am
por Eternal Idol
[AYUDA] [BATCH] Problemita con sustitución de caracteres... « 1 2 »
Scripting
.:Xx4NG3LxX:. 10 5,450 Último mensaje 21 Febrero 2020, 17:38 pm
por .:Xx4NG3LxX:.
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines