Reto resuelto: Cifrario XOR con dos claves

Imagen de sqrmatrix
Enviado por sqrmatrix en

Foros: 

Por sqrmatrix

¡Resuelto! Enhorabuena a Agustín, LlamameX y el equipo criptoanalítico habitual

Hola a todos. Lo primero de todo, pedir disculpas por la ausencia tan larga. En mi defensa diré que no fue intencionada, sino consecuencia de ciertas circunstancias personales. En este tiempo no he podido dedicarme a ningún reto.

Bueno, y ahora que ya está aclarado todo, deciros que me he cambiado de bando, y ahora, en lugar de ponerme a atacar algún reto, voy a proponer uno. Como nunca he propuesto retos, no sé si éste estará a la altura. Ya veremos. Antes de plantearlo eché un vistazo por encima a los retos propuestos anteriormente, para no repetirlo, y no me pareció ver ninguno similar a éste, aunque no los miré a fondo (eran muchos). Espero que no se repita.

He ideado un cifrario que se puede definir como un XOR con doble clave. El cifrario es bastante simple.

Siendo este cifrario un XOR, necesita un alfabeto cuyo número de letras sea una potencia de 2. Utilizaremos el alfabeto de 32 letras "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ_.,:;".

Este cifrario dispone de dos claves. Una la llamaremos clave par, y la otra clave impar. Por cada letra que avancemos en el cifrado, elegiremos una de las claves. Si estamos situados en la letra i-ésima, consultaremos la letra (i-1)-ésima del mensaje original en claro. Si esta letra ocupa una posición par en el alfabeto, elegiremos la clave par, y si ocupa una posición impar en el alfabeto, elegiremos la clave impar. Cuando estemos en la primera letra del mensaje, como no tenemos letra (0-1)-ésima, tomaremos en este caso la clave par.

Para el cifrado, crearemos una copia del mensaje sobre la que trabajaremos. Es decir, inicialmente el criptograma será el mensaje claro.

Empezamos en la primera letra. Como estamos en la primera letra, tomamos la clave par. Enfrentamos las letras de la clave con las letras del criptograma, a partir de la primera letra, y hacemos XOR de las letras de la clave con las del criptograma, dejando el resultado en el criptograma.

Avanzamos a la posición 1 del criptograma. Consultamos la letra de la posición 0 del mensaje claro. Si ocupa una posición par en el alfabeto, tomamos la clave par, y si es impar, la clave impar. Colocamos las letras de la clave elegida encima de las correspondientes letras del criptograma, a partir de la posición 1, y repetimos la operación XOR como se hizo antes.

Pasamos a la siguiente posición y repetimos el proceso. Cuando nos acerquemos al final del criptograma, a la hora de colocar las letras de la clave sobre el criptograma, habrá letras que sobrepasen el final del criptograma. Estas letras se descartan.

Para descifrar, el procedimiento es el mismo. Cuando estemos sobre la primera letra, aplicamos la clave par. Al realizar la operación XOR, obtenemos la primera letra del mensaje, con la cual podemos determinar qué clave se eligió para la segunda letra, y así sucesivamente.

Para verlo mejor, se pondrá un ejemplo:

Mensaje: EN_UN_LUGAR_DE_LA_MANCHA
Clave par: SANCHO
Clave impar: QUIJOTE

Empezamos por la primera letra del criptograma. Elegimos la clave par, "SANCHO", y hacemos XOR de las letras de la clave enfrentadas a las letras del criptograma:

SANCHO
EN_UN_LUGAR_DE_LA_MANCHA
-----------------------------------
WNVWKTLUGAR_DE_LA_MANCHA

Pasamos a la segunda letra del criptograma. Ahora debemos consultar la primera letra del mensaje claro para ver qué posición ocupa en el alfabeto y así elegir la clave. La letra es la "E", y en el alfabeto ocupa la posición 4 (empezamos a contar desde 0), que es par, luego elegimos la clave par, "SANCHO", otra vez:

 SANCHO
WNVWKTLUGAR_DE_LA_MANCHA
-----------------------------------
W:VZISEUGAR_DE_LA_MANCHA

Estamos en la tercera letra del criptograma. Consultamos la segunda letra del mensaje claro, que es la "N", y vemos que ocupa la posición 13, que es impar, luego elegimos la clave impar, "QUIJOTE":

  QUIJOTE
W:VZISEUGAR_DE_LA_MANCHA
-----------------------------------
W:HOAZLBCAR_DE_LA_MANCHA

Seguimos aplicando este procedimiento. Al final, resultará que la clave sobrepasará el final del criptograma. Tenemos el caso:

                  QUIJOTE
W:H:EVÑL.X;SCX_SAMZATUMA
-----------------------------------
W:H:EVÑL.X;SCX_SAMLU..DT

Que, como se ve, se descarta la letra que sobra. En el siguiente caso se hace lo mismo:

                   SANCHO
W:H:EVÑL.X;SCX_SAMLU..DT
-----------------------------------
W:H:EVÑL.X;SCX_SAMLG.QBS

Es decir, se descartan las letras de la clave que sobrepasen el final del criptograma:

                    SANCHO
W:H:EVÑL.X;SCX_SAMLG.QBS
-----------------------------------
W:H:EVÑL.X;SCX_SAMLGOQMQ

Queda al final el criptograma:

W:H:EVÑL.X;SCX_SAMLGOAKI

Para descifrar, los pasos son casi idénticos. Empezamos por la primera letra y, como sabemos, se aplica la clave par:

SANCHO
W:H:EVÑL.X;SCX_SAMLGOAKI
-----------------------------------
E:K.DYÑL.X;SCX_SAMLGOAKI

En esta operación hemos obtenido la primera letra del mensaje, que nos permitirá decidir qué clave hay que elegir a continuación. En este caso, como antes, es la letra "E", que ocupa la posición 4 y, por tanto, debemos coger de nuevo la clave par "SANCHO":

 SANCHO
E:K.DYÑL.X;SCX_SAMLGOAKI
-----------------------------------
ENKQB:BL.X;SCX_SAMLGOAKI

Hemos obtenido la segunda letra, que es la "N", y que ocupa la posición 13 y, por tanto, tenemos que elegir la clave impar "QUIJOTE":

  QUIJOTE
ENKQB:BL.X;SCX_SAMLGOAKI
-----------------------------------
EN_EJWÑ;XX;SCX_SAMLGOAKI

Seguimos así. Los últimos pasos quedan:

                     QUIJOTE
EN_UN_LUGAR_DE_LA_MANSBY
-----------------------------------
EN_UN_LUGAR_DE_LA_MANCTQ
                      SANCHO
EN_UN_LUGAR_DE_LA_MANCTQ
-----------------------------------
EN_UN_LUGAR_DE_LA_MANCHQ
                       QUIJOTE
EN_UN_LUGAR_DE_LA_MANCHQ
-----------------------------------
EN_UN_LUGAR_DE_LA_MANCHA

Aquí está el enlace del reto: https://sites.google.com/site/sqrmatrix/criptograma.txt?attredirects=0&d=1. Son 79956 caracteres. No sé si será suficiente. Si alguien necesita más, sólo tiene que pedirlo.

No sé si este reto será demasiado fácil o demasiado difícil. Ya veremos según avancen las cosas.

Un saludo a todos.

No creo que sea fácil

Más bien creo que resultará un monstruo, porque cada letra se cifra chopocientas veces. Al menos el alfabeto no está desordenado, por esta vez. Le echaré un ojo en cuanto tenga un rato, que ahora no tengo tiempo, también por circunstancias personales, ni para el Sertori, donde, por cierto, te esperamos ansiosamente.

¡Nada!

¡No hemos conseguido nada!

Bueno, Eloy ha propuesto una solución completa, pero algunos tenemos serias dudas al respecto.

Hecho, si que se ha hecho: las transcripciones de los garabatos, que no es poco; básicamente las realizadas por Tokamak y Asier. Yo he intentado algo, pero con la poca vista que me queda, y las bombillas de bajo consumo que hay en la clínica, ni te cuento. También ha habido muy buenas aportaciones sobre el contexto, es decir, sobre quiénes eran los personajes implicados, y cómo se escribía en aquella época, hechos relevantes, etc. De hecho, los principales avances vendrán seguramente de los ataques a las firmas, salutaciones y despedidas, espero.

Yo ya estoy tratando de implementar tu monstruo. Creo que lo primero que te pediremos será la longitud de las p. claves, pero en su momento.

Parece bastante duro

El uso de las dos claves y la dependencia del mensaje en claro deja muy pocos (si es que hay alguno) resquicios por donde atacar. Demasiadas incógnitas. Como ya apunta Agustín, los carácteres centrales se cifrarán, como mínimo, tantas veces como la longitud de la clave más corta. Las únicas debilidades (por llamarles de alguna manera) que veo a priori són:

- El primer carácter se cifra una única vez y con la clave par.
- No hay desorden, cosa que abre la puerta a buscar palabras.
- Por frecuencias (aún no lo he mirado) seguramente una clave se usará más que la otra. Podrían buscarse grupos silábicos que se trataran con una única clave al principio del mensaje, donde habrá menos aplicaciones de xor.
- Las claves no evolucionan.

Ahora, no creo que pueda sacarse sin un esfuerzo titánico.

O sea

O sea, que si por ti fuera, aún sería peor. No, si ya te conocemos, ya....

Recuerda que un reto imposible acaba perdiendo todo interés. Supongo que en eso ha pensado el autor al renunciar a esos y a otros retortijones..., que diga..., retorcimientos.

Implementación

Este monstruito promete ya que emplea autocifra, al ser dependiente la clave a utilizar del propio texto.

No sé si se podrá descifrar. Pero me gusta mucho porque hace gala de una gran simplicidad funcional, y creo que he demostrado (hasta ahora) con TFTR, que eso es algo no está necesariamente reñido con la seguridad del algoritmo.

De momento os doy mi habitual implementación en VB. Hasta donde he podido probar con el ejemplo, funciona bien.

A la función "cifrar", le pasamos: la clave impar, la clave par, el texto en claro o el cifrado sgún el último parámetro: "C", si es cifrar, y "D" si queremos descifrar. Obviamente devuelve el texto en claro si desciframos, o el cifrado en caso contrario.

Function cifrar(clave_i, clave_i2, entrada_i, cifrar_descifrar)
 
Dim entrada() As String
Dim entradap() As String
Dim clave()
Dim clave2()
 
ReDim Preserve entrada(Len(entrada_i))
ReDim Preserve entradap(Len(entrada_i))
 
ReDim Preserve clave(Len(clave_i))
ReDim Preserve clave2(Len(clave_i2))
 
Dim i As Integer
 
j = -1
For i = 1 To Len(entrada_i)
 j = j + 1
 entrada(j) = Mid$(entrada_i, i, 1)
 entradap(j) = Mid$(entrada_i, i, 1)
 
Next i
 
jj = -1
For i = 1 To Len(clave_i)
 jj = jj + 1
 clave(jj) = Mid$(clave_i, i, 1)
Next i
 
jjj = -1
For i = 1 To Len(clave_i2)
 jjj = jjj + 1
 clave2(jjj) = Mid$(clave_i2, i, 1)
Next i
 
i = 0
g = 0
 For x = 0 To jjj
   entradap(g) = caracter(inv_caracter(entradap(g)) Xor inv_caracter(clave2(x)))
   If g + 1 > j Then Exit For
   g = g + 1
 Next x
 
z = 1
 
 For i = 0 To j
  g = z
 
  If cifrar_descifrar = "C" Then
    par = es_par(entrada(i))
      Else
    par = es_par(entradap(i))
  End If
 
  If par Then
        For x = 0 To jjj
           entradap(g) = caracter(inv_caracter(entradap(g)) Xor inv_caracter(clave2(x)))
           If g + 1 > j Then Exit For
           g = g + 1
        Next x
     Else
        For x = 0 To jj
           entradap(g) = caracter(inv_caracter(entradap(g)) Xor inv_caracter(clave(x)))
           If g + 1 > j Then Exit For
           g = g + 1
        Next x
  End If
  z = z + 1
 
Next i
 
cifrar = ""
For i = 0 To j
 cifrar = cifrar & entradap(i)
Next i
 
End Function
Function caracter(numero)
  caracteres = Array("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", "_", ".", ",", ":", ";")
  caracter = caracteres(numero)
End Function
Function inv_caracter(caracter)
  caracteres = Array("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", "_", ".", ",", ":", ";")
 
  For i = 0 To 31
   If caracteres(i) = caracter Then inv_caracter = i: Exit Function
  Next i
End Function
Function es_par(letra As String) As Boolean
    caracteres = Array("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", "_", ".", ",", ":", ";")
 
  For i = 0 To 31
   If caracteres(i) = letra Then y = i: Exit For
  Next i
 
  If y Mod 2 = 0 Then
     es_par = True
   Else
     es_par = False
  End If
 
End Function

Mas de lo mismo...

... pero en Python. Temo no poder ayudar en el descifrado del mensaje, pero si que puedo contribuïr con algo de código fuente. Este algoritmo se podría optimizar *bastante*. Ahora solo podemos cifrar/descifrar 2.500 veces el texto propuesto por el artículo en un segundo. Lo digo por si alguien quiere usar éste código para intentar algún ataque de fuerza bruta, que avise e intentaré optimizarlo lo mas que pueda.

Nótese que todos los strings se deben especificar con la notación u"PRUEBA" y no "PRUEBA" (nótese la "u" del principio). Esta "u" significa UNICODE, necesario para cuando se trata con secuencias no ASCI en Python (como el caráter Ñ de los coj**es). También es imprescindible la primera línea comentada del programa, ya que se instruye al intérprete de Python que el código fuente del programa contiene caráteres Unicode.

Espero que les sea útil. Un saludo.

# -*- coding: utf8 -*-
# Copyright (C) 2012  Jan Carreras Prat
# License: GPL3. See http://www.gnu.org/licenses
 
ALPHA = u"ABCDEFGHIJKLMNÑOPQRSTUVWXYZ_.,:;"
 
def xor(a, b):
    return ALPHA[ (ALPHA.find(a) ^ ALPHA.find(b)) % 35]
 
def XOR2(texto_en_claro, clave_par, clave_impar, descifrar=False):
    cifrado = list(texto_en_claro)
    for n in range(len(cifrado)):
        if n == 0:
            clave = clave_par
        elif descifrar:
            clave = clave_par if ALPHA.index(cifrado[n-1]) % 2 == 0 else clave_impar
        else:
            clave = clave_par if ALPHA.index(texto_en_claro[n-1]) % 2 == 0 else clave_impar
 
        for index, caracter_clave in enumerate(clave):
            try: cifrado[n+index] = xor(cifrado[n+index], caracter_clave)
            except: break
 
    return u''.join(cifrado)
 
def XOR2_descifrar(texto_en_claro, clave_par, clave_impar):
    return XOR2(texto_cifrado, clave_par, clave_impar, descifrar=True)
 
 
TEXTO_EN_CLARO = u"EN_UN_LUGAR_DE_LA_MANCHA"
texto_cifrado = XOR2(TEXTO_EN_CLARO, u"SANCHO", u"QUIJOTE")
print "Texto cifrado: ", texto_cifrado
texto_en_claro = XOR2_descifrar(texto_cifrado, u"SANCHO", u"QUIJOTE")
print "Texto en claro: ", texto_en_claro
 
assert TEXTO_EN_CLARO == texto_en_claro

El XOR no es lo que parece

Sumándome a la búsqueda de debilidades de LlamameX, hay que tener encuenta que al recifrar n veces con XOR hay una probabilidad no nula de que se acabe dejando el carácter multicifrado con el mismo valor que tenía en el texo plano, especialmente, pero no solo, creo, si las claves tienen letras en común, aunque sea en distintas posiciones. Todo eso no significa que sea fácil explotar esta supuesta debilidad, ya que la probabilidad de que le ocurre eso a varios caracteres contiguos es muy pequeña. De hecho, un vistazo al texto cifrado no muestra ninguna agrupación de caracteres que pueda parecer un fragmento de palabra. De todos modos, un primer ataque podría ser determinar los n-gramas del cifrado, hasta n=4, por ejemplo, y ver si se encuentra algo.

Por cierto, que fiera Tokamak, con la implementación ya hecha. Yo aún estaba programando con la lengua doblada entre los dientes, y emitiendo el clásico ruidito "¡Gñññ!" de la torpeza. Menos mal que esta actividad -la de la lengua, no la de programar- es habitual en la clínica, y no llama la atención de los vigilantes.

No servirá de nada

No servirá de nada, pero como no se me ocurre nada mejor, he vuelto a lo mío, que son la tablas. En la suposicion de que los XOR múltiples puedan dejar la letra en claro, y suponiendo -que ya es suponer- que esto pueda ocurrir en posiciones correlativas, he obtenido los digramas del cifrado, con las siguientes reglas:

1. No se cuentan los digramas que contengan signos de puntuación o el separador
2. No se cuentan los digramas "casuales" que sólo aparezcan una vez

Y obtengo esto:

	N-GRAMAS en DOBLEXOR de Sqrmatrix						
 
	Digramas						
	Alfabético				Por frecuencias		
1	AA	157	0,23		WE	263	0,39
2	AB	103	0,15		ZM	251	0,37
3	AC	83	0,12		FF	245	0,37
4	AD	104	0,16		NM	243	0,36
5	AE	142	0,21		FJ	232	0,35
6	AF	126	0,19		JM	220	0,33
7	AG	77	0,11		AW	216	0,32
8	AH	79	0,12		JN	213	0,32
9	AI	127	0,19		BI	212	0,32
10	AJ	123	0,18		SW	212	0,32
11	AK	88	0,13		BF	208	0,31
12	AL	72	0,11		RV	208	0,31
13	AM	96	0,14		SZ	208	0,31
14	AN	96	0,14		EE	206	0,31
15	AÑ	83	0,12		MW	204	0,30
16	AO	101	0,15		JB	202	0,30
17	AP	48	0,07		MA	201	0,30
18	AQ	54	0,08		MN	201	0,30
19	AR	138	0,21		NB	198	0,30
20	AS	176	0,26		RI	198	0,30
21	AT	106	0,16		MJ	195	0,29
22	AU	132	0,20		SF	192	0,29
23	AV	155	0,23		VF	192	0,29
24	AW	216	0,32		WJ	192	0,29
25	AX	93	0,14		FZ	187	0,28
26	AY	138	0,21		BZ	184	0,27
27	AZ	138	0,21		VB	184	0,27
28	BA	124	0,19		IZ	182	0,27
29	BB	150	0,22		FN	181	0,27
30	BC	87	0,13		FV	181	0,27
31	BD	54	0,08		IM	180	0,27
32	BE	121	0,18		VS	180	0,27
33	BF	208	0,31		WN	180	0,27
34	BG	113	0,17		EM	179	0,27
35	BH	119	0,18		RF	178	0,27
36	BI	212	0,32		SJ	178	0,27
37	BJ	164	0,24		ZF	178	0,27
38	BK	99	0,15		ZR	178	0,27
39	BL	82	0,12		KN	177	0,26
40	BM	142	0,21		NZ	177	0,26
41	BN	135	0,20		AS	176	0,26
42	BÑ	67	0,10		EW	174	0,26
43	BO	85	0,13		MV	174	0,26
44	BP	101	0,15		NR	174	0,26
45	BQ	71	0,11		RJ	174	0,26
46	BR	133	0,20		WZ	173	0,26
47	BS	100	0,15		IV	172	0,26
48	BT	55	0,08		EN	171	0,26
49	BU	69	0,10		TM	171	0,26
50	BV	169	0,25		ZI	170	0,25
51	BW	106	0,16		BV	169	0,25
52	BX	66	0,10		EV	169	0,25
53	BY	98	0,15		II	169	0,25
54	BZ	184	0,27		WW	168	0,25
55	CA	91	0,14		MI	167	0,25
56	CB	89	0,13		VW	167	0,25
57	CC	51	0,08		ZV	167	0,25
58	CD	35	0,05		SS	166	0,25
59	CE	80	0,12		CJ	165	0,25
60	CF	150	0,22		VN	165	0,25
61	CG	38	0,06		WA	165	0,25
62	CH	29	0,04		BJ	164	0,24
63	CI	112	0,17		IS	164	0,24
64	CJ	165	0,25		MB	164	0,24
65	CK	54	0,08		RB	164	0,24
66	CL	35	0,05		VI	164	0,24
67	CM	101	0,15		JA	162	0,24
68	CN	84	0,13		WK	162	0,24
69	CÑ	16	0,02		WM	162	0,24
70	CO	25	0,04		WV	161	0,24
71	CP	47	0,07		KF	160	0,24
72	CQ	38	0,06		RE	160	0,24
73	CR	91	0,14		VZ	160	0,24
74	CS	61	0,09		EJ	159	0,24
75	CT	44	0,07		JE	159	0,24
76	CU	24	0,04		VM	159	0,24
77	CV	75	0,11		VJ	158	0,24
78	CW	78	0,12		AA	157	0,23
79	CX	27	0,04		ES	157	0,23
80	CY	37	0,06		JJ	157	0,23
81	CZ	44	0,07		EA	156	0,23
82	DA	84	0,13		RN	156	0,23
83	DB	66	0,10		RW	156	0,23
84	DC	41	0,06		AV	155	0,23
85	DD	48	0,07		IJ	155	0,23
86	DE	89	0,13		JF	154	0,23
87	DF	107	0,16		MS	154	0,23
88	DG	34	0,05		ZJ	154	0,23
89	DH	28	0,04		FS	152	0,23
90	DI	104	0,16		FU	152	0,23
91	DJ	119	0,18		JR	152	0,23
92	DK	32	0,05		JV	152	0,23
93	DL	47	0,07		MÑ	152	0,23
94	DM	64	0,10		NQ	151	0,23
95	DN	74	0,11		ZB	151	0,23
96	DÑ	64	0,10		BB	150	0,22
97	DO	65	0,10		CF	150	0,22
98	DP	30	0,04		XR	150	0,22
99	DQ	57	0,09		JU	149	0,22
100	DR	85	0,13		MQ	149	0,22
101	DS	83	0,12		ÑR	149	0,22
102	DT	34	0,05		NJ	148	0,22
103	DU	44	0,07		NW	148	0,22
104	DV	93	0,14		QF	148	0,22
105	DW	102	0,15		IN	147	0,22
106	DX	34	0,05		JS	147	0,22
107	DY	86	0,13		QJ	147	0,22
108	DZ	108	0,16		VR	147	0,22
109	EA	156	0,23		IA	146	0,22
110	EB	116	0,17		SE	146	0,22
111	EC	75	0,11		EZ	145	0,22
112	ED	60	0,09		FE	145	0,22
113	EE	206	0,31		IB	145	0,22
114	EF	139	0,21		RR	145	0,22
115	EG	84	0,13		VV	144	0,22
116	EH	98	0,15		EK	143	0,21
117	EI	131	0,20		FR	143	0,21
118	EJ	159	0,24		NV	143	0,21
119	EK	143	0,21		TW	143	0,21
120	EL	105	0,16		WB	143	0,21
121	EM	179	0,27		AE	142	0,21
122	EN	171	0,26		BM	142	0,21
123	EÑ	79	0,12		ZC	141	0,21
124	EO	41	0,06		LR	140	0,21
125	EP	87	0,13		EF	139	0,21
126	EQ	64	0,10		FI	139	0,21
127	ER	116	0,17		MX	139	0,21
128	ES	157	0,23		AR	138	0,21
129	ET	69	0,10		AY	138	0,21
130	EU	99	0,15		AZ	138	0,21
131	EV	169	0,25		HW	138	0,21
132	EW	174	0,26		LS	138	0,21
133	EX	101	0,15		MR	138	0,21
134	EY	70	0,10		WI	138	0,21
135	EZ	145	0,22		ÑV	137	0,20
136	FA	136	0,20		SA	137	0,20
137	FB	119	0,18		FA	136	0,20
138	FC	112	0,17		OB	136	0,20
139	FD	118	0,18		UV	136	0,20
140	FE	145	0,22		BN	135	0,20
141	FF	245	0,37		GZ	135	0,20
142	FG	101	0,15		JD	135	0,20
143	FH	87	0,13		ME	135	0,20
144	FI	139	0,21		ZD	135	0,20
145	FJ	232	0,35		JI	134	0,20
146	FK	116	0,17		JW	134	0,20
147	FL	83	0,12		XS	134	0,20
148	FM	132	0,20		BR	133	0,20
149	FN	181	0,27		IF	133	0,20
150	FÑ	89	0,13		NA	133	0,20
151	FO	113	0,17		NI	133	0,20
152	FP	108	0,16		AU	132	0,20
153	FQ	94	0,14		FM	132	0,20
154	FR	143	0,21		HM	132	0,20
155	FS	152	0,23		TF	132	0,20
156	FT	123	0,18		EI	131	0,20
157	FU	152	0,23		IW	131	0,20
158	FV	181	0,27		NN	131	0,20
159	FW	124	0,19		RG	131	0,20
160	FX	129	0,19		ZZ	131	0,20
161	FY	80	0,12		RA	130	0,19
162	FZ	187	0,28		UZ	130	0,19
163	GA	65	0,10		FX	129	0,19
164	GB	73	0,11		IL	129	0,19
165	GC	55	0,08		SM	129	0,19
166	GD	46	0,07		VE	129	0,19
167	GE	66	0,10		IY	128	0,19
168	GF	112	0,17		MF	128	0,19
169	GG	45	0,07		NS	128	0,19
170	GH	22	0,03		SR	128	0,19
171	GI	68	0,10		YN	128	0,19
172	GJ	62	0,09		AI	127	0,19
173	GK	40	0,06		MZ	127	0,19
174	GL	37	0,06		PZ	127	0,19
175	GM	95	0,14		SY	127	0,19
176	GN	75	0,11		WF	127	0,19
177	GÑ	56	0,08		AF	126	0,19
178	GO	43	0,06		NF	126	0,19
179	GP	23	0,03		SI	126	0,19
180	GQ	17	0,03		US	126	0,19
181	GR	119	0,18		BA	124	0,19
182	GS	122	0,18		FW	124	0,19
183	GT	68	0,10		JC	124	0,19
184	GU	22	0,03		QA	124	0,19
185	GV	84	0,13		AJ	123	0,18
186	GW	104	0,16		FT	123	0,18
187	GX	22	0,03		IR	123	0,18
188	GY	43	0,06		WR	123	0,18
189	GZ	135	0,20		GS	122	0,18
190	HA	92	0,14		MM	122	0,18
191	HB	76	0,11		RQ	122	0,18
192	HC	15	0,02		BE	121	0,18
193	HD	25	0,04		HI	121	0,18
194	HE	80	0,12		IÑ	121	0,18
195	HF	116	0,17		ND	121	0,18
196	HG	44	0,07		ÑM	121	0,18
197	HH	52	0,08		YF	121	0,18
198	HI	121	0,18		ZN	121	0,18
199	HJ	65	0,10		ZW	121	0,18
200	HK	43	0,06		ZX	121	0,18
201	HL	25	0,04		YR	120	0,18
202	HM	132	0,20		BH	119	0,18
203	HN	76	0,11		DJ	119	0,18
204	HÑ	25	0,04		FB	119	0,18
205	HO	23	0,03		GR	119	0,18
206	HP	53	0,08		JZ	119	0,18
207	HQ	38	0,06		RM	119	0,18
208	HR	48	0,07		RZ	119	0,18
209	HS	69	0,10		VU	119	0,18
210	HT	25	0,04		WS	119	0,18
211	HU	27	0,04		FD	118	0,18
212	HV	82	0,12		NP	118	0,18
213	HW	138	0,21		ZA	118	0,18
214	HX	24	0,04		MO	117	0,17
215	HY	29	0,04		PF	117	0,17
216	HZ	98	0,15		UW	117	0,17
217	IA	146	0,22		EB	116	0,17
218	IB	145	0,22		ER	116	0,17
219	IC	93	0,14		FK	116	0,17
220	ID	67	0,10		HF	116	0,17
221	IE	115	0,17		PW	116	0,17
222	IF	133	0,20		WH	116	0,17
223	IG	93	0,14		IE	115	0,17
224	IH	81	0,12		JX	115	0,17
225	II	169	0,25		WD	115	0,17
226	IJ	155	0,23		MP	114	0,17
227	IK	104	0,16		SV	114	0,17
228	IL	129	0,19		BG	113	0,17
229	IM	180	0,27		FO	113	0,17
230	IN	147	0,22		KT	113	0,17
231	IÑ	121	0,18		NE	113	0,17
232	IO	95	0,14		ÑS	113	0,17
233	IP	90	0,13		QI	113	0,17
234	IQ	91	0,14		QV	113	0,17
235	IR	123	0,18		YM	113	0,17
236	IS	164	0,24		ZÑ	113	0,17
237	IT	71	0,11		ZS	113	0,17
238	IU	66	0,10		CI	112	0,17
239	IV	172	0,26		FC	112	0,17
240	IW	131	0,20		GF	112	0,17
241	IX	57	0,09		MC	112	0,17
242	IY	128	0,19		PE	112	0,17
243	IZ	182	0,27		WG	112	0,17
244	JA	162	0,24		VG	111	0,17
245	JB	202	0,30		JK	110	0,16
246	JC	124	0,19		KE	110	0,16
247	JD	135	0,20		KI	110	0,16
248	JE	159	0,24		VX	110	0,16
249	JF	154	0,23		ZE	110	0,16
250	JG	70	0,10		SX	109	0,16
251	JH	73	0,11		DZ	108	0,16
252	JI	134	0,20		FP	108	0,16
253	JJ	157	0,23		VA	108	0,16
254	JK	110	0,16		DF	107	0,16
255	JL	83	0,12		OI	107	0,16
256	JM	220	0,33		TN	107	0,16
257	JN	213	0,32		XZ	107	0,16
258	JÑ	81	0,12		YA	107	0,16
259	JO	76	0,11		AT	106	0,16
260	JP	96	0,14		BW	106	0,16
261	JQ	99	0,15		ST	106	0,16
262	JR	152	0,23		WL	106	0,16
263	JS	147	0,22		YB	106	0,16
264	JT	64	0,10		ZO	106	0,16
265	JU	149	0,22		ZQ	106	0,16
266	JV	152	0,23		EL	105	0,16
267	JW	134	0,20		NG	105	0,16
268	JX	115	0,17		QW	105	0,16
269	JY	102	0,15		ZU	105	0,16
270	JZ	119	0,18		AD	104	0,16
271	KA	103	0,15		DI	104	0,16
272	KB	95	0,14		GW	104	0,16
273	KC	30	0,04		IK	104	0,16
274	KD	45	0,07		VH	104	0,16
275	KE	110	0,16		AB	103	0,15
276	KF	160	0,24		KA	103	0,15
277	KG	17	0,03		SÑ	103	0,15
278	KH	40	0,06		DW	102	0,15
279	KI	110	0,16		JY	102	0,15
280	KJ	101	0,15		PM	102	0,15
281	KK	36	0,05		TJ	102	0,15
282	KL	33	0,05		VK	102	0,15
283	KM	82	0,12		VL	102	0,15
284	KN	177	0,26		XV	102	0,15
285	KÑ	19	0,03		AO	101	0,15
286	KO	37	0,06		BP	101	0,15
287	KP	34	0,05		CM	101	0,15
288	KQ	51	0,08		EX	101	0,15
289	KR	80	0,12		FG	101	0,15
290	KS	79	0,12		KJ	101	0,15
291	KT	113	0,17		YE	101	0,15
292	KU	34	0,05		BS	100	0,15
293	KV	77	0,11		ÑW	100	0,15
294	KW	60	0,09		SB	100	0,15
295	KX	35	0,05		TZ	100	0,15
296	KY	45	0,07		UR	100	0,15
297	KZ	71	0,11		VT	100	0,15
298	LA	92	0,14		BK	99	0,15
299	LB	75	0,11		EU	99	0,15
300	LC	19	0,03		JQ	99	0,15
301	LD	34	0,05		OE	99	0,15
302	LE	91	0,14		RY	99	0,15
303	LF	39	0,06		BY	98	0,15
304	LG	50	0,07		EH	98	0,15
305	LH	45	0,07		HZ	98	0,15
306	LI	61	0,09		SK	98	0,15
307	LJ	58	0,09		VC	98	0,15
308	LK	43	0,06		WP	98	0,15
309	LL	42	0,06		XM	98	0,15
310	LM	95	0,14		OW	97	0,14
311	LN	95	0,14		QE	97	0,14
312	LÑ	36	0,05		AM	96	0,14
313	LO	22	0,03		AN	96	0,14
314	LP	52	0,08		JP	96	0,14
315	LQ	23	0,03		MK	96	0,14
316	LR	140	0,21		GM	95	0,14
317	LS	138	0,21		IO	95	0,14
318	LT	15	0,02		KB	95	0,14
319	LU	34	0,05		LM	95	0,14
320	LV	95	0,14		LN	95	0,14
321	LW	85	0,13		LV	95	0,14
322	LX	22	0,03		LZ	95	0,14
323	LY	9	0,01		MT	95	0,14
324	LZ	95	0,14		WÑ	95	0,14
325	MA	201	0,30		WY	95	0,14
326	MB	164	0,24		FQ	94	0,14
327	MC	112	0,17		ÑN	94	0,14
328	MD	82	0,12		QR	94	0,14
329	ME	135	0,20		SN	94	0,14
330	MF	128	0,19		AX	93	0,14
331	MG	85	0,13		DV	93	0,14
332	MH	62	0,09		IC	93	0,14
333	MI	167	0,25		IG	93	0,14
334	MJ	195	0,29		NH	93	0,14
335	MK	96	0,14		ZP	93	0,14
336	ML	54	0,08		HA	92	0,14
337	MM	122	0,18		LA	92	0,14
338	MN	201	0,30		MY	92	0,14
339	MÑ	152	0,23		PS	92	0,14
340	MO	117	0,17		RS	92	0,14
341	MP	114	0,17		SG	92	0,14
342	MQ	149	0,22		CA	91	0,14
343	MR	138	0,21		CR	91	0,14
344	MS	154	0,23		IQ	91	0,14
345	MT	95	0,14		LE	91	0,14
346	MU	91	0,14		MU	91	0,14
347	MV	174	0,26		NÑ	91	0,14
348	MW	204	0,30		UB	91	0,14
349	MX	139	0,21		VQ	91	0,14
350	MY	92	0,14		VY	91	0,14
351	MZ	127	0,19		IP	90	0,13
352	NA	133	0,20		CB	89	0,13
353	NB	198	0,30		DE	89	0,13
354	NC	86	0,13		FÑ	89	0,13
355	ND	121	0,18		NK	89	0,13
356	NE	113	0,17		ÑJ	89	0,13
357	NF	126	0,19		AK	88	0,13
358	NG	105	0,16		ÑB	88	0,13
359	NH	93	0,14		RH	88	0,13
360	NI	133	0,20		VD	88	0,13
361	NJ	148	0,22		BC	87	0,13
362	NK	89	0,13		EP	87	0,13
363	NL	71	0,11		FH	87	0,13
364	NM	243	0,36		PI	87	0,13
365	NN	131	0,20		PR	87	0,13
366	NÑ	91	0,14		YJ	87	0,13
367	NO	82	0,12		YS	87	0,13
368	NP	118	0,18		DY	86	0,13
369	NQ	151	0,23		NC	86	0,13
370	NR	174	0,26		OA	86	0,13
371	NS	128	0,19		OM	86	0,13
372	NT	62	0,09		RT	86	0,13
373	NU	66	0,10		XN	86	0,13
374	NV	143	0,21		BO	85	0,13
375	NW	148	0,22		DR	85	0,13
376	NX	79	0,12		LW	85	0,13
377	NY	67	0,10		MG	85	0,13
378	NZ	177	0,26		PJ	85	0,13
379	ÑA	77	0,11		QN	85	0,13
380	ÑB	88	0,13		TE	85	0,13
381	ÑC	19	0,03		XA	85	0,13
382	ÑD	30	0,04		CN	84	0,13
383	ÑE	80	0,12		DA	84	0,13
384	ÑF	54	0,08		EG	84	0,13
385	ÑG	46	0,07		GV	84	0,13
386	ÑH	56	0,08		WT	84	0,13
387	ÑI	69	0,10		AC	83	0,12
388	ÑJ	89	0,13		AÑ	83	0,12
389	ÑK	51	0,08		DS	83	0,12
390	ÑL	21	0,03		FL	83	0,12
391	ÑM	121	0,18		JL	83	0,12
392	ÑN	94	0,14		RL	83	0,12
393	ÑÑ	20	0,03		VO	83	0,12
394	ÑO	51	0,08		BL	82	0,12
395	ÑP	36	0,05		HV	82	0,12
396	ÑQ	45	0,07		KM	82	0,12
397	ÑR	149	0,22		MD	82	0,12
398	ÑS	113	0,17		NO	82	0,12
399	ÑT	24	0,04		SD	82	0,12
400	ÑU	20	0,03		UÑ	82	0,12
401	ÑV	137	0,20		IH	81	0,12
402	ÑW	100	0,15		JÑ	81	0,12
403	ÑX	26	0,04		QM	81	0,12
404	ÑY	33	0,05		UF	81	0,12
405	ÑZ	69	0,10		UT	81	0,12
406	OA	86	0,13		WU	81	0,12
407	OB	136	0,20		XF	81	0,12
408	OC	75	0,11		CE	80	0,12
409	OD	65	0,10		FY	80	0,12
410	OE	99	0,15		HE	80	0,12
411	OF	77	0,11		KR	80	0,12
412	OG	30	0,04		ÑE	80	0,12
413	OH	27	0,04		RD	80	0,12
414	OI	107	0,16		UE	80	0,12
415	OJ	74	0,11		XJ	80	0,12
416	OK	18	0,03		AH	79	0,12
417	OL	23	0,03		EÑ	79	0,12
418	OM	86	0,13		KS	79	0,12
419	ON	79	0,12		NX	79	0,12
420	OÑ	30	0,04		ON	79	0,12
421	OO	30	0,04		RÑ	79	0,12
422	OP	30	0,04		SU	79	0,12
423	OQ	23	0,03		UI	79	0,12
424	OR	50	0,07		XE	79	0,12
425	OS	74	0,11		CW	78	0,12
426	OT	25	0,04		RK	78	0,12
427	OU	47	0,07		RO	78	0,12
428	OV	67	0,10		AG	77	0,11
429	OW	97	0,14		KV	77	0,11
430	OX	31	0,05		ÑA	77	0,11
431	OY	46	0,07		OF	77	0,11
432	OZ	58	0,09		QB	77	0,11
433	PA	48	0,07		RC	77	0,11
434	PB	62	0,09		SL	77	0,11
435	PC	41	0,06		HB	76	0,11
436	PD	37	0,06		HN	76	0,11
437	PE	112	0,17		JO	76	0,11
438	PF	117	0,17		PV	76	0,11
439	PG	20	0,03		RU	76	0,11
440	PH	32	0,05		SH	76	0,11
441	PI	87	0,13		WQ	76	0,11
442	PJ	85	0,13		XW	76	0,11
443	PK	29	0,04		CV	75	0,11
444	PL	26	0,04		EC	75	0,11
445	PM	102	0,15		GN	75	0,11
446	PN	66	0,10		LB	75	0,11
447	PÑ	45	0,07		OC	75	0,11
448	PO	18	0,03		TI	75	0,11
449	PP	29	0,04		UM	75	0,11
450	PQ	31	0,05		ZG	75	0,11
451	PR	87	0,13		ZK	75	0,11
452	PS	92	0,14		DN	74	0,11
453	PT	28	0,04		OJ	74	0,11
454	PU	38	0,06		OS	74	0,11
455	PV	76	0,11		SO	74	0,11
456	PW	116	0,17		GB	73	0,11
457	PX	49	0,07		JH	73	0,11
458	PY	17	0,03		SQ	73	0,11
459	PZ	127	0,19		WX	73	0,11
460	QA	124	0,19		XB	73	0,11
461	QB	77	0,11		AL	72	0,11
462	QC	24	0,04		VP	72	0,11
463	QD	52	0,08		ZL	72	0,11
464	QE	97	0,14		ZT	72	0,11
465	QF	148	0,22		BQ	71	0,11
466	QG	28	0,04		IT	71	0,11
467	QH	25	0,04		KZ	71	0,11
468	QI	113	0,17		NL	71	0,11
469	QJ	147	0,22		SC	71	0,11
470	QK	45	0,07		TV	71	0,11
471	QL	23	0,03		ZY	71	0,11
472	QM	81	0,12		EY	70	0,10
473	QN	85	0,13		JG	70	0,10
474	QÑ	29	0,04		YV	70	0,10
475	QO	25	0,04		YW	70	0,10
476	QP	45	0,07		BU	69	0,10
477	QQ	36	0,05		ET	69	0,10
478	QR	94	0,14		HS	69	0,10
479	QS	60	0,09		ÑI	69	0,10
480	QT	32	0,05		ÑZ	69	0,10
481	QU	33	0,05		GI	68	0,10
482	QV	113	0,17		GT	68	0,10
483	QW	105	0,16		TB	68	0,10
484	QX	28	0,04		WC	68	0,10
485	QY	21	0,03		YI	68	0,10
486	QZ	55	0,08		BÑ	67	0,10
487	RA	130	0,19		ID	67	0,10
488	RB	164	0,24		NY	67	0,10
489	RC	77	0,11		OV	67	0,10
490	RD	80	0,12		RP	67	0,10
491	RE	160	0,24		TA	67	0,10
492	RF	178	0,27		BX	66	0,10
493	RG	131	0,20		DB	66	0,10
494	RH	88	0,13		GE	66	0,10
495	RI	198	0,30		IU	66	0,10
496	RJ	174	0,26		NU	66	0,10
497	RK	78	0,12		PN	66	0,10
498	RL	83	0,12		XI	66	0,10
499	RM	119	0,18		DO	65	0,10
500	RN	156	0,23		GA	65	0,10
501	RÑ	79	0,12		HJ	65	0,10
502	RO	78	0,12		OD	65	0,10
503	RP	67	0,10		YX	65	0,10
504	RQ	122	0,18		DM	64	0,10
505	RR	145	0,22		DÑ	64	0,10
506	RS	92	0,14		EQ	64	0,10
507	RT	86	0,13		JT	64	0,10
508	RU	76	0,11		RX	64	0,10
509	RV	208	0,31		GJ	62	0,09
510	RW	156	0,23		MH	62	0,09
511	RX	64	0,10		NT	62	0,09
512	RY	99	0,15		PB	62	0,09
513	RZ	119	0,18		TS	62	0,09
514	SA	137	0,20		YZ	62	0,09
515	SB	100	0,15		CS	61	0,09
516	SC	71	0,11		LI	61	0,09
517	SD	82	0,12		ZH	61	0,09
518	SE	146	0,22		ED	60	0,09
519	SF	192	0,29		KW	60	0,09
520	SG	92	0,14		QS	60	0,09
521	SH	76	0,11		YD	60	0,09
522	SI	126	0,19		UJ	59	0,09
523	SJ	178	0,27		UN	59	0,09
524	SK	98	0,15		VÑ	59	0,09
525	SL	77	0,11		LJ	58	0,09
526	SM	129	0,19		OZ	58	0,09
527	SN	94	0,14		XL	58	0,09
528	SÑ	103	0,15		DQ	57	0,09
529	SO	74	0,11		IX	57	0,09
530	SP	51	0,08		UA	57	0,09
531	SQ	73	0,11		WO	57	0,09
532	SR	128	0,19		GÑ	56	0,08
533	SS	166	0,25		ÑH	56	0,08
534	ST	106	0,16		TR	56	0,08
535	SU	79	0,12		BT	55	0,08
536	SV	114	0,17		GC	55	0,08
537	SW	212	0,32		QZ	55	0,08
538	SX	109	0,16		AQ	54	0,08
539	SY	127	0,19		BD	54	0,08
540	SZ	208	0,31		CK	54	0,08
541	TA	67	0,10		ML	54	0,08
542	TB	68	0,10		ÑF	54	0,08
543	TC	17	0,03		HP	53	0,08
544	TD	23	0,03		TL	53	0,08
545	TE	85	0,13		YT	53	0,08
546	TF	132	0,20		HH	52	0,08
547	TG	32	0,05		LP	52	0,08
548	TH	47	0,07		QD	52	0,08
549	TI	75	0,11		CC	51	0,08
550	TJ	102	0,15		KQ	51	0,08
551	TK	29	0,04		ÑK	51	0,08
552	TL	53	0,08		ÑO	51	0,08
553	TM	171	0,26		SP	51	0,08
554	TN	107	0,16		LG	50	0,07
555	TÑ	22	0,03		OR	50	0,07
556	TO	38	0,06		PX	49	0,07
557	TP	23	0,03		UC	49	0,07
558	TQ	46	0,07		AP	48	0,07
559	TR	56	0,08		DD	48	0,07
560	TS	62	0,09		HR	48	0,07
561	TT	18	0,03		PA	48	0,07
562	TU	28	0,04		CP	47	0,07
563	TV	71	0,11		DL	47	0,07
564	TW	143	0,21		OU	47	0,07
565	TX	32	0,05		TH	47	0,07
566	TY	29	0,04		GD	46	0,07
567	TZ	100	0,15		ÑG	46	0,07
568	UA	57	0,09		OY	46	0,07
569	UB	91	0,14		TQ	46	0,07
570	UC	49	0,07		XD	46	0,07
571	UD	35	0,05		XQ	46	0,07
572	UE	80	0,12		GG	45	0,07
573	UF	81	0,12		KD	45	0,07
574	UG	36	0,05		KY	45	0,07
575	UH	24	0,04		LH	45	0,07
576	UI	79	0,12		ÑQ	45	0,07
577	UJ	59	0,09		PÑ	45	0,07
578	UK	17	0,03		QK	45	0,07
579	UL	27	0,04		QP	45	0,07
580	UM	75	0,11		CT	44	0,07
581	UN	59	0,09		CZ	44	0,07
582	UÑ	82	0,12		DU	44	0,07
583	UO	43	0,06		HG	44	0,07
584	UP	17	0,03		GO	43	0,06
585	UQ	20	0,03		GY	43	0,06
586	UR	100	0,15		HK	43	0,06
587	US	126	0,19		LK	43	0,06
588	UT	81	0,12		UO	43	0,06
589	UU	29	0,04		YO	43	0,06
590	UV	136	0,20		LL	42	0,06
591	UW	117	0,17		DC	41	0,06
592	UX	40	0,06		EO	41	0,06
593	UY	41	0,06		PC	41	0,06
594	UZ	130	0,19		UY	41	0,06
595	VA	108	0,16		XK	41	0,06
596	VB	184	0,27		GK	40	0,06
597	VC	98	0,15		KH	40	0,06
598	VD	88	0,13		UX	40	0,06
599	VE	129	0,19		XH	40	0,06
600	VF	192	0,29		LF	39	0,06
601	VG	111	0,17		CG	38	0,06
602	VH	104	0,16		CQ	38	0,06
603	VI	164	0,24		HQ	38	0,06
604	VJ	158	0,24		PU	38	0,06
605	VK	102	0,15		TO	38	0,06
606	VL	102	0,15		CY	37	0,06
607	VM	159	0,24		GL	37	0,06
608	VN	165	0,25		KO	37	0,06
609	VÑ	59	0,09		PD	37	0,06
610	VO	83	0,12		XP	37	0,06
611	VP	72	0,11		YH	37	0,06
612	VQ	91	0,14		KK	36	0,05
613	VR	147	0,22		LÑ	36	0,05
614	VS	180	0,27		ÑP	36	0,05
615	VT	100	0,15		QQ	36	0,05
616	VU	119	0,18		UG	36	0,05
617	VV	144	0,22		XG	36	0,05
618	VW	167	0,25		YK	36	0,05
619	VX	110	0,16		YL	36	0,05
620	VY	91	0,14		CD	35	0,05
621	VZ	160	0,24		CL	35	0,05
622	WA	165	0,25		KX	35	0,05
623	WB	143	0,21		UD	35	0,05
624	WC	68	0,10		XC	35	0,05
625	WD	115	0,17		XU	35	0,05
626	WE	263	0,39		DG	34	0,05
627	WF	127	0,19		DT	34	0,05
628	WG	112	0,17		DX	34	0,05
629	WH	116	0,17		KP	34	0,05
630	WI	138	0,21		KU	34	0,05
631	WJ	192	0,29		LD	34	0,05
632	WK	162	0,24		LU	34	0,05
633	WL	106	0,16		YY	34	0,05
634	WM	162	0,24		KL	33	0,05
635	WN	180	0,27		ÑY	33	0,05
636	WÑ	95	0,14		QU	33	0,05
637	WO	57	0,09		YÑ	33	0,05
638	WP	98	0,15		YQ	33	0,05
639	WQ	76	0,11		DK	32	0,05
640	WR	123	0,18		PH	32	0,05
641	WS	119	0,18		QT	32	0,05
642	WT	84	0,13		TG	32	0,05
643	WU	81	0,12		TX	32	0,05
644	WV	161	0,24		OX	31	0,05
645	WW	168	0,25		PQ	31	0,05
646	WX	73	0,11		YU	31	0,05
647	WY	95	0,14		DP	30	0,04
648	WZ	173	0,26		KC	30	0,04
649	XA	85	0,13		ÑD	30	0,04
650	XB	73	0,11		OG	30	0,04
651	XC	35	0,05		OÑ	30	0,04
652	XD	46	0,07		OO	30	0,04
653	XE	79	0,12		OP	30	0,04
654	XF	81	0,12		XX	30	0,04
655	XG	36	0,05		CH	29	0,04
656	XH	40	0,06		HY	29	0,04
657	XI	66	0,10		PK	29	0,04
658	XJ	80	0,12		PP	29	0,04
659	XK	41	0,06		QÑ	29	0,04
660	XL	58	0,09		TK	29	0,04
661	XM	98	0,15		TY	29	0,04
662	XN	86	0,13		UU	29	0,04
663	XÑ	29	0,04		XÑ	29	0,04
664	XO	19	0,03		DH	28	0,04
665	XP	37	0,06		PT	28	0,04
666	XQ	46	0,07		QG	28	0,04
667	XR	150	0,22		QX	28	0,04
668	XS	134	0,20		TU	28	0,04
669	XT	24	0,04		XY	28	0,04
670	XU	35	0,05		CX	27	0,04
671	XV	102	0,15		HU	27	0,04
672	XW	76	0,11		OH	27	0,04
673	XX	30	0,04		UL	27	0,04
674	XY	28	0,04		ÑX	26	0,04
675	XZ	107	0,16		PL	26	0,04
676	YA	107	0,16		CO	25	0,04
677	YB	106	0,16		HD	25	0,04
678	YC	23	0,03		HL	25	0,04
679	YD	60	0,09		HÑ	25	0,04
680	YE	101	0,15		HT	25	0,04
681	YF	121	0,18		OT	25	0,04
682	YG	14	0,02		QH	25	0,04
683	YH	37	0,06		QO	25	0,04
684	YI	68	0,10		CU	24	0,04
685	YJ	87	0,13		HX	24	0,04
686	YK	36	0,05		ÑT	24	0,04
687	YL	36	0,05		QC	24	0,04
688	YM	113	0,17		UH	24	0,04
689	YN	128	0,19		XT	24	0,04
690	YÑ	33	0,05		GP	23	0,03
691	YO	43	0,06		HO	23	0,03
692	YP	18	0,03		LQ	23	0,03
693	YQ	33	0,05		OL	23	0,03
694	YR	120	0,18		OQ	23	0,03
695	YS	87	0,13		QL	23	0,03
696	YT	53	0,08		TD	23	0,03
697	YU	31	0,05		TP	23	0,03
698	YV	70	0,10		YC	23	0,03
699	YW	70	0,10		GH	22	0,03
700	YX	65	0,10		GU	22	0,03
701	YY	34	0,05		GX	22	0,03
702	YZ	62	0,09		LO	22	0,03
703	ZA	118	0,18		LX	22	0,03
704	ZB	151	0,23		TÑ	22	0,03
705	ZC	141	0,21		ÑL	21	0,03
706	ZD	135	0,20		QY	21	0,03
707	ZE	110	0,16		ÑÑ	20	0,03
708	ZF	178	0,27		ÑU	20	0,03
709	ZG	75	0,11		PG	20	0,03
710	ZH	61	0,09		UQ	20	0,03
711	ZI	170	0,25		KÑ	19	0,03
712	ZJ	154	0,23		LC	19	0,03
713	ZK	75	0,11		ÑC	19	0,03
714	ZL	72	0,11		XO	19	0,03
715	ZM	251	0,37		OK	18	0,03
716	ZN	121	0,18		PO	18	0,03
717	ZÑ	113	0,17		TT	18	0,03
718	ZO	106	0,16		YP	18	0,03
719	ZP	93	0,14		GQ	17	0,03
720	ZQ	106	0,16		KG	17	0,03
721	ZR	178	0,27		PY	17	0,03
722	ZS	113	0,17		TC	17	0,03
723	ZT	72	0,11		UK	17	0,03
724	ZU	105	0,16		UP	17	0,03
725	ZV	167	0,25		CÑ	16	0,02
726	ZW	121	0,18		HC	15	0,02
727	ZX	121	0,18		LT	15	0,02
728	ZY	71	0,11		YG	14	0,02
729	ZZ	131	0,20		LY	9	0,01
	Total	66974				66974

Llama la atención que no aparezcan digramas con frecuencias bajas, como 2, 3..., siendo el valor mínimo 9.

También es curioso que haya una gran desviación en las frecuencias, que varían gradualmente. según se ve en el gráfico adjunto, y cuya ley no puedo interpretar, aunque supongo que coresponde a un resultado bastante aleatorio.

Aparecen algunos digramas "reconocibles" con frecuencias relativamente altas, como

MA	0,30
RI	0,30
EM	0,27
AS	0,26
EN	0,26
MI	0,25
IS	0,24
RE	0,24
ES	0,23
EA	0,23
FU	0,23
JU	0,22
IN	0,22
IA	0,22
SE	0,22
EZ	0,22
FE	0,22
AR	0,21
AY	0,21
AZ	0,21
SA	0,20
FA	0,20
ME	0,20
NA	0,20
NI	0,20
...
ER	0,17
PE	0,17
EL	0,16
AN	0,14
HA	0,14
LA	0,14
CA	0,14
CR	0,14
LE	0,14
MU	0,14
...
DE	0,13

¿Que para qué sirve esto? Para nada, supongo. En el caso de que se considerara posible que se formaran digramas "transparentes" al cifrar con los múltiples XOR, podríamos ver las posiciones en que aparecen, para tratar de buscar alguna regularidad, algo al estilo Kasiski. Pero no estoy nada optimista al respecto.

El otro ataque, como sugería LlamameX, sería a partir de la primera letra, que sólo se cifra una vez con la primera letra de la clave par. Podría especularse con la primera letra del texto en claro, que podria ser una A, o una E, (hay menos palabras que empiecen por I, O o U) o alguna consonante frecuente como S, L, M..R. (hay menos palabras que empiecen por N, G o H) aunque estas hipótesis deberían fundamentarse estadísticamente para no hacer pruebas inútiles. Entonces tendríamos una serie de candidatos a la primera letra de la clave par, que suponemos será una palabra legible. Creo que esta vía ofrece más posibilidades, aunque no será fácil.

Imágenes: 

Sí que se parecen

Sí que se parecen, pero en el gráfico del cifrado las abcisas no corresponden a una variable numérica, sino a los digramas ordenados por frecuencias decrecientes, sin que los valores de la x guarden ninguna relación expresa con tales frecuencias. No obstante, tal vez haya una relación más profunda, entre la función que propones y la aleatoriedad del invento.

Para descifrar (o intentarlo) con lápiz y papel

A fin de que cualquiera pueda intentar resolver el reto, aun sin disponer de herramientas de programación, aquí pongo la tabla de los XOR de todas las letras con todas las letras

Tabla XOR bin-5  
 
*| 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 _ . , : ;
----------------------------------------------------------------------
A| 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 _ . , : ;
B| B A D C F E H G J I L K N M O Ñ Q P S R U T W V Y X _ Z , . ; :
C| C D A B G H E F K L I J Ñ O M N R S P Q V W T U Z _ X Y : ; . ,
D| D C B A H G F E L K J I O Ñ N M S R Q P W V U T _ Z Y X ; : , .
E| E F G H A B C D M N Ñ O I J K L T U V W P Q R S . , : ; X Y Z _
F| F E H G B A D C N M O Ñ J I L K U T W V Q P S R , . ; : Y X _ Z
G| G H E F C D A B Ñ O M N K L I J V W T U R S P Q : ; . , Z _ X Y
H| H G F E D C B A O Ñ N M L K J I W V U T S R Q P ; : , . _ Z Y X
I| I J K L M N Ñ O A B C D E F G H X Y Z _ . , : ; P Q R S T U V W
J| J I L K N M O Ñ B A D C F E H G Y X _ Z , . ; : Q P S R U T W V
K| K L I J Ñ O M N C D A B G H E F Z _ X Y : ; . , R S P Q V W T U
L| L K J I O Ñ N M D C B A H G F E _ Z Y X ; : , . S R Q P W V U T
M| M N Ñ O I J K L E F G H A B C D . , : ; X Y Z _ T U V W P Q R S
N| N M O Ñ J I L K F E H G B A D C , . ; : Y X _ Z U T W V Q P S R
Ñ| Ñ O M N K L I J G H E F C D A B : ; . , Z _ X Y V W T U R S P Q
O| O Ñ N M L K J I H G F E D C B A ; : , . _ Z Y X W V U T S R Q P
P| P Q R S T U V W X Y Z _ . , : ; A B C D E F G H I J K L M N Ñ O
Q| Q P S R U T W V Y X _ Z , . ; : B A D C F E H G J I L K N M O Ñ
R| R S P Q V W T U Z _ X Y : ; . , C D A B G H E F K L I J Ñ O M N
S| S R Q P W V U T _ Z Y X ; : , . D C B A H G F E L K J I O Ñ N M
T| T U V W P Q R S . , : ; X Y Z _ E F G H A B C D M N Ñ O I J K L
U| U T W V Q P S R , . ; : Y X _ Z F E H G B A D C N M O Ñ J I L K
V| V W T U R S P Q : ; . , Z _ X Y G H E F C D A B Ñ O M N K L I J
W| W V U T S R Q P ; : , . _ Z Y X H G F E D C B A O Ñ N M L K J I
X| X Y Z _ . , : ; P Q R S T U V W I J K L M N Ñ O A B C D E F G H
Y| Y X _ Z , . ; : Q P S R U T W V J I L K N M O Ñ B A D C F E H G
Z| Z _ X Y : ; . , R S P Q V W T U K L I J Ñ O M N C D A B G H E F
_| _ Z Y X ; : , . S R Q P W V U T L K J I O Ñ N M D C B A H G F E
.| . , : ; X Y Z _ T U V W P Q R S M N Ñ O I J K L E F G H A B C D
,| , . ; : Y X _ Z U T W V Q P S R N M O Ñ J I L K F E H G B A D C
:| : ; . , Z _ X Y V W T U R S P Q Ñ O M N K L I J G H E F C D A B
;| ; : , . _ Z Y X W V U T S R Q P O Ñ N M L K J I H G F E D C B A

Por ejemplo, la primera letra del cifrado, que es una G, se obtiene por un XOR entre la primera letra del texto en claro, y la primera de la clave-par, por lo que habría 32 posibildades, que son éstas:

XOR = G
===
A G
B H
C E
D F
I Ñ
J O
K M
L N
P V
Q W
R T
S U
X :
Y ;
Z .
_ ,

y todas sus recíprocas

Por cierto, ¿podríamos disponer de la implementación del DESCIFRADO en uno de los mundialmente famosos JavaScritps de LlamameX? Ya sé que es faena, y estamos en temporada estival, pero ten en cuenta que eso ya se ha convertido en una tradición, y así cualquiera podría trastear, haciendo ataques a las claves. Así será mucho más entretenido y más social. Venga, hombre.

Ejemplo de ensayo con lápiz y papel:

0. Numeramos el alfabeto

01234567890123456789012345678901
ABCDEFGHIJKLMNÑOPQRSTUVWXYZ_.,:;

1. Elegimos una supuesta primera letra para la clave-par. A veces los miembros de Kriptópolis homenajean a la página usando esta palabra en las contraseñas, aunque puede que éste no sea el caso. Tomaríamos entonces la K

2. XOR K G = M (en la tabla)
Si fuera M la primera letra del texto en claro, como resulta que ocupa la posición 12, se trata de una letra par (no creo que tengamos tanta suerte)

3. Entonces, la segunda letra del texto en claro habrá sido XOReada con la R (segunda letra de la clave), en la primera pasada, y con la K, en la segunda. Como la segunda letra del cifrado es el punto y coma ";", tendríamos:

segunda letra = XOR (; K R) (mantengo la notación prefija para XOR).
.
4. Como la operación XOR es asociativa podemos hacer primero XOR K R = X

5. Y ahora XOR ; X = H

Desgraciadamente es poco probable que las dos primeras letras de la primera palabra sean MH. Cachis, mala suerte.
(Todo eso si no me he equivocado)

Pero podemos seguir probando, porque uno de los p. 32 signos ha de ser la primera letra de la clave par, y no todos se usarán para inicio de palabra, si este hombre ha tenido la decencia de elegir claves legibles.

JavaScript vaaaa!!

Creado un pequeño JS para DESCRIFRAR mensajes cifrados con Doble XOR (NO vale para cifrar)
http://inedit00.github.com/xor2
O el código para quién quiera jugar/modificarlo:
http://pastebin.com/HdsP6aSZ

Temo que no sea algo tan complejo como el que hizo LlamameX para el cifrado "tftr", pero si queréis alguna mejora no dudéis en pedirlo (para algunos el verano significa VACACIONES INFINITAAAAS! jeje).

Un saludo! Espero que les sea útil!

Se agradece

Sobre todo para quienes no dispongan de herramientas de programación. Observo, no obstante, que no acepta el carácter "_" al escribir las claves.

Fixed

Sorry por eso. El carácter "_" si estaba funcionando, solo que había dejado demasiado poco espacio en el "input" para que se mostrata. He ampliado el tamaño del layout en general y ahora se ve mejor. También he incluído tu tabla de Cifrario XOR que me parece muy útil para ir haciendo pruebas.

Jummm

Temo no haber podido probar el programilla en todos los navegadores. Lo he probado en Firefox (14.0.1) y Chromium (20.0.11), ambos en Debian/Testing y sin problemas. Aún así ya he subido el fix al repositorio y en unos 10 minutos aproximadamente debería estar ya en la web.

Gracias por el reporte! Si te sigue dando problemas o encuentras alguna otra cosa, dímelo y me lo miro =)

Ingeniería social

Obsérvese que el autor dice:

..que las claves son perfectamente legibles y están formadas por palabras normales.

No dice que las claves SEAN palabas normales, sino que ESTÁN FORMADAS POR palabras normales. O sea que cada clave tiene varias palabras, normales, eso sí. Descartaremos "EL LENGUADO ES UN PEZ ACANTOPTERIGIO".

Apañaos estamos.

Descartes

Si aceptemos la hipotesis de que ni la primera palabra del texto ni la clave, empiecen por ninguno de los caracteres del conjunto

K Ñ W X _ . , : ;

Y tenemos en cuenta la lista de pares de letras que darían la letra G, podemos eliminar también el conjunto

I M Q Y Z

Lo que nos dejaría "sólo" 18 letras disponibles

A B C D E F G H J L N O P R S T U V

Estas letras serían iniciales de texto y de la clave, emparejadas de la siguiente forma, según la tabla de XOR

A G
B H
C E
D F
J O
L N
P V
R T
S U

o al revés, claro está.

Aunque se ha reducido a casi la mitad el número de letrar válidas, el problema sigue siendo enorme.

Y me pregunto: ¿por qué me meteré en estos líos?

Primera palabra

De manera oscura y nebulosa empiezo a ver.... CIVIL, CIVILES., CIVILIZACION... no veo bien, ¡estas gafas!

P.S.
¿Civiles y castellanos nos niegan hasta la sombra?

Administrar un reto

Esitmado y admirado sqrmatrix. La presentación de un reto implica cierta responsabilidad. No basta con crear un buen algoritmo, hermoso (cuanto más simple más hermoso) y sólido (tampoco debe ser tan sólido que no haya ninguna posibilidad de romperlo, con los medios de que habitualmente disponemos las gentes de a pie). Hace falta, también, actuar como "mantenedor", interaccionando con el público, dando alguna pista cuando la cosa se atasca, y comentando las aportaciones del personal, porque el esfuerzo de los atacantes merece siempre un reconocimiento, aunque sea para decirles: "No, no va por ahí la cosa".

En suma, que hay que visitar la página con relativa frecuencia para ver cómo van las cosas. En este sentido estoy quejoso, porque ya hace dos días que aventuré un posible hallazgo (que no solución) sobre el cifrado, y no te has dignado contestarme.

Gracias

Gracias, compañero. Pido perdón por haber precipitado el dar alguna pista. Tan sólo qería alguna respuesta. No te pido que confirmes ni desmientas, si no es el momento, pero a mi lo que me sale al principio es: "CIVILES_Y_CAST" (¿Civiles y castellanos?).

Para el público en general: No he podido (sabido) atacar el algoritmo, por que lo que he montado un ataque a las claves, algo patatero, eso sí.

Descripción del ataque:

Jugando con lo que yo pensaba que podrían ser las claves de sqrmatrix (que no revelaré, de momento) me sale esa secuencia que he puesto. Primero encontré el fragmento "CIVIL". Trajinando un poquito más, probando también la clave impar, me apareció la palabra "CIVILES". Frenéticamente me lancé a aporrear las dos claves y salió la serie "CIVILES_Y_" Entonces traté de ver si aparecía "CIVILES_Y_SOLDADOS" o "CIVILES_Y_MILITARES, pero me encontré con "CIVILES_Y_CAST", que sqrmatrix ni confirma ni desmiente, al menos de manera exacta.

Buscando en la Red, he encontrado la expresión gitana "Civiles y castellanos nos niegan hasta la sombra", donde por "castellanos" se refieren a los no gitanos, en general. Pero mis tejemanejes con las claves no me permiten ir más allá. No dejo de pensar que probando claves al tuntún se puedan generar textos cualesquiera, pero -corregidme si me equivoco-, la probabilidad de que combinando claves legibles salga un fragmento de texto descifrado legible y distinto del verdadero, debe ser muy pequeña.

Si esto se demostrara cierto, tendríamos que el algorimto es vulnerable a las claves, por las debilidades que señaló LlamameX, concretamente, que la primera letra se cifrara sólo una vez con la inicial de la clave-par. Pero además, ocurre que las claves -y esto es un hecho- pueden ser buenas o malas con respecto al texto en claro. Peor aún, los textos pueden ser buenos o malos para el algoritmo. Es altamente indeseable que al principio aparezca un grupo seguido de letras pares, porque en ese tramo la segunda clave es inoperante. Concretamente, si la palabra "CIVILES" fuera correcta, nos encontramos con que la C, la I y la V son pares, por lo que que la segunda clave no actúa hasta la sexta letra, dado que la primera impar es la letra L que aparece en la quinta posición. En suma. que trasteando sólo con la clave par podría aparecer el fragmento "CIVIL".

A ver si esto sirve de algo.

¡Cagontó!

Ya me parecía a mí demasiada suerte. Gracias, compadre.

Quizá este cifrario sea capaz de engañar a quienes le atacan y darles falsas esperanzas de que le están venciendo...

Pues va a ser eso...

El cálculo de probabilidades...

... y las tribulaciones de un criptoanalista mindungui.

Pues resulta que tomando como clave par

ESTA_VEZ_KB

que podría ser el inicio de algo como "esta vez kbytes no os van a faltar", o sea, que tiene sentido.
Y como clave impar

MUFLA_A

(aunque infrecuente en la vida ordinaria, MUFLA es una palabra del diccionario)
Pues bien, así se obtiene lo de

CIVILES_Y_CAST...

Cosas veredes.

Sospeché que algo no iba bien, cuando vi que no progresaba el descifrado al tratar de completar las claves.

Pero insisto en que un texto que empezara por un grupo de letras pares, sería vulnerable bajo el ataque a la clave.

La paridad del lenguaje

Quizá en este reto sea útil preguntarse si se utilizará más la clave par o la impar. Para contestar a esa pregunta he construído el concepto Paridad del Idioma (para el alfabeto del reto), que consiste en calcular, a partir de las frecuencias de las letras del castellano (caso de la Regenta), la probabilidad de que una letra elegida al azar en un texto sea par o impar. Parra ello he asignado a cada letra un 0 o u 1, según fuera par o impar. Basta con multiplicar cada frecuencia relativa por el bit correspondiente, y sumar. La Paridad se define como

P = 100 - Sumatorio( frec_rel * bit)

Si las letras fueran mayoritariamente pares, saldría una suma pequeña, y la paridad sería grande. Por el contrario cuanto mayor sea la suma, mayor será la probabilidad de encontrar una letra impar. Un resultado de 50 % indicaría un empate. Pues, bien, el resultado que se otbiene de los datos utilizados es de 54, 5 %. Es decir, es algo más probable encontrar una letra impar o, lo que es igual, se usará más veces la clave impar, aunque la diferencia no parece significativa a efectos de ataque.

Paridad del lenguaje									
	(de La Regenta)									
	Por frecuencias			Alfabético 
			Frec.rel %			F.rel %	Bit	Paridad	
	_	305290	17,599		A	192666	11,107	0	0,00	
	A	192666	11,107		B	26658	1,537	1	1,54	
	E	176252	10,16		C	52346	3,018	0	0,00	
	O	128009	7,379		D	67215	3,875	1	3,88	
	S	101317	5,841		E	176252	10,16	0	0,00	
	R	89243	5,145		F	8454	0,487	1	0,49	
	N	87585	5,049		G	15202	0,876	0	0,00	
	I	86284	4,974		H	13796	0,795	1	0,80	
	L	83524	4,815		I	86284	4,974	0	0,00	
	D	67215	3,875		J	6428	0,371	1	0,37	
	U	57662	3,324		K	59	0,003	0	0,00	
	T	53937	3,109		L	83524	4,815	1	4,82	
	C	52346	3,018		M	36500	2,104	0	0,00	
	M	36500	2,104		N	87585	5,049	1	5,05	
	P	33970	1,958		Ñ	3501	0,202	0	0,00	
	B	26658	1,537		O	128009	7,379	1	7,38	
	"."	26079	1,503		P	33970	1,958	0	0,00	
	","	24447	1,409		Q	17773	1,025	1	1,03	
	Q	17773	1,025		R	89243	5,145	0	0,00	
	V	15491	0,893		S	101317	5,841	1	5,84	
	G	15202	0,876		T	53937	3,109	0	0,00	
	H	13796	0,795		U	57662	3,324	1	3,32	
	Y	13619	0,785		V	15491	0,893	0	0,00	
	F	8454	0,487		W	20	0,001	1	0,00	
	J	6428	0,371		X	1224	0,071	0	0,00	
	Z	5549	0,32	        Y 	13619	0,785	1	0,79	
	";"	3658	0,211		Z	5549	0,32	0	0,00	
	Ñ	3501	0,202		_	305290	17,599	1	17,60	
	X	1224	0,071		"."	26079	1,503	0	0,00	
	":"	941	0,054		","	24447	1,409	1	1,41	
	K	59	0,003		":"	941	0,054	0	0,00	
	W	20	0,001		";"	3658	0,211	1	0,21	
							100		54,50	
 
Paridad = 100 - 54,5 = 45.50

Hay que tener en cuenta que otras fuentes atribuyen a las letras diferente espectro de frecuencias asignándole, por ejemplo, mayor frecuencia a la E que a la A, entre otras diferencias. Además, el espectro depende mucho del texto. Eso modificaría el cálculo, pero supongo que estaríamos simpre en torno al 50%.

O sea, que no hemos encontrado nada relevante.

.

Claves a partir de texto conocido

Por cierto: ¿Alguien sabe como extraer información de las claves a partir de un fragmento de texto conocido? Porque con eso ya se podría atacar el reto, probando secuencialmente hasta dar con la posición donde está "civilización".

Claro que estas cosas las hacían habitualmente Llamamex (que bastante tiene el pobre con TFTR) y Sqrmatrix, que se ha pasado al otro lado de la barra.

De momento, Sqrmatrix ¿podrías proporcionarnos un fragmento cifrado con dos claves, de cuatro caracteres cada una? Esto supone una clave global de ocho, en principio no atacable por fuerza bruta; y una palabra, no muy larga, que figure en el texto y también la posición donde está. El texto podría ser corto, 300 caracteres, o poco más.

Así, si resolvemos esto quizá veamos factible la solución del reto principal.

Muchas gracias, voy a darle

Muchas gracias, voy a darle vueltas, la verdad es que sí que tengo pensado enchufarle un AG. Si eso funciona al menos deja claro que existe alguna vulnerabilidad en el cifrario, aunque luego no sea práctico usarlo con claves de longitud desconocida (con herramientas apropiadas sería otra cosa, eso si).

Por cierto, creo que las claves del reto principal son de diez o doce caracteres, pero no me lo confirmes, ya veremos...

Buena pregunta

Aparte de que sería hacer uso de una pista "ilegítima" que le arranqué a sqrmatrix prematuramente, la pregunta es buena. Yo también me la formulé para tratar de conseguir las claves que generaran lo que yo pensaba que había que generar -y que era erróneo-

A partir de los primeros titubeantes caracteres, cada carácter del texto cifrado está XOR-ado un número de veces que oscila entre la longitud de la clave par y la longitud de la clave impar. Como la sucesiva aparición de cada clave es aleatoria, en función de la paridad del texto, que viene a ser un 50%, podemos esperar todas las combinaciones posibles entre todas las letras de las dos claves(*), o sea

Ci = XOR (Pi, KPj ... KPm, KIk... KIn)
 
Long(clave larga) >= m + n >= Long(clave corta)

(*) Los índices de las letra de la claves no guardan ninguna relación con sus posiciones, salvo la primera de la clave que se aplica al carácter (según su paridad) y que ya no se vuelve a aplicar. A menos, claro está, que la misma letra aparezca en otra posición de la clave)

Creo que hay suficiente eplosión combinatoria como para que esa vía de ataque no sea posible, pero no me hagas mucho caso, que yo tiendo a ser pesimista, en cuestiones de criptografía.

Reducción de la dimensión del problema

Nadie ha comentado mi post sobre las letras que se podrían descartar, a partir de la premisa de que ni la primera letra de la clave par ni la del texto pertenezcan al conjunto [K Ñ W _ . , : ;]. Pero yo sigo pensando que reducir los 32 símbolos a 18 es un avance. Segùn el razonamiento expuesto, la primera letra de la primera palabra tendría que ser una de éstas, y la primera letra de la clave impar debería ser su complementaria del XOR, con respecto al primer carácter cifrado, que es una G:

Texto/Clave
0 1 0 1 0 1 0 1 1 1 1 1 0 0 1 0 1 0
A B C D E F G H J L N O P R S T U V
G H E F C D A B O N L J V T U R S P

Podría parecer que es algo más probable que aparezca una letra impar, porque hay 10 de ellas de las 18 disponibles. Pero debemos tener en cuenta la abundancia de cada letra en el idioma, lo que equivale a calcular la paridad del conjunto, mediante una tabla como la siguiente:

L. pos.	Frec.%	Bit	Paridad	Referencia
A	11,107	0	0	11,107
B	1,537	1	1,537	1,537
C	3,018	0	0	3,018
D	3,875	1	3,875	3,875
E	10,16	0	0	10,16
F	0,487	1	0,487	0,487
G	0,876	0	0	0,876
H	0,795	1	0,795	0,795
J	0,371	1	0,371	0,371
L	4,815	1	4,815	4,815
N	5,049	1	5,049	5,049
O	7,379	1	7,379	7,379
P	1,958	0	0	1,958
R	5,145	0	0	5,145
S	5,841	1	5,841	5,841
T	3,109	0	0	3,109
U	3,324	1	3,324	3,324
V	0,893	0	0	0,893
 
	Total	       	33,473	69,739
 
Im(paridad) = 33,473*100/69,739 = 48 %	
 
Paridad = 100 - 48 = 52%

No es gran cosa, desde luego. Vamos a dejarlo en un empate.

A partir de ahí se abre un gigantesco árbol (los árboles combinatorios casi siempre son gigantescos) de combinaciones, pero mucho menor del que teníamos en un principio, con los 32 caracteres.

P.S.
¿No hay nadie a quien le gustaría disponer de una estadística de "iniciales", es decir, de las letras con que se inician las palabras en castellano?

Iniciales

En vista de la avalancha de peticiones, me he sentido obligado a calcular la frecuencia de las letras iniciales de palabra en castellano, tomando como referencia La Regenta. Y sale esto:

Iniciales						
 
Alfabético				Por frecuencias		
 
Letra	Frec	Frec.rel %	Letra	Frec	Frec.rel %
a	27440	9,02		e	33450	11,00
b	4091	1,35		d	32789	10,78
c	22933	7,54		l	27636	9,09
d	32789	10,78		a	27440	9,02
e	33450	11,00		s	24941	8,20
f	4999	1,64		c	22933	7,54
g	2795	0,92		p	22703	7,47
h	9279	3,05		m	15353	5,05
i	4323	1,42		q	13005	4,28
j	1202	0,40		y	10956	3,60
k	21	0,01		t	10477	3,45
l	27636	9,09		h	9279	3,05
m	15353	5,05		n	9120	3,00
n	9120	3,00		v	8385	2,76
o	5199	1,71		u	6916	2,27
p	22703	7,47		r	6063	1,99
q	13005	4,28		o	5199	1,71
r	6063	1,99		f	4999	1,64
s	24941	8,20		i	4323	1,42
t	10477	3,45		b	4091	1,35
u	6916	2,27		g	2795	0,92
v	8385	2,76		j	1202	0,40
w	15	0,00		x	28	0,01
x	28	0,01		k	21	0,01
y	10956	3,60		w	15	0,00
 
total	304119			total	304119

Notas:

La frecuencia relativamente alta de la W es debida al uso de palabras "extranjeras", sobre todo las frecuenes alusiones al libro de oraciones llamado "Kempis", y a algún "kilómetro"

La W doble aparece repetidamnente por alusiones al rey godo Wamba, y por escribir la palabra "vals" en la forma parimitiva "wals"

Las repetidas X son todas debidas a la numeración romana de capítulos

No aparece la Ñ porque es escasa, aunque alguna palabra hay en castellano con esa inicial (Ñoño, Ñandú, Ñora)

También sería intersante saber la frecuencia de digramas iniciales, pero eso lo haré cuando haya aún más peticiones.

Huy es que corres mucho, yo

Huy es que corres mucho, yo soy diesel y tampoco vivo en el apacible solaz de El Puzzle Asesino, ni dispongo como tú de kilómetros de resbaladizo suelo de linóleo para escribir con tiza las tablas de frecuencias...

Interesante, pero ¿y la frecuencia de las letras de inicio de palabra en el inicio de un párrafo o al inicio del documento ? A ver si va a ser diferente, y tenemos otro conjunto de inicio...

Vacaciones

Es que la Mengela se ha ido de vacaciones a Bergen-Belsen y, la verdad, esto es la Gloria.

No creas que no detecto tu matiz de burla sobre mis búsqudas "iniciálicas". Quizá no he aclarado que toda la faena es para tratar de acometer las primeras letras del texto plano y de la clave par. Naturalmente, las estadísticas no nos van a revelar per se qué condenado texto ha elegido sqrmatrix, ni cuáles son sus diabólicas claves. Pero para plantear un ataque con algo de combinatoria podría sernos útil alguno de estos datos estadísticos.

Tampoco comentas la reducción de 32 a 18 caracteres disponibles (para la primera letra del texto y de la clave) que propongo, si te parece verosímil o, si por el contrario, crees que no tiene base.

Saludos

Huy:lo decía en serio, creo

Huy:lo decía en serio, creo que las palabras de inicio de párrafo tienen otra frecuencia, pero, claro, falta Frau Menguela y ya han descuidado la medicación otra vez...

Por cierto el mini reto empieza por "v", lo que nos da estas posibilidades:

A	V
B	W
C	T
D	U
E	R
F	S
G	P
H	Q
M	Z
Ñ	X
O	Y
X	Ñ
Y	O
,	L
.	K
:	I
;	J
_	N

Dado que falta la "L", que formaría artículos, creo que es muy probable que la clave o el retín, empiezen por "e".

Sigo viéndolo muy complicado

Tener que averiguar dos claves independientes lo hace extremadamente difícil. Aún así se me ocurre una cosa. Las posiciones más vulnerables son las del inicio del mensaje, puesto que se cifran menos veces. Además, es bastante probable que se pueda repetir la clave a usar (por ejemplo usar SANCHO para las pocisiones 1..6 y para 2..7). Uso la terminologia de las A(i) para texto claro, Kp(i) para la clave par, Ki(i) para la clave impar, C(i) para el texto cifrado y ^ para XOR. Si, por ejemplo la clave par se usara 2 veces seguidas tendríamos:

C(0) = A(0) ^ Kp(0)
C(1) = A(1) ^ Kp(0) ^ Kp(1)

Por tanto C(0) ^ C(1) = A(0) ^ A(1) ^ Kp(1)

Podemos disponer de una tabla de digramas castellanos que nos proporcionen las parejas más probables para calcular A(0) ^ A(1) y de ahí obtener candidatos a Kp(1) y Kp(0).

Demasiado calor.

Tres primeras letras (que diga... dos)

Tengo un ataque para conseguir una lista de candidatos a las tres primeras letras del texto. De momento he realizado un ataque para las dos primeras, pero no estoy satisfecho, porque he usado los digramas iniciales de La Regenta, y creo que habría que utilizar "todos" los digramas iniciales del castellano. He impuesto la restricción de las 18 letras disponibles para el primer carácter, y que tanto los dos caracteres de las claves, como los dos del texto sean digramas iniciales del texto de referencia, y salen estos resultados

Ataque F.B. 2 car					
Por frecuencias claves	Por resultado alfabético		
cl.par	cl.imp	Texto	cl.par	cl.imp	Texto
DE	SE	FI	GR	GR	AL
DE	PA	FL	GU	GU	AM
DE	PO	FL	GL	GL	AR
DE	SU	FI	GO	GO	AV
DE	PE	FL	GA	GA	AY
DE	SI	FI	HO	PA	BA
DE	PR	FL	HO	PO	BA
DE	SA	FI	HO	PE	BA
DE	SO	FI	HO	PR	BA
DE	TO	FO	HO	PU	BA
DE	TE	FO	HO	PI	BA
DE	TA	FO	HO	PL	BA
DE	PU	FL	HO	TO	BE
DE	TR	FO	HO	TE	BE
DE	TI	FO	HO	TA	BE
DE	PI	FL	HO	TR	BE
DE	JU	FR	HO	TI	BE
DE	TU	FO	HO	TU	BE
DE	PL	FL	HI	SE	BE
DE	JO	FR	HI	SU	BE
DE	JA	FR	HI	SI	BE
DE	JE	FR	HI	SA	BE
LA	PA	NO	HI	SO	BE
LA	PO	NO	HU	CO	BI
LA	PE	NO	HU	CA	BI
LA	PR	NO	HU	CU	BI
LA	PU	NO	HU	CR	BI
LA	PI	NO	HU	CE	BI
LA	PL	NO	HU	CI	BI
DE	SE	FI	HU	CL	BI
DE	PA	FL	HU	CH	BI
DE	PO	FL	HE	SE	BI
DE	SU	FI	HE	SU	BI
DE	PE	FL	HE	SI	BI
DE	SI	FI	HE	SA	BI
DE	PR	FL	HE	SO	BI
DE	SA	FI	HA	TO	BL
DE	SO	FI	HA	TE	BL
DE	TO	FO	HA	TA	BL
DE	TE	FO	HA	TR	BL
DE	TA	FO	HA	TI	BL
DE	PU	FL	HA	TU	BL
DE	TR	FO	HU	BA	BL
DE	TI	FO	HU	BU	BL
DE	PI	FL	HU	BO	BL
DE	JU	FR	HU	BE	BL
DE	TU	FO	HU	BI	BL
DE	PL	FL	HU	BR	BL
DE	JO	FR	HU	BL	BL
DE	JA	FR	HE	PA	BL
DE	JE	FR	HE	PO	BL
LA	PA	NO	HE	PE	BL
LA	PO	NO	HE	PR	BL
LA	PE	NO	HE	PU	BL
LA	PR	NO	HE	PI	BL
LA	PU	NO	HE	PL	BL
LA	PI	NO	HA	PA	BO
LA	PL	NO	HA	PO	BO
CO	CO	ER	HA	PE	BO
SE	PA	UL	HA	PR	BO
SE	PO	UL	HA	PU	BO
SE	PE	UL	HA	PI	BO
SE	VE	UN	HA	PL	BO
SE	PR	UL	HU	FU	BO
SE	VI	UN	HU	FI	BO
SE	PU	UL	HU	FR	BO
SE	PI	UL	HU	FA	BO
SE	OT	UT	HU	FE	BO
SE	VO	UN	HU	FO	BO
SE	OB	UT	HU	FL	BO
SE	VA	UN	HE	TO	BO
SE	JU	UR	HE	TE	BO
SE	OR	UT	HE	TA	BO
SE	PL	UL	HE	TR	BO
SE	OJ	UT	HE	TI	BO
SE	OC	UT	HE	TU	BO
SE	OI	UT	HA	NO	BR
SE	VU	UN	HA	NI	BR
SE	OL	UT	HA	NA	BR
SE	JO	UR	HA	NE	BR
SE	JA	UR	HA	NU	BR
SE	OP	UT	HO	CO	BR
SE	JE	UR	HO	CA	BR
SE	OY	UT	HO	CU	BR
SE	OF	UT	HO	CR	BR
SE	OH	UT	HO	CE	BR
SE	OZ	UT	HO	CI	BR
ES	ES	CI	HO	CL	BR
LO	PA	NA	HO	CH	BR
LO	PO	NA	HE	JU	BR
LO	PE	NA	HE	JO	BR
LO	PR	NA	HE	JA	BR
LO	TO	NE	HE	JE	BR
LO	TE	NE	HI	FU	BR
LO	TA	NE	HI	FI	BR
LO	PU	NA	HI	FR	BR
LO	TR	NE	HI	FA	BR
LO	FU	NU	HI	FE	BR
LO	TI	NE	HI	FO	BR
LO	PI	NA	HI	FL	BR
LO	FI	NU	HO	FU	BU
LO	FR	NU	HO	FI	BU
LO	FA	NU	HO	FR	BU
LO	FE	NU	HO	FA	BU
LO	TU	NE	HO	FE	BU
LO	FO	NU	HO	FO	BU
LO	PL	NA	HO	FL	BU
LO	FL	NU	HI	CO	BU
NO	PA	LA	HI	CA	BU
NO	PO	LA	HI	CU	BU
NO	PE	LA	HI	CR	BU
NO	PR	LA	HI	CE	BU
NO	TO	LE	HI	CI	BU
NO	TE	LE	HI	CL	BU
NO	TA	LE	HI	CH	BU
NO	PU	LA	ES	ES	CI
NO	TR	LE	ET	ET	CO
NO	FU	LU	FR	NO	DA
NO	TI	LE	FR	NI	DA
NO	PI	LA	FR	NA	DA
NO	FI	LU	FR	NE	DA
NO	FR	LU	FR	NU	DA
NO	FA	LU	FO	PA	DA
NO	FE	LU	FO	PO	DA
NO	TU	LE	FO	PE	DA
NO	FO	LU	FO	PR	DA
NO	PL	LA	FO	PU	DA
NO	FL	LU	FO	PI	DA
PA	PA	VO	FO	PL	DA
UN	HA	SU	FL	TO	DA
UN	RE	SA	FL	TE	DA
UN	VE	SE	FL	TA	DA
UN	VI	SE	FL	TR	DA
UN	HO	SU	FL	TI	DA
UN	VO	SE	FL	TU	DA
UN	RO	SA	FI	SE	DE
UN	HU	SU	FI	SU	DE
UN	HE	SU	FI	SI	DE
UN	HI	SU	FI	SA	DE
UN	VA	SE	FI	SO	DE
UN	RI	SA	FR	JU	DE
UN	RA	SA	FR	JO	DE
UN	RU	SA	FR	JA	DE
UN	VU	SE	FR	JE	DE
PO	PO	VA	FO	TO	DE
HA	NO	BR	FO	TE	DE
HA	PA	BO	FO	TA	DE
HA	PO	BO	FO	TR	DE
HA	PE	BO	FO	TI	DE
HA	PR	BO	FO	TU	DE
HA	TO	BL	FL	PA	DE
HA	TE	BL	FL	PO	DE
HA	TA	BL	FL	PE	DE
HA	PU	BO	FL	PR	DE
HA	TR	BL	FL	PU	DE
HA	TI	BL	FL	PI	DE
HA	NI	BR	FL	PL	DE
HA	PI	BO	FU	CO	DI
HA	NA	BR	FU	CA	DI
HA	NE	BR	FU	CU	DI
HA	NU	BR	FU	CR	DI
HA	TU	BL	FU	CE	DI
HA	PL	BO	FU	CI	DI
SU	HA	UN	FU	CL	DI
SU	HO	UN	FU	CH	DI
SU	BA	UL	FR	FU	DI
SU	BU	UL	FR	FI	DI
SU	HU	UN	FR	FR	DI
SU	HE	UN	FR	FA	DI
SU	HI	UN	FR	FE	DI
SU	BO	UL	FR	FO	DI
SU	BE	UL	FR	FL	DI
SU	BI	UL	FE	SE	DI
SU	BR	UL	FE	SU	DI
SU	BL	UL	FE	SI	DI
SI	DE	UT	FE	SA	DI
SI	EL	US	FE	SO	DI
SI	EN	US	FU	FU	DO
SI	ES	US	FU	FI	DO
SI	DO	UT	FU	FR	DO
SI	DI	UT	FU	FA	DO
SI	ER	US	FU	FE	DO
SI	FU	UR	FU	FO	DO
SI	EX	US	FU	FL	DO
SI	FI	UR	FR	CO	DO
SI	FR	UR	FR	CA	DO
SI	FA	UR	FR	CU	DO
SI	DA	UT	FR	CR	DO
SI	FE	UR	FR	CE	DO
SI	EM	US	FR	CI	DO
SI	FO	UR	FR	CL	DO
SI	DU	UT	FR	CH	DO
SI	EC	US	FA	PA	DO
SI	FL	UR	FA	PO	DO
SI	ED	US	FA	PE	DO
SI	ET	US	FA	PR	DO
SI	EF	US	FA	PU	DO
LE	SE	NI	FA	PI	DO
LE	SU	NI	FA	PL	DO
LE	SI	NI	FE	TO	DO
LE	SA	NI	FE	TE	DO
LE	SO	NI	FE	TA	DO
LE	TO	NO	FE	TR	DO
LE	TE	NO	FE	TI	DO
LE	TA	NO	FE	TU	DO
LE	TR	NO	FI	FU	DR
LE	TI	NO	FI	FI	DR
LE	TU	NO	FI	FR	DR
DO	CO	FR	FI	FA	DR
DO	PA	FA	FI	FE	DR
DO	PO	FA	FI	FO	DR
DO	CA	FR	FI	FL	DR
DO	PE	FA	FA	NO	DR
DO	PR	FA	FA	NI	DR
DO	TO	FE	FA	NA	DR
DO	TE	FE	FA	NE	DR
DO	CU	FR	FA	NU	DR
DO	TA	FE	FE	JU	DR
DO	PU	FA	FE	JO	DR
DO	TR	FE	FE	JA	DR
DO	CR	FR	FE	JE	DR
DO	FU	FU	FO	CO	DR
DO	TI	FE	FO	CA	DR
DO	PI	FA	FO	CU	DR
DO	FI	FU	FO	CR	DR
DO	FR	FU	FO	CE	DR
DO	CE	FR	FO	CI	DR
DO	CI	FR	FO	CL	DR
DO	FA	FU	FO	CH	DR
DO	FE	FU	FL	GR	DR
DO	TU	FE	FL	GA	DR
DO	CL	FR	FL	GU	DR
DO	FO	FU	FL	GE	DR
DO	PL	FA	FL	GO	DR
DO	CH	FR	FL	GL	DR
DO	FL	FU	FI	CO	DU
DI	CO	FU	FI	CA	DU
DI	SE	FE	FI	CU	DU
DI	SU	FE	FI	CR	DU
DI	CA	FU	FI	CE	DU
DI	SI	FE	FI	CI	DU
DI	SA	FE	FI	CL	DU
DI	SO	FE	FI	CH	DU
DI	CU	FU	FO	FU	DU
DI	CR	FU	FO	FI	DU
DI	FU	FR	FO	FR	DU
DI	FI	FR	FO	FA	DU
DI	FR	FR	FO	FE	DU
DI	CE	FU	FO	FO	DU
DI	CI	FU	FO	FL	DU
DI	FA	FR	FL	BA	DU
DI	FE	FR	FL	BU	DU
DI	CL	FU	FL	BO	DU
DI	FO	FR	FL	BE	DU
DI	CH	FU	FL	BI	DU
DI	FL	FR	FL	BR	DU
SA	LA	UT	FL	BL	DU
SA	LO	UT	CO	CO	ER
SA	NO	UR	CI	CI	EU
SA	RE	UN	CL	CL	EV
SA	LE	UT	DO	PA	FA
SA	TO	UL	DO	PO	FA
SA	TE	UL	DO	PE	FA
SA	TA	UL	DO	PR	FA
SA	TR	UL	DO	PU	FA
SA	LL	UT	DO	PI	FA
SA	TI	UL	DO	PL	FA
SA	NI	UR	DO	TO	FE
SA	NA	UR	DO	TE	FE
SA	RO	UN	DO	TA	FE
SA	NE	UR	DO	TR	FE
SA	LI	UT	DO	TI	FE
SA	RI	UN	DO	TU	FE
SA	NU	UR	DI	SE	FE
SA	LU	UT	DI	SU	FE
SA	TU	UL	DI	SI	FE
SA	RA	UN	DI	SA	FE
SA	RU	UN	DI	SO	FE
SO	DE	US	DE	SE	FI
SO	CO	UR	DE	SU	FI
SO	EL	UT	DE	SI	FI
SO	EN	UT	DE	SA	FI
SO	ES	UT	DE	SO	FI
SO	CA	UR	DE	SE	FI
SO	DO	US	DE	SU	FI
SO	DI	US	DE	SI	FI
SO	ER	UT	DE	SA	FI
SO	CU	UR	DE	SO	FI
SO	CR	UR	DU	CO	FI
SO	EX	UT	DU	CA	FI
SO	CE	UR	DU	CU	FI
SO	CI	UR	DU	CR	FI
SO	DA	US	DU	CE	FI
SO	EM	UT	DU	CI	FI
SO	CL	UR	DU	CL	FI
SO	DU	US	DU	CH	FI
SO	CH	UR	DE	PA	FL
SO	EC	UT	DE	PO	FL
SO	ED	UT	DE	PE	FL
SO	ET	UT	DE	PR	FL
SO	EF	UT	DE	PU	FL
TO	TO	RE	DE	PI	FL
TE	TE	RO	DE	PL	FL
AN	AN	GR	DE	PA	FL
LL	PA	NE	DE	PO	FL
LL	PO	NE	DE	PE	FL
LL	PE	NE	DE	PR	FL
LL	PR	NE	DE	PU	FL
LL	TO	NA	DE	PI	FL
LL	TE	NA	DE	PL	FL
LL	TA	NA	DA	TO	FL
LL	PU	NE	DA	TE	FL
LL	TR	NA	DA	TA	FL
LL	BA	NU	DA	TR	FL
LL	TI	NA	DA	TI	FL
LL	PI	NE	DA	TU	FL
LL	BU	NU	DU	BA	FL
LL	TU	NA	DU	BU	FL
LL	BO	NU	DU	BO	FL
LL	BE	NU	DU	BE	FL
LL	BI	NU	DU	BI	FL
LL	BR	NU	DU	BR	FL
LL	PL	NE	DU	BL	FL
LL	BL	NU	DE	TO	FO
HO	CO	BR	DE	TE	FO
HO	PA	BA	DE	TA	FO
HO	PO	BA	DE	TR	FO
HO	CA	BR	DE	TI	FO
HO	PE	BA	DE	TU	FO
HO	PR	BA	DE	TO	FO
HO	TO	BE	DE	TE	FO
HO	TE	BE	DE	TA	FO
HO	CU	BR	DE	TR	FO
HO	TA	BE	DE	TI	FO
HO	PU	BA	DE	TU	FO
HO	TR	BE	DA	PA	FO
HO	CR	BR	DA	PO	FO
HO	FU	BU	DA	PE	FO
HO	TI	BE	DA	PR	FO
HO	PI	BA	DA	PU	FO
HO	FI	BU	DA	PI	FO
HO	FR	BU	DA	PL	FO
HO	CE	BR	DU	FU	FO
HO	CI	BR	DU	FI	FO
HO	FA	BU	DU	FR	FO
HO	FE	BU	DU	FA	FO
HO	TU	BE	DU	FE	FO
HO	CL	BR	DU	FO	FO
HO	FO	BU	DU	FL	FO
HO	PL	BA	DE	JU	FR
HO	CH	BR	DE	JO	FR
HO	FL	BU	DE	JA	FR
BA	PA	HO	DE	JE	FR
BA	PO	HO	DE	JU	FR
BA	PE	HO	DE	JO	FR
BA	PR	HO	DE	JA	FR
BA	PU	HO	DE	JE	FR
BA	PI	HO	DO	CO	FR
BA	PL	HO	DO	CA	FR
FU	CO	DI	DO	CU	FR
FU	CA	DI	DO	CR	FR
FU	CU	DI	DO	CE	FR
FU	CR	DI	DO	CI	FR
FU	FU	DO	DO	CL	FR
FU	FI	DO	DO	CH	FR
FU	FR	DO	DI	FU	FR
FU	CE	DI	DI	FI	FR
FU	CI	DI	DI	FR	FR
FU	FA	DO	DI	FA	FR
FU	FE	DO	DI	FE	FR
FU	CL	DI	DI	FO	FR
FU	FO	DO	DI	FL	FR
FU	CH	DI	DA	NO	FR
FU	FL	DO	DA	NI	FR
GR	GR	AL	DA	NA	FR
NI	CO	LU	DA	NE	FR
NI	SE	LE	DA	NU	FR
NI	SU	LE	DO	FU	FU
NI	CA	LU	DO	FI	FU
NI	SI	LE	DO	FR	FU
NI	SA	LE	DO	FA	FU
NI	SO	LE	DO	FE	FU
NI	CU	LU	DO	FO	FU
NI	CR	LU	DO	FL	FU
NI	CE	LU	DI	CO	FU
NI	CI	LU	DI	CA	FU
NI	CL	LU	DI	CU	FU
NI	CH	LU	DI	CR	FU
OT	DE	JI	DI	CE	FU
OT	LA	JA	DI	CI	FU
OT	EL	JO	DI	CL	FU
OT	EN	JO	DI	CH	FU
OT	ES	JO	AT	AT	GL
OT	LO	JA	AP	AP	GO
OT	LE	JA	AN	AN	GR
OT	DO	JI	BO	PA	HA
OT	DI	JI	BO	PO	HA
OT	ER	JO	BO	PE	HA
OT	LL	JA	BO	PR	HA
OT	EX	JO	BO	PU	HA
OT	OT	JE	BO	PI	HA
OT	OB	JE	BO	PL	HA
OT	DA	JI	BR	NO	HA
OT	LI	JA	BR	NI	HA
OT	LU	JA	BR	NA	HA
OT	OR	JE	BR	NE	HA
OT	EM	JO	BR	NU	HA
OT	DU	JI	BL	TO	HA
OT	OJ	JE	BL	TE	HA
OT	OC	JE	BL	TA	HA
OT	OI	JE	BL	TR	HA
OT	OL	JE	BL	TI	HA
OT	EC	JO	BL	TU	HA
OT	OP	JE	BO	TO	HE
OT	ED	JO	BO	TE	HE
OT	OY	JE	BO	TA	HE
OT	OF	JE	BO	TR	HE
OT	OH	JE	BO	TI	HE
OT	ET	JO	BO	TU	HE
OT	OZ	JE	BI	SE	HE
OT	EF	JO	BI	SU	HE
US	DE	SO	BI	SI	HE
US	EL	SI	BI	SA	HE
US	EN	SI	BI	SO	HE
US	ES	SI	BR	JU	HE
US	DO	SO	BR	JO	HE
US	DI	SO	BR	JA	HE
US	ER	SI	BR	JE	HE
US	EX	SI	BL	PA	HE
US	DA	SO	BL	PO	HE
US	EM	SI	BL	PE	HE
US	DU	SO	BL	PR	HE
US	EC	SI	BL	PU	HE
US	ED	SI	BL	PI	HE
US	ET	SI	BL	PL	HE
US	EF	SI	BU	CO	HI
NA	PA	LO	BU	CA	HI
NA	PO	LO	BU	CU	HI
NA	PE	LO	BU	CR	HI
NA	PR	LO	BU	CE	HI
NA	TO	LL	BU	CI	HI
NA	TE	LL	BU	CL	HI
NA	TA	LL	BU	CH	HI
NA	PU	LO	BE	SE	HI
NA	TR	LL	BE	SU	HI
NA	TI	LL	BE	SI	HI
NA	PI	LO	BE	SA	HI
NA	TU	LL	BE	SO	HI
NA	PL	LO	BR	FU	HI
FI	CO	DU	BR	FI	HI
FI	SE	DE	BR	FR	HI
FI	SU	DE	BR	FA	HI
FI	CA	DU	BR	FE	HI
FI	SI	DE	BR	FO	HI
FI	SA	DE	BR	FL	HI
FI	SO	DE	BA	PA	HO
FI	CU	DU	BA	PO	HO
FI	CR	DU	BA	PE	HO
FI	FU	DR	BA	PR	HO
FI	FI	DR	BA	PU	HO
FI	FR	DR	BA	PI	HO
FI	CE	DU	BA	PL	HO
FI	CI	DU	BU	FU	HO
FI	FA	DR	BU	FI	HO
FI	FE	DR	BU	FR	HO
FI	CL	DU	BU	FA	HO
FI	FO	DR	BU	FE	HO
FI	CH	DU	BU	FO	HO
FI	FL	DR	BU	FL	HO
BU	CO	HI	BE	TO	HO
BU	CA	HI	BE	TE	HO
BU	CU	HI	BE	TA	HO
BU	CR	HI	BE	TR	HO
BU	FU	HO	BE	TI	HO
BU	FI	HO	BE	TU	HO
BU	FR	HO	BR	CO	HO
BU	CE	HI	BR	CA	HO
BU	CI	HI	BR	CU	HO
BU	FA	HO	BR	CR	HO
BU	FE	HO	BR	CE	HO
BU	CL	HI	BR	CI	HO
BU	FO	HO	BR	CL	HO
BU	CH	HI	BR	CH	HO
BU	FL	HO	BO	FU	HU
FR	CO	DO	BO	FI	HU
FR	NO	DA	BO	FR	HU
FR	CA	DO	BO	FA	HU
FR	CU	DO	BO	FE	HU
FR	CR	DO	BO	FO	HU
FR	FU	DI	BO	FL	HU
FR	NI	DA	BI	CO	HU
FR	NA	DA	BI	CA	HU
FR	FI	DI	BI	CU	HU
FR	FR	DI	BI	CR	HU
FR	CE	DO	BI	CE	HU
FR	CI	DO	BI	CI	HU
FR	FA	DI	BI	CL	HU
FR	NE	DA	BI	CH	HU
FR	FE	DI	BL	BA	HU
FR	JU	DE	BL	BU	HU
FR	NU	DA	BL	BO	HU
FR	CL	DO	BL	BE	HU
FR	FO	DI	BL	BI	HU
FR	CH	DO	BL	BR	HU
FR	JO	DE	BL	BL	HU
FR	FL	DI	OT	LA	JA
FR	JA	DE	OT	LO	JA
FR	JE	DE	OT	LE	JA
OB	LA	JU	OT	LL	JA
OB	LO	JU	OT	LI	JA
OB	VE	JI	OT	LU	JA
OB	LE	JU	OR	NO	JA
OB	VI	JI	OR	NI	JA
OB	LL	JU	OR	NA	JA
OB	VO	JI	OR	NE	JA
OB	VA	JI	OR	NU	JA
OB	LI	JU	OJ	VE	JA
OB	LU	JU	OJ	VI	JA
OB	VU	JI	OJ	VO	JA
HU	CO	BI	OJ	VA	JA
HU	CA	BI	OJ	VU	JA
HU	CU	BI	OL	TO	JA
HU	CR	BI	OL	TE	JA
HU	BA	BL	OL	TA	JA
HU	FU	BO	OL	TR	JA
HU	FI	BO	OL	TI	JA
HU	BU	BL	OL	TU	JA
HU	FR	BO	OP	OT	JA
HU	CE	BI	OP	OB	JA
HU	CI	BI	OP	OR	JA
HU	FA	BO	OP	OJ	JA
HU	FE	BO	OP	OC	JA
HU	BO	BL	OP	OI	JA
HU	CL	BI	OP	OL	JA
HU	FO	BO	OP	OP	JA
HU	BE	BL	OP	OY	JA
HU	BI	BL	OP	OF	JA
HU	BR	BL	OP	OH	JA
HU	CH	BI	OP	OZ	JA
HU	BL	BL	OY	GR	JA
HU	FL	BO	OY	GA	JA
AP	AP	GO	OY	GU	JA
CI	CI	EU	OY	GE	JA
HE	SE	BI	OY	GO	JA
HE	PA	BL	OY	GL	JA
HE	PO	BL	OZ	FU	JA
HE	SU	BI	OZ	FI	JA
HE	PE	BL	OZ	FR	JA
HE	SI	BI	OZ	FA	JA
HE	PR	BL	OZ	FE	JA
HE	SA	BI	OZ	FO	JA
HE	SO	BI	OZ	FL	JA
HE	TO	BO	OT	OT	JE
HE	TE	BO	OT	OB	JE
HE	TA	BO	OT	OR	JE
HE	PU	BL	OT	OJ	JE
HE	TR	BO	OT	OC	JE
HE	TI	BO	OT	OI	JE
HE	PI	BL	OT	OL	JE
HE	JU	BR	OT	OP	JE
HE	TU	BO	OT	OY	JE
HE	PL	BL	OT	OF	JE
HE	JO	BR	OT	OH	JE
HE	JA	BR	OT	OZ	JE
HE	JE	BR	OR	JU	JE
FA	NO	DR	OR	JO	JE
FA	PA	DO	OR	JA	JE
FA	PO	DO	OR	JE	JE
FA	PE	DO	OJ	RE	JE
FA	PR	DO	OJ	RO	JE
FA	PU	DO	OJ	RI	JE
FA	NI	DR	OJ	RA	JE
FA	PI	DO	OJ	RU	JE
FA	NA	DR	OI	SE	JE
FA	NE	DR	OI	SU	JE
FA	NU	DR	OI	SI	JE
FA	PL	DO	OI	SA	JE
DA	NO	FR	OI	SO	JE
DA	PA	FO	OL	PA	JE
DA	PO	FO	OL	PO	JE
DA	PE	FO	OL	PE	JE
DA	PR	FO	OL	PR	JE
DA	TO	FL	OL	PU	JE
DA	TE	FL	OL	PI	JE
DA	TA	FL	OL	PL	JE
DA	PU	FO	OP	LA	JE
DA	TR	FL	OP	LO	JE
DA	TI	FL	OP	LE	JE
DA	NI	FR	OP	LL	JE
DA	PI	FO	OP	LI	JE
DA	NA	FR	OP	LU	JE
DA	NE	FR	OY	CO	JE
DA	NU	FR	OY	CA	JE
DA	TU	FL	OY	CU	JE
DA	PL	FO	OY	CR	JE
HI	CO	BU	OY	CE	JE
HI	SE	BE	OY	CI	JE
HI	SU	BE	OY	CL	JE
HI	CA	BU	OY	CH	JE
HI	SI	BE	OZ	BA	JE
HI	SA	BE	OZ	BU	JE
HI	SO	BE	OZ	BO	JE
HI	CU	BU	OZ	BE	JE
HI	CR	BU	OZ	BI	JE
HI	FU	BR	OZ	BR	JE
HI	FI	BR	OZ	BL	JE
HI	FR	BR	OT	DE	JI
HI	CE	BU	OT	DO	JI
HI	CI	BU	OT	DI	JI
HI	FA	BR	OT	DA	JI
HI	FE	BR	OT	DU	JI
HI	CL	BU	OB	VE	JI
HI	FO	BR	OB	VI	JI
HI	CH	BU	OB	VO	JI
HI	FL	BR	OB	VA	JI
AT	AT	GL	OB	VU	JI
NE	SE	LI	OR	FU	JI
NE	PA	LL	OR	FI	JI
NE	PO	LL	OR	FR	JI
NE	SU	LI	OR	FA	JI
NE	PE	LL	OR	FE	JI
NE	SI	LI	OR	FO	JI
NE	PR	LL	OR	FL	JI
NE	SA	LI	OC	UN	JI
NE	SO	LI	OC	US	JI
NE	TO	LO	OC	UL	JI
NE	TE	LO	OP	HA	JI
NE	TA	LO	OP	HO	JI
NE	PU	LL	OP	HU	JI
NE	TR	LO	OP	HE	JI
NE	TI	LO	OP	HI	JI
NE	PI	LL	OF	RE	JI
NE	TU	LO	OF	RO	JI
NE	PL	LL	OF	RI	JI
FE	SE	DI	OF	RA	JI
FE	SU	DI	OF	RU	JI
FE	SI	DI	OH	PA	JI
FE	SA	DI	OH	PO	JI
FE	SO	DI	OH	PE	JI
FE	TO	DO	OH	PR	JI
FE	TE	DO	OH	PU	JI
FE	TA	DO	OH	PI	JI
FE	TR	DO	OH	PL	JI
FE	TI	DO	OZ	NO	JI
FE	JU	DR	OZ	NI	JI
FE	TU	DO	OZ	NA	JI
FE	JO	DR	OZ	NE	JI
FE	JA	DR	OZ	NU	JI
FE	JE	DR	OT	EL	JO
LI	CO	NU	OT	EN	JO
LI	SE	NE	OT	ES	JO
LI	SU	NE	OT	ER	JO
LI	CA	NU	OT	EX	JO
LI	SI	NE	OT	EM	JO
LI	SA	NE	OT	EC	JO
LI	SO	NE	OT	ED	JO
LI	CU	NU	OT	ET	JO
LI	CR	NU	OT	EF	JO
LI	CE	NU	OR	CO	JO
LI	CI	NU	OR	CA	JO
LI	CL	NU	OR	CU	JO
LI	CH	NU	OR	CR	JO
JU	DE	OJ	OR	CE	JO
JU	LA	OB	OR	CI	JO
JU	CO	OI	OR	CL	JO
JU	SE	OY	OR	CH	JO
JU	LO	OB	OC	RE	JO
JU	NO	OH	OC	RO	JO
JU	HA	ON	OC	RI	JO
JU	SU	OY	OC	RA	JO
JU	CA	OI	OC	RU	JO
JU	SI	OY	OP	AL	JO
JU	LE	OB	OP	AQ	JO
JU	DO	OJ	OP	AN	JO
JU	DI	OJ	OP	AM	JO
JU	SA	OY	OP	AR	JO
JU	SO	OY	OP	AC	JO
JU	CU	OI	OP	AS	JO
JU	LL	OB	OP	AP	JO
JU	HO	ON	OP	AB	JO
JU	CR	OI	OP	AD	JO
JU	BA	OL	OP	AT	JO
JU	NI	OH	OP	AH	JO
JU	OT	OF	OP	AU	JO
JU	NA	OH	OP	AG	JO
JU	BU	OL	OP	AÑ	JO
JU	CE	OI	OP	AV	JO
JU	OB	OF	OP	AY	JO
JU	HU	ON	OP	AF	JO
JU	CI	OI	OP	AI	JO
JU	HE	ON	OY	JU	JO
JU	DA	OJ	OY	JO	JO
JU	HI	ON	OY	JA	JO
JU	NE	OH	OY	JE	JO
JU	LI	OB	OF	UN	JO
JU	JU	OD	OF	US	JO
JU	NU	OH	OF	UL	JO
JU	LU	OB	OB	LA	JU
JU	OR	OF	OB	LO	JU
JU	BO	OL	OB	LE	JU
JU	CL	OI	OB	LL	JU
JU	BE	OL	OB	LI	JU
JU	BI	OL	OB	LU	JU
JU	BR	OL	OJ	DE	JU
JU	DU	OJ	OJ	DO	JU
JU	CH	OI	OJ	DI	JU
JU	OJ	OF	OJ	DA	JU
JU	OC	OF	OJ	DU	JU
JU	OI	OF	OI	CO	JU
JU	OL	OF	OI	CA	JU
JU	JO	OD	OI	CU	JU
JU	BL	OL	OI	CR	JU
JU	JA	OD	OI	CE	JU
JU	OP	OF	OI	CI	JU
JU	JE	OD	OI	CL	JU
JU	OY	OF	OI	CH	JU
JU	OF	OF	OL	BA	JU
JU	OH	OF	OL	BU	JU
JU	OZ	OF	OL	BO	JU
NU	CO	LI	OL	BE	JU
NU	CA	LI	OL	BI	JU
NU	CU	LI	OL	BR	JU
NU	CR	LI	OL	BL	JU
NU	BA	LL	OY	SE	JU
NU	FU	LO	OY	SU	JU
NU	FI	LO	OY	SI	JU
NU	BU	LL	OY	SA	JU
NU	FR	LO	OY	SO	JU
NU	CE	LI	OF	OT	JU
NU	CI	LI	OF	OB	JU
NU	FA	LO	OF	OR	JU
NU	FE	LO	OF	OJ	JU
NU	BO	LL	OF	OC	JU
NU	CL	LI	OF	OI	JU
NU	FO	LO	OF	OL	JU
NU	BE	LL	OF	OP	JU
NU	BI	LL	OF	OY	JU
NU	BR	LL	OF	OF	JU
NU	CH	LI	OF	OH	JU
NU	BL	LL	OF	OZ	JU
NU	FL	LO	OH	NO	JU
LU	CO	NI	OH	NI	JU
LU	CA	NI	OH	NA	JU
LU	CU	NI	OH	NE	JU
LU	CR	NI	OH	NU	JU
LU	FU	NO	OZ	PA	JU
LU	FI	NO	OZ	PO	JU
LU	FR	NO	OZ	PE	JU
LU	CE	NI	OZ	PR	JU
LU	CI	NI	OZ	PU	JU
LU	FA	NO	OZ	PI	JU
LU	FE	NO	OZ	PL	JU
LU	CL	NI	NO	PA	LA
LU	FO	NO	NO	PO	LA
LU	CH	NI	NO	PE	LA
LU	FL	NO	NO	PR	LA
OR	CO	JO	NO	PU	LA
OR	NO	JA	NO	PI	LA
OR	CA	JO	NO	PL	LA
OR	CU	JO	NO	TO	LE
OR	CR	JO	NO	TE	LE
OR	FU	JI	NO	TA	LE
OR	NI	JA	NO	TR	LE
OR	NA	JA	NO	TI	LE
OR	FI	JI	NO	TU	LE
OR	FR	JI	NI	SE	LE
OR	CE	JO	NI	SU	LE
OR	CI	JO	NI	SI	LE
OR	FA	JI	NI	SA	LE
OR	NE	JA	NI	SO	LE
OR	FE	JI	NE	SE	LI
OR	JU	JE	NE	SU	LI
OR	NU	JA	NE	SI	LI
OR	CL	JO	NE	SA	LI
OR	FO	JI	NE	SO	LI
OR	CH	JO	NU	CO	LI
OR	JO	JE	NU	CA	LI
OR	FL	JI	NU	CU	LI
OR	JA	JE	NU	CR	LI
OR	JE	JE	NU	CE	LI
BO	PA	HA	NU	CI	LI
BO	PO	HA	NU	CL	LI
BO	PE	HA	NU	CH	LI
BO	PR	HA	NA	TO	LL
BO	TO	HE	NA	TE	LL
BO	TE	HE	NA	TA	LL
BO	TA	HE	NA	TR	LL
BO	PU	HA	NA	TI	LL
BO	TR	HE	NA	TU	LL
BO	FU	HU	NE	PA	LL
BO	TI	HE	NE	PO	LL
BO	PI	HA	NE	PE	LL
BO	FI	HU	NE	PR	LL
BO	FR	HU	NE	PU	LL
BO	FA	HU	NE	PI	LL
BO	FE	HU	NE	PL	LL
BO	TU	HE	NU	BA	LL
BO	FO	HU	NU	BU	LL
BO	PL	HA	NU	BO	LL
BO	FL	HU	NU	BE	LL
GA	GA	AY	NU	BI	LL
CL	CL	EV	NU	BR	LL
FO	CO	DR	NU	BL	LL
FO	PA	DA	NA	PA	LO
FO	PO	DA	NA	PO	LO
FO	CA	DR	NA	PE	LO
FO	PE	DA	NA	PR	LO
FO	PR	DA	NA	PU	LO
FO	TO	DE	NA	PI	LO
FO	TE	DE	NA	PL	LO
FO	CU	DR	NE	TO	LO
FO	TA	DE	NE	TE	LO
FO	PU	DA	NE	TA	LO
FO	TR	DE	NE	TR	LO
FO	CR	DR	NE	TI	LO
FO	FU	DU	NE	TU	LO
FO	TI	DE	NU	FU	LO
FO	PI	DA	NU	FI	LO
FO	FI	DU	NU	FR	LO
FO	FR	DU	NU	FA	LO
FO	CE	DR	NU	FE	LO
FO	CI	DR	NU	FO	LO
FO	FA	DU	NU	FL	LO
FO	FE	DU	NO	FU	LU
FO	TU	DE	NO	FI	LU
FO	CL	DR	NO	FR	LU
FO	FO	DU	NO	FA	LU
FO	PL	DA	NO	FE	LU
FO	CH	DR	NO	FO	LU
FO	FL	DU	NO	FL	LU
BE	SE	HI	NI	CO	LU
BE	SU	HI	NI	CA	LU
BE	SI	HI	NI	CU	LU
BE	SA	HI	NI	CR	LU
BE	SO	HI	NI	CE	LU
BE	TO	HO	NI	CI	LU
BE	TE	HO	NI	CL	LU
BE	TA	HO	NI	CH	LU
BE	TR	HO	LO	PA	NA
BE	TI	HO	LO	PO	NA
BE	TU	HO	LO	PE	NA
BI	CO	HU	LO	PR	NA
BI	SE	HE	LO	PU	NA
BI	SU	HE	LO	PI	NA
BI	CA	HU	LO	PL	NA
BI	SI	HE	LL	TO	NA
BI	SA	HE	LL	TE	NA
BI	SO	HE	LL	TA	NA
BI	CU	HU	LL	TR	NA
BI	CR	HU	LL	TI	NA
BI	CE	HU	LL	TU	NA
BI	CI	HU	LO	TO	NE
BI	CL	HU	LO	TE	NE
BI	CH	HU	LO	TA	NE
BR	CO	HO	LO	TR	NE
BR	NO	HA	LO	TI	NE
BR	CA	HO	LO	TU	NE
BR	CU	HO	LL	PA	NE
BR	CR	HO	LL	PO	NE
BR	FU	HI	LL	PE	NE
BR	NI	HA	LL	PR	NE
BR	NA	HA	LL	PU	NE
BR	FI	HI	LL	PI	NE
BR	FR	HI	LL	PL	NE
BR	CE	HO	LI	SE	NE
BR	CI	HO	LI	SU	NE
BR	FA	HI	LI	SI	NE
BR	NE	HA	LI	SA	NE
BR	FE	HI	LI	SO	NE
BR	JU	HE	LE	SE	NI
BR	NU	HA	LE	SU	NI
BR	CL	HO	LE	SI	NI
BR	FO	HI	LE	SA	NI
BR	CH	HO	LE	SO	NI
BR	JO	HE	LU	CO	NI
BR	FL	HI	LU	CA	NI
BR	JA	HE	LU	CU	NI
BR	JE	HE	LU	CR	NI
PL	PL	VE	LU	CE	NI
DU	CO	FI	LU	CI	NI
DU	CA	FI	LU	CL	NI
DU	CU	FI	LU	CH	NI
DU	CR	FI	LA	PA	NO
DU	BA	FL	LA	PO	NO
DU	FU	FO	LA	PE	NO
DU	FI	FO	LA	PR	NO
DU	BU	FL	LA	PU	NO
DU	FR	FO	LA	PI	NO
DU	CE	FI	LA	PL	NO
DU	CI	FI	LA	PA	NO
DU	FA	FO	LA	PO	NO
DU	FE	FO	LA	PE	NO
DU	BO	FL	LA	PR	NO
DU	CL	FI	LA	PU	NO
DU	FO	FO	LA	PI	NO
DU	BE	FL	LA	PL	NO
DU	BI	FL	LE	TO	NO
DU	BR	FL	LE	TE	NO
DU	CH	FI	LE	TA	NO
DU	BL	FL	LE	TR	NO
DU	FL	FO	LE	TI	NO
GU	GU	AM	LE	TU	NO
OJ	DE	JU	LU	FU	NO
OJ	RE	JE	LU	FI	NO
OJ	VE	JA	LU	FR	NO
OJ	DO	JU	LU	FA	NO
OJ	DI	JU	LU	FE	NO
OJ	VI	JA	LU	FO	NO
OJ	VO	JA	LU	FL	NO
OJ	RO	JE	LO	FU	NU
OJ	DA	JU	LO	FI	NU
OJ	VA	JA	LO	FR	NU
OJ	RI	JE	LO	FA	NU
OJ	RA	JE	LO	FE	NU
OJ	DU	JU	LO	FO	NU
OJ	RU	JE	LO	FL	NU
OJ	VU	JA	LL	BA	NU
OC	UN	JI	LL	BU	NU
OC	RE	JO	LL	BO	NU
OC	US	JI	LL	BE	NU
OC	RO	JO	LL	BI	NU
OC	RI	JO	LL	BR	NU
OC	RA	JO	LL	BL	NU
OC	RU	JO	LI	CO	NU
OC	UL	JI	LI	CA	NU
OI	CO	JU	LI	CU	NU
OI	SE	JE	LI	CR	NU
OI	SU	JE	LI	CE	NU
OI	CA	JU	LI	CI	NU
OI	SI	JE	LI	CL	NU
OI	SA	JE	LI	CH	NU
OI	SO	JE	JU	LA	OB
OI	CU	JU	JU	LO	OB
OI	CR	JU	JU	LE	OB
OI	CE	JU	JU	LL	OB
OI	CI	JU	JU	LI	OB
OI	CL	JU	JU	LU	OB
OI	CH	JU	JO	RE	OC
GO	GO	AV	JO	RO	OC
OL	PA	JE	JO	RI	OC
OL	PO	JE	JO	RA	OC
OL	PE	JE	JO	RU	OC
OL	PR	JE	JU	JU	OD
OL	TO	JA	JU	JO	OD
OL	TE	JA	JU	JA	OD
OL	TA	JA	JU	JE	OD
OL	PU	JE	JO	SE	OD
OL	TR	JA	JO	SU	OD
OL	BA	JU	JO	SI	OD
OL	TI	JA	JO	SA	OD
OL	PI	JE	JO	SO	OD
OL	BU	JU	JU	OT	OF
OL	TU	JA	JU	OB	OF
OL	BO	JU	JU	OR	OF
OL	BE	JU	JU	OJ	OF
OL	BI	JU	JU	OC	OF
OL	BR	JU	JU	OI	OF
OL	PL	JE	JU	OL	OF
OL	BL	JU	JU	OP	OF
JO	DE	OS	JU	OY	OF
JO	CO	OR	JU	OF	OF
JO	EL	OT	JU	OH	OF
JO	EN	OT	JU	OZ	OF
JO	SE	OD	JO	UN	OF
JO	ES	OT	JO	US	OF
JO	UN	OF	JO	UL	OF
JO	SU	OD	JU	NO	OH
JO	AL	OP	JU	NI	OH
JO	CA	OR	JU	NA	OH
JO	SI	OD	JU	NE	OH
JO	RE	OC	JU	NU	OH
JO	DO	OS	JU	CO	OI
JO	DI	OS	JU	CA	OI
JO	SA	OD	JU	CU	OI
JO	SO	OD	JU	CR	OI
JO	ER	OT	JU	CE	OI
JO	CU	OR	JU	CI	OI
JO	AQ	OP	JU	CL	OI
JO	AN	OP	JU	CH	OI
JO	AM	OP	JE	SE	OI
JO	CR	OR	JE	SU	OI
JO	AR	OP	JE	SI	OI
JO	AC	OP	JE	SA	OI
JO	EX	OT	JE	SO	OI
JO	US	OF	JU	DE	OJ
JO	RO	OC	JU	DO	OJ
JO	AS	OP	JU	DI	OJ
JO	CE	OR	JU	DA	OJ
JO	AP	OP	JU	DU	OJ
JO	CI	OR	JA	VE	OJ
JO	AB	OP	JA	VI	OJ
JO	DA	OS	JA	VO	OJ
JO	AD	OP	JA	VA	OJ
JO	AT	OP	JA	VU	OJ
JO	JU	OY	JE	RE	OJ
JO	RI	OC	JE	RO	OJ
JO	EM	OT	JE	RI	OJ
JO	AH	OP	JE	RA	OJ
JO	RA	OC	JE	RU	OJ
JO	AU	OP	JU	BA	OL
JO	CL	OR	JU	BU	OL
JO	DU	OS	JU	BO	OL
JO	AG	OP	JU	BE	OL
JO	CH	OR	JU	BI	OL
JO	RU	OC	JU	BR	OL
JO	AÑ	OP	JU	BL	OL
JO	JO	OY	JA	TO	OL
JO	AV	OP	JA	TE	OL
JO	EC	OT	JA	TA	OL
JO	JA	OY	JA	TR	OL
JO	AY	OP	JA	TI	OL
JO	AF	OP	JA	TU	OL
JO	ED	OT	JE	PA	OL
JO	JE	OY	JE	PO	OL
JO	AI	OP	JE	PE	OL
JO	UL	OF	JE	PR	OL
JO	ET	OT	JE	PU	OL
JO	EF	OT	JE	PI	OL
BL	PA	HE	JE	PL	OL
BL	PO	HE	JU	HA	ON
BL	PE	HE	JU	HO	ON
BL	PR	HE	JU	HU	ON
BL	TO	HA	JU	HE	ON
BL	TE	HA	JU	HI	ON
BL	TA	HA	JA	RE	ON
BL	PU	HE	JA	RO	ON
BL	TR	HA	JA	RI	ON
BL	BA	HU	JA	RA	ON
BL	TI	HA	JA	RU	ON
BL	PI	HE	JE	VE	ON
BL	BU	HU	JE	VI	ON
BL	TU	HA	JE	VO	ON
BL	BO	HU	JE	VA	ON
BL	BE	HU	JE	VU	ON
BL	BI	HU	JO	AL	OP
BL	BR	HU	JO	AQ	OP
BL	PL	HE	JO	AN	OP
BL	BL	HU	JO	AM	OP
FL	PA	DE	JO	AR	OP
FL	PO	DE	JO	AC	OP
FL	PE	DE	JO	AS	OP
FL	PR	DE	JO	AP	OP
FL	TO	DA	JO	AB	OP
FL	TE	DA	JO	AD	OP
FL	TA	DA	JO	AT	OP
FL	PU	DE	JO	AH	OP
FL	TR	DA	JO	AU	OP
FL	BA	DU	JO	AG	OP
FL	GR	DR	JO	AÑ	OP
FL	TI	DA	JO	AV	OP
FL	PI	DE	JO	AY	OP
FL	BU	DU	JO	AF	OP
FL	TU	DA	JO	AI	OP
FL	BO	DU	JA	OT	OP
FL	GA	DR	JA	OB	OP
FL	BE	DU	JA	OR	OP
FL	BI	DU	JA	OJ	OP
FL	BR	DU	JA	OC	OP
FL	PL	DE	JA	OI	OP
FL	GU	DR	JA	OL	OP
FL	GE	DR	JA	OP	OP
FL	GO	DR	JA	OY	OP
FL	BL	DU	JA	OF	OP
FL	GL	DR	JA	OH	OP
JA	LA	OT	JA	OZ	OP
JA	LO	OT	JE	LA	OP
JA	NO	OR	JE	LO	OP
JA	RE	ON	JE	LE	OP
JA	VE	OJ	JE	LL	OP
JA	LE	OT	JE	LI	OP
JA	VI	OJ	JE	LU	OP
JA	TO	OL	JO	CO	OR
JA	TE	OL	JO	CA	OR
JA	TA	OL	JO	CU	OR
JA	TR	OL	JO	CR	OR
JA	LL	OT	JO	CE	OR
JA	GR	OY	JO	CI	OR
JA	TI	OL	JO	CL	OR
JA	NI	OR	JO	CH	OR
JA	OT	OP	JA	NO	OR
JA	VO	OJ	JA	NI	OR
JA	NA	OR	JA	NA	OR
JA	RO	ON	JA	NE	OR
JA	OB	OP	JA	NU	OR
JA	VA	OJ	JE	JU	OR
JA	NE	OR	JE	JO	OR
JA	LI	OT	JE	JA	OR
JA	RI	ON	JE	JE	OR
JA	NU	OR	JO	DE	OS
JA	LU	OT	JO	DO	OS
JA	OR	OP	JO	DI	OS
JA	TU	OL	JO	DA	OS
JA	RA	ON	JO	DU	OS
JA	GA	OY	JO	EL	OT
JA	GU	OY	JO	EN	OT
JA	OJ	OP	JO	ES	OT
JA	OC	OP	JO	ER	OT
JA	RU	ON	JO	EX	OT
JA	OI	OP	JO	EM	OT
JA	GE	OY	JO	EC	OT
JA	GO	OY	JO	ED	OT
JA	VU	OJ	JO	ET	OT
JA	OL	OP	JO	EF	OT
JA	OP	OP	JA	LA	OT
JA	GL	OY	JA	LO	OT
JA	OY	OP	JA	LE	OT
JA	OF	OP	JA	LL	OT
JA	OH	OP	JA	LI	OT
JA	OZ	OP	JA	LU	OT
OP	LA	JE	JE	OT	OT
OP	LO	JE	JE	OB	OT
OP	HA	JI	JE	OR	OT
OP	AL	JO	JE	OJ	OT
OP	LE	JE	JE	OC	OT
OP	AQ	JO	JE	OI	OT
OP	AN	JO	JE	OL	OT
OP	LL	JE	JE	OP	OT
OP	AM	JO	JE	OY	OT
OP	HO	JI	JE	OF	OT
OP	AR	JO	JE	OH	OT
OP	AC	JO	JE	OZ	OT
OP	OT	JA	JU	SE	OY
OP	AS	JO	JU	SU	OY
OP	OB	JA	JU	SI	OY
OP	HU	JI	JU	SA	OY
OP	AP	JO	JU	SO	OY
OP	HE	JI	JO	JU	OY
OP	AB	JO	JO	JO	OY
OP	HI	JI	JO	JA	OY
OP	AD	JO	JO	JE	OY
OP	AT	JO	JA	GR	OY
OP	LI	JE	JA	GA	OY
OP	LU	JE	JA	GU	OY
OP	OR	JA	JA	GE	OY
OP	AH	JO	JA	GO	OY
OP	AU	JO	JA	GL	OY
OP	AG	JO	JE	CO	OY
OP	OJ	JA	JE	CA	OY
OP	OC	JA	JE	CU	OY
OP	OI	JA	JE	CR	OY
OP	AÑ	JO	JE	CE	OY
OP	OL	JA	JE	CI	OY
OP	AV	JO	JE	CL	OY
OP	AY	JO	JE	CH	OY
OP	OP	JA	TO	TO	RE
OP	AF	JO	TE	TE	RO
OP	AI	JO	UN	RE	SA
OP	OY	JA	UN	RO	SA
OP	OF	JA	UN	RI	SA
OP	OH	JA	UN	RA	SA
OP	OZ	JA	UN	RU	SA
GL	GL	AR	UL	TO	SA
JE	LA	OP	UL	TE	SA
JE	CO	OY	UL	TA	SA
JE	SE	OI	UL	TR	SA
JE	LO	OP	UL	TI	SA
JE	PA	OL	UL	TU	SA
JE	PO	OL	UN	VE	SE
JE	SU	OI	UN	VI	SE
JE	CA	OY	UN	VO	SE
JE	PE	OL	UN	VA	SE
JE	SI	OI	UN	VU	SE
JE	RE	OJ	UL	PA	SE
JE	VE	ON	UL	PO	SE
JE	LE	OP	UL	PE	SE
JE	PR	OL	UL	PR	SE
JE	SA	OI	UL	PU	SE
JE	SO	OI	UL	PI	SE
JE	VI	ON	UL	PL	SE
JE	CU	OY	US	EL	SI
JE	PU	OL	US	EN	SI
JE	LL	OP	US	ES	SI
JE	CR	OY	US	ER	SI
JE	PI	OL	US	EX	SI
JE	OT	OT	US	EM	SI
JE	VO	ON	US	EC	SI
JE	RO	OJ	US	ED	SI
JE	CE	OY	US	ET	SI
JE	OB	OT	US	EF	SI
JE	CI	OY	US	DE	SO
JE	VA	ON	US	DO	SO
JE	LI	OP	US	DI	SO
JE	JU	OR	US	DA	SO
JE	RI	OJ	US	DU	SO
JE	LU	OP	UN	HA	SU
JE	OR	OT	UN	HO	SU
JE	RA	OJ	UN	HU	SU
JE	CL	OY	UN	HE	SU
JE	PL	OL	UN	HI	SU
JE	CH	OY	UL	BA	SU
JE	OJ	OT	UL	BU	SU
JE	OC	OT	UL	BO	SU
JE	RU	OJ	UL	BE	SU
JE	OI	OT	UL	BI	SU
JE	VU	ON	UL	BR	SU
JE	OL	OT	UL	BL	SU
JE	JO	OR	SE	PA	UL
JE	JA	OR	SE	PO	UL
JE	OP	OT	SE	PE	UL
JE	JE	OR	SE	PR	UL
JE	OY	OT	SE	PU	UL
JE	OF	OT	SE	PI	UL
JE	OH	OT	SE	PL	UL
JE	OZ	OT	SU	BA	UL
OY	CO	JE	SU	BU	UL
OY	SE	JU	SU	BO	UL
OY	SU	JU	SU	BE	UL
OY	CA	JE	SU	BI	UL
OY	SI	JU	SU	BR	UL
OY	SA	JU	SU	BL	UL
OY	SO	JU	SA	TO	UL
OY	CU	JE	SA	TE	UL
OY	CR	JE	SA	TA	UL
OY	GR	JA	SA	TR	UL
OY	CE	JE	SA	TI	UL
OY	CI	JE	SA	TU	UL
OY	JU	JO	SE	VE	UN
OY	GA	JA	SE	VI	UN
OY	CL	JE	SE	VO	UN
OY	CH	JE	SE	VA	UN
OY	GU	JA	SE	VU	UN
OY	GE	JA	SU	HA	UN
OY	GO	JA	SU	HO	UN
OY	JO	JO	SU	HU	UN
OY	JA	JO	SU	HE	UN
OY	GL	JA	SU	HI	UN
OY	JE	JO	SA	RE	UN
OF	UN	JO	SA	RO	UN
OF	RE	JI	SA	RI	UN
OF	OT	JU	SA	RA	UN
OF	US	JO	SA	RU	UN
OF	RO	JI	SE	JU	UR
OF	OB	JU	SE	JO	UR
OF	RI	JI	SE	JA	UR
OF	OR	JU	SE	JE	UR
OF	RA	JI	SI	FU	UR
OF	OJ	JU	SI	FI	UR
OF	OC	JU	SI	FR	UR
OF	RU	JI	SI	FA	UR
OF	OI	JU	SI	FE	UR
OF	OL	JU	SI	FO	UR
OF	OP	JU	SI	FL	UR
OF	OY	JU	SA	NO	UR
OF	OF	JU	SA	NI	UR
OF	UL	JO	SA	NA	UR
OF	OH	JU	SA	NE	UR
OF	OZ	JU	SA	NU	UR
UL	PA	SE	SO	CO	UR
UL	PO	SE	SO	CA	UR
UL	PE	SE	SO	CU	UR
UL	PR	SE	SO	CR	UR
UL	TO	SA	SO	CE	UR
UL	TE	SA	SO	CI	UR
UL	TA	SA	SO	CL	UR
UL	PU	SE	SO	CH	UR
UL	TR	SA	SI	EL	US
UL	BA	SU	SI	EN	US
UL	TI	SA	SI	ES	US
UL	PI	SE	SI	ER	US
UL	BU	SU	SI	EX	US
UL	TU	SA	SI	EM	US
UL	BO	SU	SI	EC	US
UL	BE	SU	SI	ED	US
UL	BI	SU	SI	ET	US
UL	BR	SU	SI	EF	US
UL	PL	SE	SO	DE	US
UL	BL	SU	SO	DO	US
OH	NO	JU	SO	DI	US
OH	PA	JI	SO	DA	US
OH	PO	JI	SO	DU	US
OH	PE	JI	SE	OT	UT
OH	PR	JI	SE	OB	UT
OH	PU	JI	SE	OR	UT
OH	NI	JU	SE	OJ	UT
OH	PI	JI	SE	OC	UT
OH	NA	JU	SE	OI	UT
OH	NE	JU	SE	OL	UT
OH	NU	JU	SE	OP	UT
OH	PL	JI	SE	OY	UT
ET	ET	CO	SE	OF	UT
OZ	NO	JI	SE	OH	UT
OZ	PA	JU	SE	OZ	UT
OZ	PO	JU	SI	DE	UT
OZ	PE	JU	SI	DO	UT
OZ	PR	JU	SI	DI	UT
OZ	PU	JU	SI	DA	UT
OZ	BA	JE	SI	DU	UT
OZ	FU	JA	SA	LA	UT
OZ	NI	JI	SA	LO	UT
OZ	PI	JU	SA	LE	UT
OZ	NA	JI	SA	LL	UT
OZ	FI	JA	SA	LI	UT
OZ	BU	JE	SA	LU	UT
OZ	FR	JA	SO	EL	UT
OZ	FA	JA	SO	EN	UT
OZ	NE	JI	SO	ES	UT
OZ	FE	JA	SO	ER	UT
OZ	NU	JI	SO	EX	UT
OZ	BO	JE	SO	EM	UT
OZ	FO	JA	SO	EC	UT
OZ	BE	JE	SO	ED	UT
OZ	BI	JE	SO	ET	UT
OZ	BR	JE	SO	EF	UT
OZ	PL	JU	PO	PO	VA
OZ	BL	JE	PL	PL	VE
OZ	FL	JA	PA	PA	VO

Observaréis que sale un número bastante reducido de resultados, al que se le podría dar un vistazo, aunque prefiero repetir la prueba con el lemario.

El resumen de los resultados es:

AL AM AR AV AY BA BE BI BL BO BR BU CI CO DA DE DI DO DR DU ER EU EV FA FE FI FL FO FR FU GL GO GR HA HE HI HO HU JA JE JI JO JU LA LE LI LL LO LU NA NE NI NO NU OB OC OD OF OH OI OJ OL ON OP OR OS OT OY RE RO SA SE SI SO SU UL UN UR US UT VA VE VO

El ataque con tres caracteres es viable, salvo por el problema de que tengo un lemario que está lleno de americanismos que no creo que sean aplicables, y tengo que expurgarlo un poco para reducir su tamaño.

Me hubiera gustando hacer algo más analítico, pero no se me ha ocurrido nada.

Voy a estar toda la semana fuera, así que no podré hacer nada. Si a la vuelta no lo habéis resuelto, volveré a la carga.

Páginas

opinar

Texto puro

  • No se permiten etiquetas HTML.
  • Saltos automáticos de líneas y de párrafos.
Imágenes
Puedes añadir hasta 10 imágenes explicativas a tus comentarios (pantallazos, etc).
Los archivos deben ser menores que 8 MB.
Tipos de archivo permitidos: png gif jpg jpeg.
By submitting this form, you accept the Mollom privacy policy.