Control de usuario
Patrocinadores
Estadísticas
Miembros:
145.844
Online:
697
Hilos:
826.946
Mensajes:
11.256.441
Stats

Índice de foros Wii Scene

Desvelado el bug del trucha

Homebrew, hacks, exploits y el resto de la scene de Wii

Moderadores: CyBeR PeReZ, Flash78

iacaca
Avatar de usuario
Habitual
 
Mensajes: 63
Registrado: 13 Feb 2008

Desvelado el bug del trucha

Mensajepor iacaca 24 Mar 2008 16:36

Bushing, al comprobar que Nintendo ya lo arregló en el controvertido IOS37, publicó el bug del firmado. http://wiibrew.org/index.php?title=Signing_bug

Y la verdad, el fallo es una estupidez... los de Nintendo se despistaron mucho para pasarlo por alto [qmparto]

wiibrew escribió:The bug here is that the hash can (and very likely does) contain a NULL byte, (chr)0 that is. To quote from the first google hit for strncmp:
"Compares up to num characters of the C string str1 to those of the C string str2. This function starts comparing the first character of each string. If they are equal to each other, it continues with the following pairs until the characters differ, until a terminating null-character is reached, or until num characters match in both strings, whichever happens first."
This last part means that if it finds a NULL byte, it stops comparing, even if there is more data after the NULL.
This reduces the effective length of the hash to the number of bytes before the NULL byte. This means that the difficulty of finding a hash collision is reduced from 2^(HASHLENGTH*8) to 2^(bytes before the null). That is a big change if the NULL is early in the hash. Assuming the NULL is at the 5th byte, that means that there is a one in 2^(4*8) chance that the hash matches, or one in 4 294 967 296, fairly computable within a reasonable time frame on a current computer that can try a few million hash inputs each sec.
Estoy en Jisko! [burla2]

Rigle
Avatar de usuario
Traductor del TWEWY
 
Mensajes: 833
Registrado: 10 Nov 2007

Mensajepor Rigle 24 Mar 2008 16:37

traduccion ?

iacaca
Avatar de usuario
Habitual
 
Mensajes: 63
Registrado: 13 Feb 2008

Mensajepor iacaca 24 Mar 2008 16:49

El método que utilizan los IOS antes del 37 para comparar las firmas se "detiene" cuando en la firma se encuentra un byte NULL, aunque la firma continue. De esta forma se puede firmar el disco con una firma muy corta rápidamente calculada. Por ejemplo, si en la firma pones un NULL en el quinto carácter, simplemente tienes que calcular 4 bytes válidos de la firma, y eso un PC actual lo calcula en nada (eso se comprueba en la rapidez con la que firma el Trucha Signer :Ð )
Estoy en Jisko! [burla2]

GameZelda
Avatar de usuario
Adicto
 
Mensajes: 274
Registrado: 02 Mar 2007

Mensajepor GameZelda 24 Mar 2008 16:58

El bug es que el hash puede contener un byte nulo (NULL), 0. La cita de el primer resultado de Google para "strncmp":

"Compara hasta num caracteres de la cadena str1 a estos en la cadena str2. La función empieza a comparar el primer carácter de cada cadena. Si son iguales, continua con los pares de caracteres siguientes, hasta que se llegue a un carácter nulo o hasta que se llega a num caracteres a ambas cadenas, lo que ocurra primero"

Esta ultima parte significa que si encuentra un carácter nulo, para de leer, aunque haya más información detrás del carácter nulo.

Esto reduce la longitud efectiva del hash a el numero de bytes antes del byte nulo. Esto significa que la dificultad de encontrar una colisión de hash se reduce de 2^(LONGITUDDELHASH*8) a 2^(bytes antes del carácter nulo). Esto es un gran cambio si el caracter nulo se encuentra en el hash. Suponiendo que el carácter nulo es el quinto byte, esto significa que hay una posibilidad entre 2^(4*8) de que el hash coincida, o una posibilidad entre 4.294.967.296, bastante computable en un tiempo razonable en un ordenador actual que puede probar unos pocos millones de hash cada segundo.


Vamos, que es un fallo de los gordos, usando un caracter nulo la función deja de comparar y por esto se puede encontrar una colisión en un tiempo corto.

No he usado la función "strncmp" nunca, pero pero supongo que poniendo el segundo carácter a nulo encontrar la combinación seria facilisimo, una posibilidad entre 256.

La solución creo que es facilisima, en el caso del ejemplo que dan en Wiibrew, seria tan fácil como cambiar "strncmp" a "memcmp", que es lo mismo pero que no se para cuando encuentra un carácter nulo.

Me parece increíble que nadie se dedicase a revisar el código de la comprobación, siendo tan importante como es. Supongo que debieron utilizar el método típico del "funciona? pues ya está" y listo [+risas]
Ultima edición por GameZelda el 24 Mar 2008 17:04, editado 1 vez
Objetivo: Top 5 Guitar Hero 1, nivel difícil
Actualmente Top 8

Imagen

(Clica para ver mi historial...)

PD: No es que sea malo en experto, lo único que solo he enviado 3 canciones que me salen más o menos bien (comprobar perfil también [Ooooo] ), en verdad las tengo todas en 5* [poraki] [poraki] [poraki]

¬¬¬¬¬¬¬¬¬¬
Avatar de usuario
Habitual
 
Mensajes: 58
Registrado: 30 Mar 2005
Ubicación: al lado de mi casa

Mensajepor ¬¬¬¬¬¬¬¬¬¬ 24 Mar 2008 17:19

GameZelda escribió:Supongo que debieron utilizar el método típico del "funciona? pues ya está" y listo [+risas]


xDDDD ojala xDD tonces seria todo mas facil jaja xD pero con tanto millon de por medio ... [Ooooo]

pepone1234
Avatar de usuario
Adicto
 
Mensajes: 425
Registrado: 08 Feb 2007
Ubicación: Bilbao

Mensajepor pepone1234 24 Mar 2008 17:22

A ver si lo he entendido bien. Lo que hace este método es comparar dos cadenas para ver si son iguales. Si las dos son iguales, salta y si en la primera hay un byte nulo no continúa la comprobación, con lo que las posibilidades de éxito aumentan a medida que el byte nulo se encuentre más cerca del principio debido a las características de los números exponenciales y un poco de probabilidad ¿no es así? ein?
Una millonésima de la millonésima de la millonésima de la millonénisma de la millonésima de segundo después del Big Bang, el universo tenía el tamaño de un guisante.

GameZelda
Avatar de usuario
Adicto
 
Mensajes: 274
Registrado: 02 Mar 2007

Mensajepor GameZelda 24 Mar 2008 17:25

pepone1234 escribió:A ver si lo he entendido bien. Lo que hace este método es comparar dos cadenas para ver si son iguales. Si las dos son iguales, salta y si en la primera hay un byte nulo no continúa la comprobación, con lo que las posibilidades de éxito aumentan a medida que el byte nulo se encuentre más cerca del principio debido a las características de los números exponenciales y un poco de probabilidad ¿no es así? ein?


Exacto (excepto que el byte nulo puede estar en cualquiera de las dos cadenas y no solo en la primera)

(Que no son cadenas, este es el problema, que son datos binarios y usaron funciones para cadenas)
Ultima edición por GameZelda el 24 Mar 2008 17:28, editado 1 vez
Objetivo: Top 5 Guitar Hero 1, nivel difícil
Actualmente Top 8

Imagen

(Clica para ver mi historial...)

PD: No es que sea malo en experto, lo único que solo he enviado 3 canciones que me salen más o menos bien (comprobar perfil también [Ooooo] ), en verdad las tengo todas en 5* [poraki] [poraki] [poraki]

xt5
Avatar de usuario
Habitual
 
Mensajes: 84
Registrado: 25 Mar 2006

Mensajepor xt5 24 Mar 2008 22:10

http://debugmo.de/?p=61

edit
GameZelda escribió:Exacto (excepto que el byte nulo puede estar en cualquiera de las dos cadenas y no solo en la primera)

(Que no son cadenas, este es el problema, que son datos binarios y usaron funciones para cadenas)



no es que pueda estar en cualquiera de las dos, DEBE estar en las dos cadenas y en la misma posicion.
Ultima edición por xt5 el 24 Mar 2008 22:20, editado 1 vez

kamuy
Avatar de usuario
Habitual
 
Mensajes: 80
Registrado: 13 Feb 2005

Mensajepor kamuy 24 Mar 2008 23:39

weno yo no entiendo mucho pero imagino k esto no tiene nada k ver con k hayan descubierto como saltarse la ios37 de las narices no???

GameZelda
Avatar de usuario
Adicto
 
Mensajes: 274
Registrado: 02 Mar 2007

Mensajepor GameZelda 24 Mar 2008 23:40

xt5 escribió:edit



no es que pueda estar en cualquiera de las dos, DEBE estar en las dos cadenas y en la misma posicion.


Gracias, no sabia esto ya que no lo pone (al menos de una forma clara) en cplusplus.com ni nunca había usado esta función (que yo personalmente la veo un poco inútil :? )
Objetivo: Top 5 Guitar Hero 1, nivel difícil
Actualmente Top 8

Imagen

(Clica para ver mi historial...)

PD: No es que sea malo en experto, lo único que solo he enviado 3 canciones que me salen más o menos bien (comprobar perfil también [Ooooo] ), en verdad las tengo todas en 5* [poraki] [poraki] [poraki]

Siguiente

Volver a Scene

¿Quién está conectado?

Usuarios navegando por este foro: No hay usuarios registrados visitando el foro y 4 invitados