Versión para impresora

Haz click aquí para ver este tema en su formato original

Foro _ Criptografia _ 44 Criptoanálisis Caótico

Publicado por: jose2c el 01/05/2005 12:10

en dnd lo encuentro, en remade? hackyashira? debe tener muchos pts para verlo?

Publicado por: CrackNeo el 01/05/2005 16:10

este reto no tiene ninguna restriccion ni de puntuaje , ni resolver ningun reto anterior
esta libre.

que si tiene grandes beneficios , un correo de hackyashira.com con 10mb para empezar y 20 puntos que se agregan a tu cuenta de remade :D

suerte a todos


y esta en remade

Publicado por: jose2c el 01/05/2005 18:06

pero no veo el reto, ya entre a remade y no veo el encriptado caotico :cry:

Publicado por: PescaoDeth el 01/05/2005 23:05

ya está en la sección de http://www.hackyashira.com/index.php?mode=RetosRemade&resp=userinfo&level=44
suerte

Publicado por: hackzatan el 02/05/2005 23:11

Hes Pescao q mas :) Oye mira lo que me tiene volando en este momento es esta linea.

Del Cifrado;

CÓDIGO
textocifrado[j] = textocifrado[j] > 255 ? textocifrado[j] - 256 : textocifrado[j];


y esta del Descifrado:
CÓDIGO
textodescifrado[j] = textodescifrado[j] > 255 ? textodescifrado[j] - 256 : textodescifrado[j];


Estas lineas no estan en el codigo original de Boinas Negras o esto es parte del reto:( :) Salu2!!

PD: No entiendo muy bien el reto pero creo que ya estoy apunto de resolverlo.

Salu2!!

Publicado por: PescaoDeth el 02/05/2005 23:38

esa linea está pq en php no existe el tipo byte que toma un valor hexadecimal entre 00-FF(0-255) y si la suma es mayor a FF comienza desde el principio(por efecto de tratarse de un tipo byte). en otras palabras siempre toma valores entre 0-255(original).
y como lo adapaté para ke funcionara en php(no está el tipo byte) tuve que agregar esa línea para cuando la suma me dé mayora a 255 tenga el mismo efecto.
el funcioanmiento es correcto pq lo comprobé.
se llega al mismo resultado(pero diferente encriptación) aunque si se usa el del php se llega más rápido a la solución ;)
saludos

Publicado por: hackzatan el 03/05/2005 16:33

:P Ya lo Pase a C de todas maneras....Ahora Intento como seria entonces......

Salu2!!

Publicado por: PescaoDeth el 06/05/2005 06:37

al parecer eres el único haceindo el reto ya que nadie aparte de tí a preguntado acerca del reto o de alguna duda

Publicado por: Manuel el 06/05/2005 09:34

Estamos en ello, lo que pasa es que llevo varios retos a la vez,...
Cuando me aburro de uno sigo con otro...

Yo lo estoy pasando a ensamblador y tengo algun problemilla con la FPU
en esta linea:

textoClaro[j] = (byte)( textoCifrado[j] + 256 - (int)(X*256) );

fld X ; real QWORD
fmul qwn256 ; real 256
frndint ; redondear
fistp Temp

lea ebx,szTextoClaro
mov edx,pTextoCifrado
movzx edx,byte ptr[edx+edi]
add edx,256
sub edx,Temp
mov [ebx+edi],dl
; edi --> J

aqui no me recoje el byte adecuado...

Saludos

Publicado por: Manuel el 10/05/2005 17:27

Pues ya solucioné los problemillas con el copro y pase el codigo
a ensamblador...

Resulta que el algoritmo es sensible a la precision con que trabaja la FPU.
uff, hasta que me di cuenta del error...

El código en C# trabaja con precision de 53 bits. asi que cambié el valor del
control de la fpu para adaptarlo a 53 bits de precision y voilá, ya obtengo los mismos resultados en ensamblador.

El problema lo genera el siguiente bucle:

fld qword ptr[K_0_15+edi*8]
fld X

@@: fld1
fsub st,st(1) ; (1-X)
fmul st,st(1) ; * x ; for ( i=0; i<N; i++ )
fmul st,st(2) ; * k ; X = k*X*(1-X);
fstp st(1)

dec ecx
jnz @B

fstp X
...

En el que si hay muchas iteraciones, la precisión entra en juego...

Por supuesto el sistema funciona con más precision, siempre que tanto
el cifrador como el descifrador trabajen igual.

Ahora bien, el cifrador de la web, con que precision de calculo trabaja, porque clave que yo calcule puede ser correcta para una precision de
64 bits y no para la web...

en fin, que opinais del tema?.

Publicado por: PescaoDeth el 10/05/2005 21:37

la precisión te ayuda a deducir 1 cosa. y es muy importante esa presición al hacer el cálculos. y de hecho te tiene ke dar lo mismo. y por supuesto ya conoces la presicion ke usa la web pq ya tiene el código php.
weno dp ke te des cuenta con respecto a ese tema, te va a llevar a concluir 1 cosa.
en todo caso es importante tenerlo funcionado en cualquier lenguaje para ir entendiendo como funciona. y una vez que comprendas 100% bien el funcionamiento te vas a dar cuenta de la debilidad ke tiene.
dp te va a llevar un poco de tiempo elaborar el ataque que asegure llegar al resultado final( al menos a mi fué lo que mas me demoró aunque simpre supe cual era la debilidad me costó asegurar el ataque a una convergencia(clave)).

Publicado por: Manuel el 10/05/2005 23:25

La precision de la web no la sé. o al menos no se como deducirla, La sabria si por
ejemplo supiese el resultado del siguiente bucle:

CÓDIGO
X= 0,82421875

k= 3,635

for ( i=0; i<1000; i++ )

          X = k*X*(1-X);

x = ??

Para saberlo deberia tener intalada la misma version de PHP que teneis en la web y yo
no tengo instalado PHP.

Saludos al foro

Publicado por: androm el 11/05/2005 10:33

Yo conozco su debidilidad :P , pero me da mucha pereza hacer el programa que la use, ya que es un poco complejillo.
Cuando tenga un par de dias aburridos en el curro lo intento hacer.

Publicado por: PescaoDeth el 11/05/2005 11:47

CITA
La precision de la web no la sé. o al menos no se como deducirla, La sabria si por
ejemplo supiese el resultado del siguiente bucle:

CÓDIGO
X= 0,82421875

k= 3,635

for ( i=0; i<1000; i++ )

          X = k*X*(1-X);

x = ??

Para saberlo deberia tener intalada la misma version de PHP que teneis en la web y yo
no tengo instalado PHP.

Saludos al foro
mientras te esté dando los mismo ke en la web está todo ok.
es decir tiene las misma presición .
la idea eske llegues a tener la misma encriptacion de la web.
para algo tienen ke servir los valores que te dá la web.
el problema es como usarlos.
pero ya deberías tener clara la debilidad.
yo pensé que existía un camino corto , pero no :shock: . al final era el camino largo y tiene 1 sola salida pero se puede acortar ese camino considerando otras cosas ke dp me dí cuenta al hacer los ataques el como reducir el camino:shock:.
dp de eso viene la parte simple ke es obtener la clave a partir de la clave bruta.
CITA
Yo conozco su debidilidad , pero me da mucha pereza hacer el programa que la use, ya que es un poco complejillo.

si la neta dá weba programarlo jajaj yo lo hice en c# para hacerla mas simple pq en c++ tuve un problema.y en vb era muy lento.
menos mal que tenía al MSDN a mano para algunos comandos :P

Publicado por: androm el 13/05/2005 08:13

He probado una version en Java, y con una clave conocida he echo una prueba y es mas lento que el caballo del malo, vamos que para una clave conocida tarda mas de 5 min.

Con el programa por fuerza bruta 256*256*5min=227 dias, :shock:

Creo que voy a buscar un metodo más corto. :lol:

Publicado por: PescaoDeth el 13/05/2005 08:56

no en java lo dejé pq era muy lento tb. el que me funcionaba mas rápido es el C# y el c++.
consideranto todo el tiempo que se demoró en terminar el reto "solamente trabajando el pc con el algorimo creado" me tardó mas o menos las primeras claves entre 1 a 2 horas y dp las siguientes mas o menos entre 2 y 3 min estimandos por cada una...
el tiempo total no lo conozco pq lo dejé trabando en la noche y cuando desperté ya había terminado (desde que partió con las claves de 2 min)
pero pienso que debe haber tardado en total unas 3 a 4 horas. mas menos 1 hora.
aunque no se obtienen las subclaves correlativamente.ya que se repiten a veces(teóricamente ya se debe saber cuando se vá a repetir y en que rato vas a obtener la última o penúltima) :;):

Publicado por: Vicio el 14/05/2005 00:16

u.u, suerte q se algo de php xD, pero pasarlo a C o_O ya me kgaron :( xD

Publicado por: PescaoDeth el 14/05/2005 01:16

Vicio ya hace tiempo que no pasas un Reto :jana:
parece que te haz quedado estancado tongue.gif

Publicado por: sarumah el 14/05/2005 02:07

quiero pasar el php a perl,, pero me caga el srand,, como puedo hacer un rand que funcione igual que el srand/rand del php??

Publicado por: PescaoDeth el 14/05/2005 02:12

se puede.
y para eso tiene que saber como funciona el sistema srand, para que sirve y como funciona.
es decir puedes hacer una imitación en esa funcion en cualquier lenguaje.

Publicado por: architect el 14/05/2005 21:38

Yo probe a hacer un bruteforce suponiendo que las subclaves son todas distintas, con un texto de 16 caracteres... pero me dan un monton de posiblilades... y encima no se si a lo mejor con rand % 16 se repite alguna clave... la verdad no se que hacer. Saludos

architect

Publicado por: PescaoDeth el 14/05/2005 22:06

te vas a dar cuenta que lo estas resolviendo bien cuando en ese monton de posibilidades comiencen a converger a los mismos valores.
es decir vas a obtener una lista grande de posibilidades. pero en todas la subclave es la misma o a lo mas son 2 o 3 posibles para 1 subclave..
con respecto a si se repiten en el dear:rolleyes:o del ataque pues si se puede repetir y eso no lo conoces bien por lo que tendrías que intentar con un texto mucho mayor a 16.
ya que la funcion rand%16 te puede tirar la sucesion 5,4,3,2,5,1,4 etc...
por lo que ya tendrías que usar un texto mas largo. cuanto mas largo?
no lo sabes y vas a tener que asegurarte con un texto muy largo y ver cuando te aparece la última o penúltima subclave..
tb existe la posibilidad que en la clave real exista un termino repetido que tampoco lo sabes :P .
pero no sigas hasta la última subclave mientras las 2 o 3 primeras te converjan a unas pocas posibilidades. en todo caso el tiempo de ataque te va a permintir decidir si vas o no por buen camino
:;):

Publicado por: architect el 19/05/2005 04:38

bueno, ahora hice el programa definitivo, que me va a decir cuales y en que orden estan las claves... en total va a tardar 5 dias suponiendo que Ns sea 255 (menos si es por ej. 103)... pero me fije en el random de boinasnegras (C#), y no tiene la misma debilidad que el de php (no la voy a decir xDxDxD), asi que el de boinasnegras no se como lo resolveria... la verdad podria hacer alguna func. como la que dijiste pescao, para que vea de todas las posibles soluciones los valores que se repiten, pero me da pereza... en vez de eso, hice que guarde en un archivo el progreso del brute por las dudas haya un corte de luz y tenga que empezar desde 0. Bueno, ya me canse de escribir. Saludos

architect

PD: cuando lo pase pescao, decime como era la forma mas corta

Publicado por: PescaoDeth el 19/05/2005 16:06

si es mejore ir guardando la ultima configuracion.
pero yo iva guardando las combinaciones validas en un archivo donde el primer archivo me guardaba la primera subclave.
luego pescaba ese archivo e iva leyendolo y gerenrando la segunda subclave válida para esa combinación.
aunque te falta otra variable a considerar aparte de Ns.
beuno mi esquema para el pirmer ataque era así

arhcivo 1(primera subclave)
xx xx xx
yy yy yy
....

archivo2(segunda subclave)
xx xx xx xx
yy yy yy yy
....
"ojo noes que se repitan los valores xx e yy" solo es la apariencia

para ahorrar memoria y luego lees ese archivo y generas otro.
de ese otro vuelves a generar un posterior etc.. hasta que aparezcan todas las subclaves.
aunque debería tardar menos de 5 horas
yo gereré cerca de 84 archivos pero apareció antes la última subclave no recuerdo en cual.
:P

Publicado por: androm el 19/05/2005 20:58

Si el proceso tarda poco, yo tengo uno en Java que te las saca en 8 horas.
El problema es que me saca las claves que pongo yo, he probado con varias claves y me las encuentra todas, pero la del reto no hay manera, tengo algo mal en el código y no lo veo. :oops:

Tambien lo he pasado a C y tarda algo menos, pero sigo con el mismo problema.

Creo que lo voy a dejar unos días, por que es algo del código y ya me he dejado los ojos. Suerte

Publicado por: PescaoDeth el 19/05/2005 21:14

a diferencia de los lenguajes lo tuve cuando transformaba los tipos.
pq en c++ el typo byte es -127-128 en c# es 0-255 en java no recuerdo y en C creo que tb es 0-255.
pero el script lo puse de php lo puse para que trabajara 0-255.
en todo caso comprobé el script php con el que está en el original simulando la misma secuencia de eleción de subclaves hasta con un texto de longitud de 94 caracteres (en caso del script php 94 hexadecimales).
y me daba lo mismo.
ahora podrías verificar el código encriptando y desencriptando con tu code. para ver si esta corriendo bien la funcion o la clase.
saludos
:P

Publicado por: architect el 20/05/2005 01:39

eso hice yo con una clave 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 y me funciono bien. Ns va 175 con la clave del reto... le hice un previo calculamiento de k e Yi en todos sus casos para que no lo tenga que hacer siempre, asi que ahora ya esta un poco mas del doble mas rapido

architect

PD: en c para que lo haga 0-255 al byte es "unsigned char"

Publicado por: hackzatan el 20/05/2005 02:00

Yo estoy trabajando en el original de Boinas Negras que es en Java y a mi me va muy bien Claro modificando unas Cuantas cosas pero eso si la clave me varia mucho ......Pescao sera mejor trabajarlo desde php? con la misma version que tu tienes instalado como para no joder tanto con el??

Salu2!!

Publicado por: PescaoDeth el 20/05/2005 02:53

CITA
eso hice yo con una clave 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 y me funciono bien. Ns va 175 con la clave del reto... le hice un previo calculamiento de k e Yi en todos sus casos para que no lo tenga que hacer siempre, asi que ahora ya esta un poco mas del doble mas rapido
claro, vas a encontrar muchas combinaciones forzando el Ns, pero hay una sola ke te va a dar el calculo de Ns con las subclaves.
pero insisto que creo que no estas tomando en cuenta otra variable importante.
CITA
Yo estoy trabajando en el original de Boinas Negras que es en Java y a mi me va muy bien Claro modificando unas Cuantas cosas pero eso si la clave me varia mucho ......Pescao sera mejor trabajarlo desde php? con la misma version que tu tienes instalado como para no joder tanto con el??


mira lo único que cambia es el tiempo en ke demora en aparecer la última subclave, el método es el mismo, no cambia en nada el ataque con respecto al original.

"usando lo que dá el php y el code original"
la única diferencia entre el de boinas con el del php es la eleción del orden de las subclaves, nada mas.
arrow.gif
CÓDIGO
el más rápido es usando la encriptacion del php.

acabo de darme cuenta que tiene una debilidad haberlo hecho en php

de la cual hablaba architect, que permite sacarlo en mucho menor tiempo. jejej no me habia dado cuenta :x  pero en fin lo que importa es saber reventarlo y en eso no cambia, en el de boinas se vá a demorar un poco mas pq hay que hacer una consideración.


pd: puedes usar el c# de boinas para atacar el del php.

pero no mezclar la encriptacion del que dá en boinas con el que dá en el php.
solo usa 1 de las dos.[/b]

Publicado por: architect el 20/05/2005 04:13

CITA
CITA
eso hice yo con una clave 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16 y me funciono bien. Ns va 175 con la clave del reto... le hice un previo calculamiento de k e Yi en todos sus casos para que no lo tenga que hacer siempre, asi que ahora ya esta un poco mas del doble mas rapido

claro, vas a encontrar muchas combinaciones forzando el Ns, pero hay una sola ke te va a dar el calculo de Ns con las subclaves.
pero insisto que creo que no estas tomando en cuenta otra variable importante.


La verdad es que no me doy cuenta cual es esa variable.... ahora me pongo a ver, pero dudo que me convenga, porque ya no me debe faltar casi nada para que el programita que hice me descubra las subclaves...

architect

Publicado por: architect el 20/05/2005 05:52

Jaja, miren lo que encontre http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TVM-49WKG3X-1&_user=10&_handle=V-WA-A-W-A-MsSAYZA-UUA-U-AAAEAZWCZW-AAAZDVBBZW-AWBZZYDDE-A-U&_fmt=summary&_coverDate=12%2F08%2F2003&_rdoc=1&_orig=browse&_srch=%23toc%235538%232003%23996809996%23471090!&_cdi=5538&view=c&_acct=C000050221&_version=1&_urlVersion=0&_userid=10&md5=b51a2b57f48d4de5225b651f28cb7481&subset=y:

CITA
Cryptanalysis of a discrete chaotic cryptosystem using external key
Abstract
In recent years, a growing number of cryptosystems based on chaos have been proposed, many of them fundamentally flawed by a lack of robustness and security. In this Letter, we explain how to break a very recent block cipher algorithm based on the logistic map. This cryptosystem uses a 128-bit external key to derive the initial condition and number of iterations, but in a weak way allowing for attack. As a consequence, the complete 128-bit external key can be obtained in a few steps. Using some weaknesses in the system parameter generation another attack can be used to recover the complete key.

Lastima que sale USD 30 comprarlo... y tiene solo 5 paginas... no creo que valga lo que sale. Lo hizo el mismo autor del codigo original de boinasnegras. Saludos

architect

Publicado por: androm el 20/05/2005 10:11

jejeje

Pescao los bytes en java van del -128 al 128, pero se pueden forzar para que vayan del 0 al 255, que es lo que hice para este reto, ya que debe funcionar igual que en php.

Mi problema creo que viene por la forma del ataque, ya que no es igual que el que estais realizado vosotros, yo he divido el ataque en dos pasos, uno inicial para sacar las dos variables principales del sistema (Proceso duro) y otro que sacaría las subclaves (Procesito que conociendo el valor incial de las variables, sacaría las subclaves en 10 minutos)

Mi problema viene con el primer paso, para claves introducidas por mi en el cifrador pasado a java o C, con un tratamiento entre 0 y 255, me encuentra las dos variables en pocas horas.
Si hago lo mismo con los textos generados en la página no me encuentra nada.

Tambien chequee la forma de ataque que utilizais vosotros, pero me tardaba demasiado, aunque no tube en cuenta la relacción que existe entre las dos variables, la cual es problable que baje bastante el tiempo de ejecución.

Estos dias tengo bastante trabajo, cuando lo acabe lo intentaré como vosotros, a ver si hay mas suerte.

Publicado por: PescaoDeth el 20/05/2005 23:58

si tambien las dividí en 2 partes.
primero hice un brute force a las dos variables en combinación con las primeras dos subclaves(en total un bruteforce de 4).
de allí en adelante ataqué de a 1 subclave. pq atacar de a 2 seguidas tardaba mucho.
pero no lo dije muy explicitamente para no confundir.
pero es má rápido como dices tú.pq demoró bastante en gererar ese archivo de 4.
es raro que no encuentre nada pq si generaste un archivo que tuviera todas las combinaciones de Ns y la otra variable. al tratar de encontrar la pirmera subclave debería encontrar varias soluciones.
luego para la segunda se reducen esas combinaciones hasta que convergen a 1 sola posibilidad de la segunda subclave. y así sucesivamente
"probé usando todas las combinaciones posibles 0-255"
Saludos

Publicado por: sarumah el 21/05/2005 22:18

yo estoy tambien ustilizano esa forma con una clave conocida y parece funcionar.. trabaje con rangos ya que si intento con todas las posibilidades tardaria una semana, por eso estoy tratando de encontrar alguna relacion entre Ns y la otra variable (una relacion matematica), ya que es claro que si Ns vale N , la otra varieble no Vale ciertos valores y seria perder tiempo probarlos.

Publicado por: PescaoDeth el 21/05/2005 23:06

XDDDD si no usas todos los valores no vas a dar con las sublaves.
busca una manera de reducir el tiempo sin reducir el rango mayor.

Publicado por: Manuel el 27/05/2005 13:36

No se por que os liais tanto, Veamos:

SumaClave = 0 ... 255

Para cada una de ellas, XorClave 0 ... 255

Se coloca en web 000000... como cifrado y se recoge el claro correspondiente.

Se coloca en web FFFFFF... como cifrado y se recoge el claro correspondiente.

Cuando se encuentre una combinacion que concuerde con el cifrado 0000..., se comprueba si tambien corresponde con el cifrado FFFF...,

bueno, esto se va haciendo byte a byte, haciendo las dos comprobaciones al mismo tiempo.

Yo hice el algoritmo en ensamblador, y tarda 5 minutos en darme la clave en bruto (para el peor de los casos) normalmente me da la clave en bruto en 2 o tres minutos.

Funciona con todas las claves que he probado, incluso con el de boinas negras
Pero en el de esta web, no hay manera...

He probado todos los modos en FPU

Redondeo:
- Al mas cercano par
- - Infinito
- + Infinito
- Truncar a cero

Control de infinito:
- Proyectivo
- Afinidad

Precision:
- 24 bits
- 53 bits
- 64 bits

En total 24 posibilidades

Por lo que me inclino a pensar que el código que se da en la web no
corresponda con el código real que hace los calculos en la web.

De todas formas, si alguien quiere que me envie:

Claro correspondiente a cifrado 0000... (1024 bytes)
Claro correspondiente a cifrado 5555... (1024 bytes)
Claro correspondiente a cifrado AAAA... (1024 bytes)
Claro correspondiente a cifrado FFFFF... (1024 bytes)

(No utilizar PHP) , y yo le doy la clave en bruto en 24h

Saludos

Publicado por: PescaoDeth el 27/05/2005 19:21

pues cuando empecé el reto dije que posian usar el de boinas o el de hackyashira. pq es la misma respuesta.
pues si sacaste el de boinas es lo mismo.
aunque insisto que el algoritmo de la web está bien pq lo comparé con el de boinas y rula bien.
es decir el puse la misma secuencia de subclaves que elije en boinas .
y me dá la misma encriptación tanto para encriptar y desencriptar.
de todas maneras lo voy a volver a revisar.

Publicado por: Manuel el 27/05/2005 22:21

Prueba y veras que no se corresponden.
si intrduces 000000 como cifrado en boinas negras te da 25588F como claro.
No es asi en esta web.

pero si dices que es la misma respuesta, ya me queda poquito para
sacar el reto...

Publicado por: architect el 28/05/2005 06:22

Pasado!!! :arre:

architect

Publicado por: PescaoDeth el 28/05/2005 07:41

okas.
en todo caso lo estuve revisando.
y en mi pc me rula bastante bien el script y lo ataco = que en boinas.
pero cuando lo subo me toma distintas encriptaciones a como funciona en mi server.
lo cual no me había dado cuenta. seguramente es por la version del php.
y la presicion con la que está configurada.
según lo que ví tiene una presición de 14 decimales(haceindo pruebas).
pero debería trabajar con 18 para ke se pueda atacar con cualquier lenguaje.
en mi servidor donde lo porgramé estaba con 18 decimales.

weno por el momento usen solo el de boinas hasta ke solucione el problema mientras averiguo como cambiar esa configuración y parlar con nuestro aupiciador para ver si lo pueden hacer.

pd:en el mismo enunciado dije que era la misma resp de boinas.

Publicado por: Alexhk_23 el 28/05/2005 10:20

CITA
Pasado!!!

architect


Congratulations bro ^^.png

Publicado por: architect el 28/05/2005 20:41

gracias

Publicado por: androm el 29/05/2005 15:16

Manuel tiene razon, todo el problema de mi código venia por esto, según he puesto una entrada y salida de boinas en el código me ha sacado la clave en un par de horas.

Bueno por fin lo termine. :lol:

Publicado por: Manuel el 29/05/2005 15:50

JO !! el de boinas lo tenia hecho hace un montón de tiempo (solo me quedaba el orden de los bytes y lo deje apartado.), no se como no me
percate de que era la misma solución, y lo pone bien claro en el enunciado.
pero en fin...

PASADOOOOOOOOOOO.

Publicado por: sarumah el 03/06/2005 22:29

he encontrado la forma de hacerlo con el de boinas y lo he resulta con unas cuantas claves conocidas y funciona bien,, pero tengo un problema con el srand, no genera la misma secuencia mi c# (mono(en linux), msc), que el de boinas que supongo que sera el de microsoft, necesito alguna ayuda o alguna fuente de informacion sobre como crear una secuencia aleatoria determinada,, o sea, en la web de boinas esta para ver la srand que usa y puedo gener cualquier cantida de numeros,, o sea, tengo dos posibles soluciones, 1 - entrar a boinas y guardar 100 rand para 4080 valores de entrada de srand,, 2- intentar simular esa srand, me inclino mas por la segunda,, alguna manita please. ya quiero terminar este maldito reto.

Publicado por: PescaoDeth el 03/06/2005 23:01

el reto en boinas trae un genreador de secuencias para la funcion rand a partir de una semilla

Publicado por: Manuel el 04/06/2005 16:57

Te iva a comentar eso, La funcion RND de C# es buena, pero en PHP supongo que cambia. yo hice un bucle con la suma de la clave como argumento para la función Random en C#.

Para corregir el problema, puedes sustituir la funcion RND en tu PHP, por un Array que contenga la secuencia de bytes (rnd) o sea:

$r = rand()%16; Esta linea eliminada.

CÓDIGO
$X = $Xs + ((double)$clave[$r])/256.0;

por:
CÓDIGO
$X = $Xs + ((double)$Arrayclave[j]/256.0;


Y la linea de Ns también.

Claro que el tamaño del mensaje a codificar/decodifica depende del tamaño de este Array, (Con 1024 bytes creo que hay suficiente.).

Publicado por: sarumah el 04/06/2005 17:20

Si, eso de sustituirlo por un array lo habia pensado,, el problema es que tengo entonces 4081 arrays de 100 bytes (por ejemplo) cada uno,, ya que la semilla de la la funcion Random varia de 0 a 4080, (suma de la clave), y para conseguir esos valores los tendria que generar desde la web de boinas ya que uso el mono c#, php no estoy usando, pero el problema es el mismo ya que en c# en linux no genera la misma secuencia que el c# de microsoft (el que usan en boinas),

No se como abras echo tu el programa, pero el que hice yo te saca la clave tal cual es,, pero ahora estoy penzando cambiar la cosa un poco y hacer 2 prutinas separadas, una que te de una clave con los valor repetidos y sin la ubicacion, para obtener el Ns y luego la otra para ordenarlos.

Publicado por: Manuel el 04/06/2005 18:16

CÓDIGO
No se como abras echo tu el programa, pero el que hice yo te saca la clave tal cual es,, pero ahora estoy penzando cambiar la cosa un poco y hacer 2 prutinas separadas, una que te de una clave con los valor repetidos y sin la ubicacion, para obtener el Ns y luego la otra para ordenarlos.


Exacto, a mi me saca la clave en bruto en 5 minutos jaja. es un algoritmo escrito en ensamblador, es una funcion que se llama a si misma, cada vez que se invoca avanza uin byte en la clave, de esta forma no tengo que recalcular todo.

despues de esto, con la suma, ya es coser y cantar.

El post anterior era un comentario para pescao, por si quiere cambiar el
algoritmo del PHP para que funcione.

Publicado por: PescaoDeth el 04/06/2005 22:50

CITA
CÓDIGO
No se como abras echo tu el programa, pero el que hice yo te saca la clave tal cual es,, pero ahora estoy penzando cambiar la cosa un poco y hacer 2 prutinas separadas, una que te de una clave con los valor repetidos y sin la ubicacion, para obtener el Ns y luego la otra para ordenarlos.


Exacto, a mi me saca la clave en bruto en 5 minutos jaja. es un algoritmo escrito en ensamblador, es una funcion que se llama a si misma, cada vez que se invoca avanza uin byte en la clave, de esta forma no tengo que recalcular todo.

despues de esto, con la suma, ya es coser y cantar.

El post anterior era un comentario para pescao, por si quiere cambiar el
algoritmo del PHP para que funcione.

si entiendo a lo que te refieres.
pues ese es el método para resolverlo(al menos yo lo hice así).
es decir cuano probé el algoritmo para ver si me coincidia con el de boinas hice ese reemplazo(pero en mi PC) y como tenía la misam secuencia me daba la misma encriptación. luego solo la restablecí para que funcionara con la funcion random del php para ke no tengan ke estar webaindo con funciones random de otros compiladores.
pero mi sorpresa fué ke cuando me dijiste que no rulaba.
pues cuanod llo volví a comprobar en el servidor no me funcionaba = que en miPC pq seguramente trabaja con menos decimales por lo que no dá lo mismo.
la funcion random no es el problema, el problema son los decimales.

Publicado por: sarumah el 18/07/2005 20:04

pues es que tendre que instalar el .net para poder resolverlo????,,
con el mono todo me funka muy bien,, ya he probado con muchas claves, claro,, encriptador con mono/desencriptador con mono,, ahora resulta que el mono y el .net aparte de queno generan los mismo valores aleatorios, parece que tampoco trabajan con la misma precicion en punto flotante.
Tendre que instalar el .net nomas, yo que lo queria esquivar.:_(,,

Publicado por: PescaoDeth el 25/08/2005 00:19

weno como dijimos correo a los 5 primeros en romper el reto.
architect
androm
Manuel
sarumah.
Felicitaciones :P .
Les voy a mandar un mp con la url y el pass. para entrar a su cuenta y tb el servidor smtp para configurarlo al outlook.
el que no quiera usar la cuenta por favor avisar.

Publicado por: VLAD el 25/08/2005 03:38

:shock: ... ke bien felicitaciones... algún día llegaré a ese punto... :cry: porke en estos momentos ni put... idea.. jejeje :;):

Publicado por: PescaoDeth el 25/08/2005 04:20

si puedes :;): . es cosa de pensar bien cual es el objetivc del reto, además de entenderlo bien. y luego estudiar muy bien el funcionamiento del código.
No sé si te sirva saber que ayuda mucho entender el nombre del reto.
es decir estudiar a tu rival antes de enfrentarlo. :P
luego de eso recien probar estrategias de ataques.
bueno eso vá en cada uno.

Publicado por: hackzatan el 25/08/2005 06:37

Manuel dijo q en ASM lo saco en 5 minutos tonces para alla voy a ASM..:) Vamos a haber como me sale..

Salu2!!

Publicado por: androm el 25/08/2005 06:38

Para mi gusto este es el reto más complejo que hay, y también el más divertido ya que necesitar adecuar un programa propio para romperlo. Y como se ha visto cada uno ha utilizado una estrategia para romperlo.

Publicado por: sarumah el 25/08/2005 15:24

Sip,, fue un reto muy interesante, y como dice pescao , lo mas importante es estudiar muy bien el funionamiento del code,, luego cuando lo conozcas a la perfeccion su funcionamiento, intentar romperlo ya es cuestion de creatividad y una buena programacion..
Por mi parte lo resolvi en C# en 12 min. (clve bruta) y luego unos 2 minutos para conseguir la clave real..

Publicado por: PescaoDeth el 25/08/2005 18:18

XDDDDDD mi code lo dejé en c# 5 horas en total cuando lo rompí. dp lo optimicé para que lo sacara en 20 min la clave y 5 min la primera estapa(valores iniciales).

:P bueno eso en asm es cool 5 min es genial.
lo que pasa esque cuando descubres la debilidad, lo demás se reduce a dejar corriendo el programita hasta que lo saque solo. mientras ves televisión ya que en mi caso me dejaba sin RAM por lo que no podía trabajar en otra cosa

Publicado por: androm el 26/08/2005 11:37

El mio depurado tardaba un par de horitas, y lo hacia en dos partes, aunque lo termine picando en Java, es que soy muy perro para utilizar C, y no te digo ASM.
:lol:

Publicado por: PescaoDeth el 03/09/2005 01:55

Bueno ya restablecí las cuentas de mail que se habían perdido tras la mantención del servidor.
los datos son los mismos que les envié anteriormente por mp.
no olividen cambiar su contraseña. y cualquier porblema que tengan con la cuenta , me mandan un mp para arreglarlo.
saludos

Publicado por: APUROMAFO el 28/11/2005 19:59

PXA..ta muy raro..incluso el decode..hay un parentesis.. de mas..jaja
creo que nunk lo hare..jaja

Publicado por: Paisterist el 13/03/2006 14:38

Estoy medio desorientado pero creo que voy encontrando la forma ;)

Saludos

Publicado por: NeonMan el 18/09/2006 13:41

todo el algoritmo parece Stream, utiliza un flujo continuo de datos, no divide en bloques, además, srand No es puramente aleatorio ¿verdad?