[Source] The Golden Bug (Análisis de Frecuencia)

Iniciado por Spider-Net, 11 Octubre 2008, 15:46 PM

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

Spider-Net

Hola a todos. Estos días he estado desarrollando una aplicación de análisis de frecuencia. Me interesó tras estudiar un poco este tipo de análisis para descifrar algoritmos simples de sustitución de caracteres como por ejemplo la cifrado César. Para el que no lo sepa...

En el criptoanálisis, el análisis de frecuencias es el estudio de la frecuencias de las letras o grupos de letras en un texto cifrado. Es un método de apoyo para la ruptura de cifrados clásicos.

CitarEl análisis de frecuencias está basado en el hecho de que, dado un texto, ciertas letras o combinaciones de letras aparecen más a menudo que otras, existiendo distintas frecuencias para ellas. Es más, existe una distribución característica de las letras que es prácticamente la misma para la mayoría de ejemplos de ese lenguaje. Por ejemplo, en inglés la letra E es muy común, mientras que la X es muy rara. Igualmente, las combinaciones ST, NG, TH y QU son pares de letras comunes, mientras que NZ y QJ son raros. La frase mnemotécnica "ETAOIN SHRDLU" agrupa las doce letras más frecuentes en los textos ingleses. En español, las vocales son muy frecuentes, ocupando alrededor del 45% del texto, siendo la E y la A las que aparecen en más ocasiones, mientras que la frecuencia sumada de F, Z, J, X, W y K no alcanza el 2%.

En algunos cifradores, las propiedades naturales del texto plano se preservan en el texto cifrado. Dichos esquemas pueden ser potencialmente objeto de ataques de sólo texto cifrado.

El caso es que estudié un poco todo esto y busqué alguna aplicación que me permitiese hacer este tipo de análisis pero no encontré ninguna, encontré una en inglés que me aconsejaron en el foro de criptografía, pero sólo funcionaba con sustitución de letras, y yo, basándome en el libro de "El Escarabajo de Oro" de Edgar Allan Poe quería hacer un análisis de frecuencia del mensaje cifrado del libro, y ese programa no me servía. Así que como no encontraba nada, ni en inglés ni en Español, me he dedicado a hacer yo uno mismo. Es muy sencillo, simplemente escribes un texto o bien lo importas desde un txt y el programa realiza un análisis de la frecuencia con la que aparecen los caracteres en el texto y muestra una gráfica con el resultado. Luego permite abrir unas gráficas con las letras más frecuentes en el inglés y en el español y con comparativas se puede deducir el significado de estos textos. Para quien no lo entienda muy bien, tiene un ejemplo que explicaron hace un tiempo en este mismo foro:
http://foro.elhacker.net/criptografia/criptografia_el_escarabajo_de_oro_uso_de_analisis_de_frecuencia-t212428.0.html

Esta aplicación nos ayudaría a hallar la tabla de caracteres que obtiene el autor de dicho relato por lógica.

Bueno, siento haberme extendido tanto, pero quería explicar bien qué hace esta herramienta, y aquí la comparto con vosotros. Se aceptan críticas, sugerencias y modificaciones del código.



The Golden Bug Source.zip
Con el Source adjunto el libro de "El Escarabajo de Oro" en pdf para quien quiera leerlo, es un relato muy cortito. También lo pueden encontrar en wikisource ya que es de libre distribución.

PD: Para todo aquel que crea que este tipo de cifrado está obsoleta que investigue como funciona la cifrado WEP (para redes wifi) y que investigue qué método usa aircrack para crackear las contraseñas :)

Saludos!

ssccaann43 ©

Spider esta muy bueno el ejemplo... Excelente...
- Miguel Núñez
Todos tenemos derechos a ser estupidos, pero algunos abusan de ese privilegio...
"I like ^TiFa^"

APOKLIPTICO

Todavia no tengo instalado el VB6, pero parece prometedor, como hiciste para graficarlos???
AMD Phenom II 1075T X6 @ 290 Mhz x 11 (HT 2036 Mhz NB Link 2616 Mhz) 1.23 Vcore
ASUS M4A89GTD-PRO/USB3
2x2gb G-Skill RipjawsX DDR3 1600 Mhz CL7 (7-8-7-24-25-1T)
Seagate 500 Gb
XFX HD4850 512Mb GDDR3. 650 Mhz/995 Mhz 1.1 Tflops.

Spider-Net

#3
Usé el control MSCHART.

Si quieres probarlo aunque sin código fuente, puedes probarlo desde este enlace:

http://auronweb.es/news/file.php?file=The_Golden_Bug.zip

NOTA: Ahora estoy intentando implementarle una función para descifrar el código, es decir que con los resultados obtenidos de frecuencia de caracteres, haga una sustitución por la frecuencia de las letras más usadas en inglés o español. Con un poco de suerte puede salir un texto más o menos legible. :)

Saludos!

cobein

Lindo ejemplo, la verdad hay muy poco de esto en la red, vi un ejemplo en PSC pero nada mas que eso.
Aunque esta un poco crudo (falta funcionalidad) es un buen comienzo, la verdad es muy interesante, epero que continues agregandole cosas =).
http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

Spider-Net

Cita de: cobein en 12 Octubre 2008, 13:14 PM
Lindo ejemplo, la verdad hay muy poco de esto en la red, vi un ejemplo en PSC pero nada mas que eso.
Aunque esta un poco crudo (falta funcionalidad) es un buen comienzo, la verdad es muy interesante, epero que continues agregandole cosas =).


Claro que sí. Ahora mismo sé que es muy simple, sólo haya la frecuencia. Ahora estoy intentando implementar un algoritmo que use esa tabla de frecuencias obtenida para intentar descifrar el algoritmo, haciendo comparaciones con las tablas relativas de frecuencia del español o inglés, dependiendo del texto que señales. Intentaré hacer un algoritmo que consiga descifrar aunque sea algo el texto, a ver si consigo que pueda sacar algo legible. Espero que sí.

Saludos!

✖ JuЯy ✖

pz a mi me a interesado mucho este tema Análisis de Frecuencia ..
voy a ponerme buscar mas,

sta muy buene la explicacion, Spideя-Net
MsgBox "SaluD.O.S.", vbInformation + vbMsgBoxRtlReading, " JuRy-BøY "

✖ JuЯy ✖

el    Proyecto1.vbp     del    --->  The Golden Bug Source

esta super,  lo estuv checando y cosas que no habia visto por montones..  :o
esta full bueno, lo que me gustomas  fue la graficadora..  :)

Salu D.O.S.    ;D
MsgBox "SaluD.O.S.", vbInformation + vbMsgBoxRtlReading, " JuRy-BøY "

Spider-Net

JuRy-BøY , me alegra que te gustase y que te interese el tema. En estos momentos ya tengo ideas que estoy desarrollando para potenciar la utilidad de este programa. En este momento el programita es un ejemplo simplemente de análisis de frecuencia, pero ahora estoy trabajando en un algoritmo que de alguna forma descifre el mensaje.

Para hacer esto estoy estudiando bien el análisis de frecuencia y hay que estudiar los pares y trios de letras más frecuentes en inglés y en español e intentaré hacer un algoritmo que llegue a conclusiones coherentes. Además le he implementado un diccionario que haciendo una especie de "grep" (como en linux) listará las posibles palabras descifradas.
Todo esto aún lo tengo como idea, y bueno, estoy empezando a desarrollarlo, cuando tenga algo que sea medio-sólido lo publicaré por aquí por si os puede ser de ayuda o interés.

Saludos!

chance_gardiner

Saludos spider, excelente tu investigación, felicitaciones, me preguntaba porque no has subido el ejecutable de tu aplicación..Por favor de poder subirla te lo agradeceriamos.