Resuelto -> AESito32: El cifrado definitivo

Imagen de Agustín
Enviado por Agustín en

Foros: 

Brillantemente superado por LlamameX en tiempo record. ¡Enhorabuena!

Por Agustín

Debéis saber que, a la vista de la descomunal potencia de algunos atacantes a los que no quiero nombrar, pero que todos sabéis quiénes son, esta vez la cosa va en serio. Este engendro no está pensado para que os divirtáis, sino para que lloréis lágrimas de sangre, eso en el caso de que tengáis a bien prestarle un poco de atención, a pesar de -o gracias a- mis desafortunadas palabras iniciales.

Bueno, al grano. Es un cifrado diabólico -al menos a mí me lo parece- que reúne las siguientes características:

  • I. La clave mide 32 caracteres, y se completa, si es necesario, por un sencillo procedimiento.
  • II. El alfabeto se modifica a partir de la clave.
  • III. Se cifra el texto por bloques de 32 caracteres, que previamente se desordenan a partir de una clave -distinta cada vez- y del alfabeto modificado.
  • IIII. El cifrado consiste en XOR con cada carácter del bloque desordenado y los de la citada clave variable que se genera, a partir de la anterior, para cada bloque.

1. El alfabeto es el que últimamente está de moda, es decir

ABCDEFGHIJKLMNÑOPQRSTUVWXYZ_.,:;

de 32 caracteres, que puede codificarse con 5 bits

2. Hay una clave inicial que debe medir exactamente 32 caracteres. Si mide menos, se completa por un procedimiento simple que consiste en añadirle caracteres mediante la fórmula

K[i +1] = K[i] + 1

que ya se empleó en la Omelette. Es decir: Si el primer carácter es una A, el primero que se añade será una B, si el segundo es una B, el segundo que se añade será una C, etc.

Por ejemplo, si la clave es

LOS_LAMELIBRANQUIOS

(que es un tipo de molusco), la clave completa será:

LOS_LAMELIBRANQUIOSMPT.MBNFMJCSB

3. El alfabeto se modifica a partir de la clave, del siguiente modo:

a) Se obtienen las posiciones de la clave en el alfabeto base, lo que nos dará la lista:

12 16 20 28 12 01 13 05 12 09 02 19 01 14 18 22 09 16 20 13 17 21 29 13 02 14 06 13 10 03 20 02

b) Luego se ordena esta lista para obtener una secuencialización, de forma que podamos tratar con las repeticiones.

Clave ordenada
01 01 02 02 02 03 05 06 09 09 10 12 12 12 13 13 13 13 14 14 16 16 17 18 19 20 20 20 21 22 28 29
Secuencia
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

c)Ahora procedemos a desordenar el alfabeto de la siguiente manera: Tomamos la primera letra, que es, lógicamente, la A. Como el primer valor de la clave es el 12, que aparece por primera vez en la posición 11 (empezando por cero) de la secuencia, la letra A irá a la posición 11 del alfabeto

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
__ __ __ __ __ __ __ __ __ __ __ A_ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __

Hay que marcar de algún modo que la posición 11 ya está ocupada. Yo lo he implementado borrando el valor 11 de la matriz de posiciones de la clave.

A continuación tomamos la B, a la que le corresponde el valor 16 de la clave, cuya primera posición en la secuencia es la 20, luego la B va a la posición 20:

00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
__ __ __ __ __ __ __ __ __ __ __ A_ __ __ __ __ __ __ __ __ B_ __ __ __ __ __ __ __ __ __ __ __

y así sucesivamente, hasta que nos queda el alfabeto desordenado de esta forma:

FMKX;,HZJP.AEIGSW_NYBQTÑLCR:UODV

4. A partir de aquí ya podemos empezar a cifrar. Tenemos un flujo de entrada que es un fichero normalizado con respecto al alfabeto base. Por ejemplo este texto sobre la revolución palestina del malogrado Rodolfo Walsh, quien fue hecho desaparecer por la dictadura de Videla, :

LA_REVOLUCION_PALESTINA_POR_RODOLFO_J._WALSH_EN_ESTE_AGOSTO_DE_EN_QUE_RECRUDECE_LA_AGRESION_DE_ISRAEL_EN
_MEDIO_ORIENTE_Y_EN_QUE,_CORRESPONDIENTEMENTE,_SE_MULTIPLICAN_LAS_MENTIRAS_IMPERIALISTAS_PROPAGADAS_POR_LOS
_GRANDES_MONOPOLIOS_DE_LA_COMUNICACION,_RESULTA_IMPRESCINDIBLE_LEER_LO_QUE_ESCRIBIERA_ESTE_INSIGNE_Y_RECONO
CIDO_PERIODISTA_Y,_MAS_QUE_ESO,_ESTE_CONSECUENTE_COMBATIENTE_REVOLUCIONARIO,_INTEGRANTE_DE_MONTONEROS,_QUE
_DESAPARECIERA_EN_MARZO_DE_A_MANOS_DE_LA_DICTADURA_DE_VIDELA._ES_ESTA_LA_VERDADERA_HISTORIA,_DOCUMENTADA_A
UN_CON_FUENTES_QUE,_COMO_LA_ONU,_SI_PUEDEN_SER_SOSPECHADAS_DE_PARCIALIDAD,_NO_ES_PRECISAMENTE_EN_FAVOR_D
E_LA_RESISTENCIA_PALESTINA,_Y_RELATADA_POR_UN_RODOLFO_WALSH_SOBRE_EL_QUE_HOY_YA_ES_UNIVERSAL_SU_CREDIBILIDA
D_Y_HONESTIDAD_INTELECTUAL,_UN_ESCRITOR_ALABADO_MUNDIALMENTE_Y_RECONOCIDO_COMO_UN_CLASICO_DE_LA_LITERATURA
_POLITICA_Y_COMO_UN_EXCELSO,_PENETRANTE_E_INSUPERABLE_INVESTIGADOR._EL_PRESENTE_TRABAJO_DE_RODOLFO_WALSH_F
UE_PUBLICADO_EN_EL_DIARIO_NOTICIAS,_EN_JUNIO_DE_._PUBLICAMOS_ADEMAS_LA_POLEMICA_POSTERIOR_ENTRE_WALSH_Y_EL_E
NTONCES_EMBAJADOR_DEL_ESTADO_DE_ISRAEL_EN_ARGENTINA._EL_CONJUNTO_DE_ESTOS_MATERIALES_ES_REPRODUCIDO_EN_B
ASE_A_LOS_CUADERNOS_DE_LA_REVISTA_JOTAPE_QUE_APARECIA_EN_LOS_Y_A_LA_EDICION_REALIZADA_POR_LA_EDITORIAL_ULTIM
O_RECURSO,_EN_MAYO_DE_._

https://www.dropbox.com/s/aqx7zpjl4y6mhrw/Rodolfo-Walsh-La-revoluci%C3%B...

a) Tomamos el texto en bloques de 32 caracteres

Bloque
LA_REVOLUCION_PALESTINA_POR_RODO

b) Generamos una clave nueva, a partir de la anterior, por el procedimieto ya descrito, de tomar para cada carácter, el que le sigue en el alfabeto base. Aunque esto parece excesivamente trivial, no lo es tanto, porque las posiciones de esas letras van a referirse al alfabeto modificado, y la secuencia ya no será tan simple. Eso también viene de la Omelette.

Nueva clave
MPT.MBNFMJCSBÑRVJPTNQU,NCÑGNKDTC

Cuyas posiciones en el alfabeto modificado son:

Posiciones de la clave
02 10 23 11 02 21 19 01 02 09 26 16 21 24 27 32 09 10 23 19 22 29 06 19 26 24 15 19 03 31 23 26
Posiciones ordenadas
01 02 02 02 03 06 09 09 10 10 11 15 16 19 19 19 19 21 21 22 23 23 23 24 24 26 26 26 27 29 31 32
Secuencia
00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

c) Mediante esta clave se desordena el primer bloque de caracteres, por el procedimiento ya descrito.

Bloque desordenado
LLEURACLAERROOT__VNI_SD_OIPOPNOA

d) Se realiza XOR entre cada carácter del bloque desordenado y cada carácter de la clave, usando las posiciones de ambas en el alfabeto modificado
En nuestro caso tenemos los siguientes valores:

Bloque cifrado
C_RT:VAL.;XQP.EGCT;V;Y:X;RZSAEAN

(El cifrado de este artículo está en: https://www.dropbox.com/s/0rh8jodo4sr1xy0/Cifrado-R-Walsh.txt)

Y así sucesivamente. Si el último bloque tiene menos de 32 caracteres se completa con el mismo procedimiento que se usa para completar la clave, pero con referencia al alfabeto derivado.

Por Agustín

Como véis, hay cierto tejemaneje de bytes, como en AES, pero para cada bloque es distinto, porque la clave va cambiando. Podría parecer que es un OTP porque la clave no se repite, pero tiene la debilidad de que las nuevas claves se derivan de la que introduce el usuario. Ay, que no debía señalar las debilidades. Bueno, da igual, porque ya veo a LlamameX estableciendo ecuaciones diofánticas sobre los índices y los valores, y..., bueno, ya sabéis cómo es.

El descifrado sigue el mismo procedimiento con la salvedad de que primero se realiza el XOR entre la clave y el bloque cifrado, y luego se reordena, La reordenación es muy sencilla, pues, basta con ir a los valores de la clave secuenciados, e ir tomando los caracteres que ocupan en el bloque las posiciones correpondientes.

El reto consiste en descifrar este fichero

Bueno, lo que más me preocupa es que varios de vosotros tenéis retos en marcha, y alguno más, que estábais a punto de alumbrar, como el CHE de LlamameX, Lo siento mucho, pero es época de crisis y hay que hacer méritos ante el Lado Oscuro. Por cierto, que al parecer no hay ninguna oferta de empleo en este momento. Cachis.

Os dejo ya, que oigo el retumbar de la botas de la Mengela, acercándose.

P.S.
Prometo prestar toda mi atención a vuestros monstruos, dentro de mis limitaciones, claro.

PS II
Veo que algunas listas (que se tratan como matrices) se cuentan desde 0, y otras desde 1. Ello es debido a ciertas limtaciones del lenguaje de programación empleado. Si embargo mi implementación funciona al cifrar y descifrar. Vosotros podéis modificar ese aspecto y los que haga falta.

¡Demontres!

¿No decías que no se te viniera con más cifrados?

Bueno, devuelvo mi cifrado a su cripta, pero que sepais que para cuando salga estará más gordo y más fuerte.

Y ahora echémosle un vistazo al tuyo...

Casi que mejor que no nos dispersemos

Me parece que vamos a necesitar todas nuestras energías en este monstruito tuyo, así que me espero.

Para acabar de pillarlo bien primero haré mi propia implementación, que es la mejor manera de ver a los algoritmos en paños menores, aunque a priori este tuyo parece ya para jugar con los chicos grandes.

Un detalle,

La construcción de la clave extendida no la haces con la fórmula que indicas, sinó que sumas 1 al carácter desde el principio, algo así como: K[L+i]=K[i]+1, donde L es la longitud de la clave sin extender

Sigo leyendo

Vaya pedazo de bicho

Es lo primero que se me ha venido a la cabeza después de leerlo. Me parece que se van a hacer realidad tus palabras: vamos a llorar lágrimas de sangre. Bueno, vamos a ver qué se puede hacer

Pero bueno: ¿no decías que

Pero bueno: ¿no decías que los retos tenían que ser abordables, para no frustrar a los atacantes? Venga, por lo menos dinos si la clave del reto es toda una frase de 32 bytes, o ha sido completada con el procedimiento que indicas; estamos en cuarto menguante y proceden las peticiones de cosas que queramos menguar, o eso dicen..

Tanto potito en la clinica

ha acabado desarrollándote superpoderes y llevándote al lado oscuro. Pero te vas a enfrentar a un grupo de Vengadores entrenado en la lucha bit a bit, con sus uniformes ajustados y sus lenguajes de programa-repetición. No te darán cuartel hasta recluirte de nuevo en las profundidades de las mazmorras de la clínica, pero antes despedazarán a esa criatura infernal que acabas de crear. ¿Verdad chicos?.
¿Chicos?
(...)
¡CHICOS!
¡Esperadmeeeeee!

Una preguntita...

Ayer tuve que interrumpir la implementación del cifrario, y me quedé a medias. A ver si me pongo esta noche un ratito, porque me pasa como a LlamameX, hasta que no lo implemente no lo entenderé.

Quería preguntar para confirmar. Para obtener la siguiente clave del siguiente bloque, a las letras de la clave actual se les suma 1, pero su codificación se hace con el alfabeto desordenado actual, no con el ordenado del comienzo (es decir, no se hace con "ABCDEFGHIJKLMNÑOPQRSTUVWXYZ_.,:;"), ¿no?

Una cosilla

No lo puedo comprobar hasta que termine mi implementación, pero me está pareciendo que la evolución es siempre sumando 1 modulo 32, si esto es asi cada 32 bloques repetimos clave, cosa que permitiría encolumnar un grupo de 32 cada 1024 caracteres, puesto que las posiciones desordenadas dependen sólo de la clave. A ver, a ver.

Quizá me equivoque, porque no

Quizá me equivoque, porque no lo he comprobado, pero puesto que la suma de 1 se hace respecto del alfabeto desordenado, es muy posible que la clave no se repita, ya que al variar el alfabeto, varía la letra que se codificará al sumarle 1 para una misma letra, y distintos alfabetos (precisamente la pregunta que hice antes era para asegurarme de que esa repetición no se producía)

Eso está mejor

Yo había entendido que en cada bloque de 32 caracteres se desordenaba de nuevo el alfabeto. Entonces sí, se repite la clave cada 32 bloques, por lo que podemos hacer como dice LlamameX, partir el criptograma en líneas de 1024 caracteres, una debajo de otra, y luego partir estas líneas en grupos de 32 caracteres. Bloques en la misma vertical están codificados con la misma clave. Y puesto que el desorden depende únicamente de la clave, todos los bloques de 32 caracteres en una misma vertical tendrán el mismo desorden. Si tomamos una columna de un carácter de uno de estos bloques, veremos que todos los caracteres de esa columna están xoreados con una misma letra de la clave, por lo que conservarán las estadísticas de un texto normal. A partir de estas estadísticas, podemos determinar la codificación de las letras más frecuentes (en este caso, los espacios), y luego... tendré que mirarlo con más detenimiento para ver cómo se podría determinar la letra de la clave a partir de estas estadísticas

Espero no haberme equivocado en lo que he dicho, que tampoco me he parado mucho a pensarlo

Esa es la cosa

Y tenemos una ayuda añadida, la del kamarada kassimirov. Es decir, tenemos el mismo texto claro cifrado con dos claves distintas. Aunque tendrán ordanaciones distintas mantendrán exactamente la misma distribución estadística, por lo que no será difícil identificarlas. Esto debería ayudar mucho a desentrañar la codificación del alfabeto con el XOR, puesto que si xoreamos los carácteres cifrados que corresponden a las mismas posiciones (aunque estarán en columnas distintas) deberíamos obtener el XOR de las claves. No parece imposible poder sacarlas de ahí aunque falta por ver el esfuerzo.

Aunque voy demasiado lanzado. Aún me falta acabar la implementación para ver si todo esto es así o no. A ver si todo esto acaba en borraja's water.

Creo que no se va a poder hacer XOR...

La operación XOR entre texto desordenado y clave se hace respecto del alfabeto desordenado, y los alfabetos van a ser distintos en cada criptograma. La operación XOR entre los mismos caracteres cifrados con diferentes claves no nos va a dar la operación XOR entre las claves que los codifican

Ah, pues al final va a ser

Ah, pues al final va a ser divertido y todo. Sigamos los pasos del difunto Xor:

Tenemos un hexagrama que se repite dos veces:

:JWSYH

y 12 pentagramas que se repiten también 2 veces cada uno:

:JWSY
;MJEH
AMSQT
FFIS;
J,B,R
JWSYH
MWMYC
NW;KM
PÑJÑA
SHQHN
VYÑ_J
YRCW,

Primeros datos

Verificado, la clave se bucla cada 32 bloques, pero lo que es más divertido, la primera clave extendida, la que se uso para generar el alfabeto desordenado, se utiliza también en el bloque 31 (y cada 32 después) ya que la que cifra el primer bloque se obtiene de su evolución por el mismo método

En el texto de ejemplo:

Clave extendida: [LOS_LAMELIBRANQUIOSMPT.MBNFMJCSB]
Alfacript: [FMKX;,HZJP.AEIGSW_NYBQTÑLCR:UODV]
Clave:[00] [MPT.MBNFMJCSBÑRVJPTNQU,NCÑGNKDTC]
Clave:[01] [NQU,NCÑGNKDTCOSWKQUÑRV:ÑDOHÑLEUD]
...
Clave:[31] [LOS_LAMELIBRANQUIOSMPT.MBNFMJCSB]
Clave:[32] [MPT.MBNFMJCSBÑRVJPTNQU,NCÑGNKDTC]

pista pista

Buenas hace tiempo,he estado escondido sin enfrentarme a los retos que postean y hoy he decidido hacerlo, y solo tengo una pregunta no se si puedas responderla o quizás la respuesta diga demasiado...

al grano la pregunta es ¿La clave inicial es algo coherente o simplemente creaste una clave como cayera?

------------------------------------------------------------------------------------------------------------

"El que va demasiado aprisa llega tan tarde como el que va muy despacio"

Gracias

Espero no ahogarme tan rápido.

Agustin --> gracias por tu respuesta, como había dicho nunca me había lanzado a estos retos y no sabía la estructura que manejaban... y si que hace llorar

------------------------------------------------------------------------------------------------------------

"El que va demasiado aprisa llega tan tarde como el que va muy despacio"

Otra idea

Se va a notar que vengo de un atasco de tráfico, ya sabéis las ideas locas que me dan.

Dado que la clave siempre evoluciona +1 mod 32, para cada posición pasaremos por todos los carácteres del alfabeto modificado. Concretamente en algún momento pasaremos por una cuyo primer carácter sea el que se codifica como 0. Dicha clave, al ordenarla, mantendrá ese carácter en la primera posición y además al hacer el XOR su valor será nulo, manteniendo el valor del caracter en claro (eso si, codificado por el alfabeto desordenado).

Sabemos también que cada 32 bloques volveremos a pasar por él, con lo que cada 32 tendremos en la primera columna algo parecido a un carácter sin cifrar. Podríamos pues agrupar por bloques de 32 y buscar por frecuencias en ellos asumiendo para cada uno de ellos que estamos en el caso Ki=0. Eso nos permitiría obtener 32 candidatos a alfabeto derivado y desde ahí atacar la clave.

Cachis...

Ayer no me pude poner con el reto, y no sé si hoy y mañana podré, pero seguro que el Viernes, Sábado y Domingo podré. Lo que ha dicho LlamameX me parece muy interesante, y si sigue así, pronto se lo cargará

Implementación

Voy muy retrasado con este reto, aún estoy implementándolo. Tengo el cifrado, pero no me acaba de salir bien el descifrado, no entiendo la explicación de la parte última del procedimiento, que se resume en una única frase: La reordenación es muy sencilla, pues, basta con ir a los valores de la clave secuenciados, e ir tomando los caracteres que ocupan en el bloque las posiciones correpondientes.

El resultado que obtengo, el XOR previo a la reordenación con el primer bloque cifrado del ejemplo, es LLEURACLAERROOT__VNI_SD_OIPOPNOA. ¿Qué he de hacer a continuación?.

Para cuando lo termine ya estará descifrado, si es que....

Uy ahi casi lo saque por prueba y error

Ya que con esa definición no me acababa de salir. Tal y como lo hago:

1) 2) y 3) Como dice Agustín.
4) Obtienes el carácter del bloque desordenado (el que acabas de obtener del XOR) de la misma posición P obtenida en 2)
5) Concatenas ese caracter al nuevo bloque.

Te lo pongo en código

function Reordenar(clave,bloque,alfabeto) {
var i=0;
var j=0;
var a='';
var resul='';
var ocupados=new Array(LB);
var oclave=Ordenar(clave,alfabeto);
for (i=0;i<LB;i++) {
 j=oclave.indexOf(clave.substr(i,1));
 while (ocupados[j] && j<LB) j=j+1;
 a=bloque.substr(j,1)
 ocupados[j]=true;
 resul=resul+a;
 }
return (resul);
 }

Cositas y me corrijo

Decía que cuando la clave empiece por el carácter Ki=0 la el Ci correspondería al Ai codificado por el alfabeto derivado. Es mejor aún. Dado que todas las codificaciones se hacen por el mismo alfabeto, el carácter al final será el del texto en claro ya que lo aplicamos 2 veces, para obtener Ai y para Ci. En el caso del ejemplo. Dado que el alfabeto derivado es

FMKX;,HZJP.AEIGSW_NYBQTÑLCR:UODV

Será la F la que será nula en el XOR. MIrando que clave generada empieza por F tenemos:

Clave:[25]  [FJNUFZG:FC_MZHLOCJNGKÑVG_H;GD.N_]

Que se aplica a

Bloqi :[25] [E_Y_RECONOCIDO_COMO_UN_CLASICO_D]
Bloqo :[25] [ERNIUSOAED_MOC_CICLDYO_N_OOO_CC_]

Para ser codificado como

ENF_UJYWEZFFRVP;B_.W_.GUF:CYSYAF

vemos que la E original se mantiene en su sitio (por el valor 0 de la F) y que no cambia en el cifrado, ya que hacemos XOR entre 0 y 12 (su valor en el alfabeto derivado) pero buscamos ese mismo valor (12) en el alfabeto para buscar el carácter que representa, que por supuesto es "E".

Así pues podemos buscar carácteres en claro concretos. He buscado ver para que bloque el espacio tiene una frecuencia más alta y en el ejemplo encuentro

Grupo [25]
A[7] B[0] C[1] D[2] E[2] F[1] G[3] H[2] I[3] J[3] K[0] L[4] M[3] N[4] Ñ[0] O[5] P[0] Q[0] R[5] S[6] T[2] U[4] V[2] W[0] X[0] Y[0] Z[0] _[16] .[1] ,[1] :[0] ;[0]

Que casa perfectamente con el caso en que la clave empieza por F, validando el método.

Trasladando este sistema al texto del reto tenemos:

Grupo [16]
A[0] B[1] C[1] D[0] E[2] F[0] G[0] H[0] I[2] J[1] K[0] L[0] M[0] N[0] Ñ[0] O[0] P[1] Q[0] R[4] S[0] T[0] U[1] V[0] W[0] X[0] Y[2] Z[1] _[7] .[0] ,[0] :[0] ;[0]

De donde podríamos concluir que la clave 16 (y cada 32 posteriormente) empieza por el caracter nulo. No obstante aparecen dos "Y" y ninguna "A". No es imposible aunque poco probable. El siguiente 2 casos con más espacios sólo tienen 3 y en uno de ellos sale una "W" y en el otro 3 "J" con lo que me quedo con este candidato.

A partir de aquí sabemos que la clave 17 empezará por el carácter siguiente, según el alfabeto normal, al que represente al espacio y que los XORs que se hagan se harán con 1 con lo que la representación del caracter será +-1. Voy a mirar que camino encuentro más viable si ese o buscar el espacio en la columna 1 (para mi la primera es la 0)

Ahora con la vale corta

Lo anterior corresponde a la clave larga. Los mismos datos con la clave corta son

Grupo [24]
A[0] B[0] C[0] D[1] E[1] F[0] G[2] H[2] I[0] J[0] K[0] L[1] M[0] N[1] Ñ[0] O[1] P[0] Q[0] R[2] S[1] T[3] U[0] V[0] W[0] X[0] Y[0] Z[0] _[7] .[0] ,[0] :[0] ;[0]

Aunque el número de espacios coincide, recordemos que con esta clave el cero lo tendremos en otra posición con lo que los carácteres en claro no tienen por que coincidir.

Ahora bien, podemos usarlo para determinar en que líneas de tenemos "A" en el claro en posiciones conocidas (que pasen a ser, por ejemplo segundas columnas) para ver que carácter tiene la clave ahí. Si determinamos eso, si bajamos hasta la 31 sumando 1 desde ella tendremos un caracter de la clave original.

¡Pssst! ¡Eh! ¡Compis!

Ahora que no mira, ¿os habéis fijado que a LlamameX parece como si se le trabara la lengua?. Entre el Cifrario XOR y ahora el Aesito32 no le dáis respiro, por lo que a ver si le va a entrar un paralís. Que tener el melón en contínuo trance es mu malo pa las nuronas, tú.
Uyy, que se ha girado. Despistad.

Páginas

opinar

Texto puro

  • No se permiten etiquetas HTML.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.
By submitting this form, you accept the Mollom privacy policy.