MANDAXXXX escribió:mmmm 256^256:
3231700607131100730071487668866995196044410266971548403213034542752465513886
7890893197201411522913463688717960921898019494119559150490921095088152386448
2831206308773673009960917501977503896521067960576383840675682767922186426197
5616183809433847617047058164585203630504288757589154106580860755239912393038
5521914333389668342420684974786564569494856176035326322058077805659331026192
7084603141502585928641771167259436037184618573575983511523016459044036976132
3328723122712568471082020972515710172693132346967854258065669793504599726835
2998638215525166389437335543602135433229604645318478604952148193555853611059
596230656 combinacines.........![]()
a_SBeR_RH escribió:y usar CUDA para acelerar la obtención de una clave valida?¿
nyonyo escribió:Creo que has tenido muy buena idea Klaus.
Y no creo que sea 256^256 sino más bien 256*256 con lo que "solo" tenemos 65536 combinaciones, que no son muchas.
Digo esto porque tenemos 256 posibilidades por cada caracter, ya que partimos que el caracter anterior es válido, por lo menos eso creo.
Vamos que me parece muy buena idea la forma de obtener una clave original.
Un saludo.
. klausus escribió:Creo que tengo una pequeña idea de como solucionar el trucha y obtener la clave original de nintendo para firmar con la clave original.
Pero antes diganme si mis susposiciones son correctas si son asi puede que sea valido...
Hasta lo que he entendido actualmente la consola con los IOS antes del nuevo que hay ahora (37) la comprobacion la hacia hasta encontrarse el final de cadena (0x00) no?
Leia dos cadenas y en ambas tenia que estar el 0x00 en la misma posicion y lo que habia antes de 0x00 era comprobado si era igual no es asi?
2 Dudas en 1 ---> ambas cadenas estan en el disco/canal o una en el disco/canal y la otra en la wii?¿lo que venga despues del 0x00 si lo ponemos por ejemeplo en decimoquito caracter, tieene que se igual tb?
Continuemos con mi suposicion si ponemos todo a 0x00 al no haber caracter que comprobar automaticamente devuelve 0 (validcio ok)
Encambio si ponemos el 0x00 al final hace la validacion compreta y adivinar todos esos numero es muy dificil o imposible de calcular todos de golpe no es asi?
Ahora bien...
Si ponemos el 0x00 a partir del segundo caracter el primero debera coincidir para k devuelva "0" de manera que ahora nuestros palos de ciego son solo de 256 numeros a provar una ver encontremos el numero X que funcione sabemos cual es el primer caracter de la clave ahora repetimos el mismo proceso pero poniendo de caracter 1 el que savemos que va ok y ahora provamos los 256 en el 2 para saber cual es el seguro y asi vas haciendo pruevas uno por uno hasta obtener todos yobtendrias una clave correcta/original sin truchear no es asi? Creen que funcionaria?
Desde luego si tenemo la clave original ya es incapable ... y podriamos firmar lo que quisieramos....
Por contra .... NO ES IMPOSIBLE OBTENERSE PERO SE TARDARIA BASTANTE TIEMPO EN PROVAR TODOS LOS NUMEROS HASTA OBTENRER TODOS... 256 pruebas por cada caracter suponiendo k son 256 (no se cuantos son exactamente) son bastantes pruebas
Wanikoko ¿Crees que sirve de algo o se he congeturado algo que no tiene ni pies ni cabeza?
a_SBeR_RH escribió:y usar CUDA para acelerar la obtención de una clave valida?¿
merol escribió:
esa fue la idea que yo tuve (no son tantas combinaciones, 256*256) pero es irrealizable, las dos cadenas que compara estan en el TMD, la primera es el hash del tmd desencriptado, y la segunda el propio hash del tmd, Waninkoko lo explico muy bien unos post mas atras. No se puede realizar lo que dices porque:
******Primer paso
Modificar el reserved del TMD, hasta que este tenga un 0x00 en el segundo byte, haces 256 comprobaciones (byte y 0x00) y consigues el primer byte del hash codificado.
Muy bien.
*******Segundo paso
Vuelves a modificar el reserved del TMD para tener un hash de 2 byte y el tercero sea 0x00. El hash ya no es el mismo que en el primer paso, ya que el TMD ha cambiado, y por tanto el primer caracter del hash firmado no es el mismo que en la primera prueba
Salu2
elbuscador escribió:Si alguien conociese a alguien del marenostrum, que es el ordena mas potente de Europa seguro que nos ayudaria bastante.
klausus escribió:
Offtopic # On
Ya puestos pedimos ayuda a nuestro amigos del ejercito de autodefensa americano
Offtopic # Off
elbuscador escribió:
COmo ya se veia era coña, no conozco nadie dle marenostrum xD.
El comentario iba enfocado a desbravar, la cosa porque os veo ahi to conectrados.
). En cualquier caso es un fallo imperdonable para un ingeniero, y mas aun para uno de lo que se presupone a una compañia del tamaño de Nintendo.
d34th escribió:
Cuda (calculos de proposito general con una tarjeta grafica) puede ir muy bien para calculos en punto flotante, pero con enteros, es mas potente una CPU que una GPU
Como Bien dicen por ahi, hay 256^256 combinaciones, pongamos por caso a 1µs por cada operacion tardariamos...
1,02*10^603 años... imposible
rockmann escribió:
Será cuestión de poner 603 computadoras a descifrar por partes, y en un año la tenemos![]()
Waninkoko escribió:Os voy a contar mi metodo
La Wii desencripta un hash SHA1 contenido en la firma y calcula otro hash SHA1 desde el campo "issuer" del TMD hasta el final del TMD.
Si ambos hashes coinciden, el disco esta bien firmado.
El caso es conseguir que ambos hashes comienzen por 0x00
El metodo mas sencillo es cambiar los 256 bytes de la firma por ceros, y modificar el campo "reserved" del TMD hasta que el hash SHA1 que se hace sobre el TMD comienze por 0x00.
klausus escribió:
Una pequeña pregunta...
El campo ISSUER cual es?? Esque estado mirando en el programers notedpad y no me aparace el NUL si (0x00) pero el ISSUER no... tal vez se una pregunta noob pero esque toy enpezando y me gustaria hacer pruebas n_n
Querria saber como localizo ese campo por ejemplo en el programers notedpad o cualquier editor hexadecimal para de ahi en adelante ponerlo todo a NUL (0x00) mas que nada por probar a hacerlo manualmente ^o^
GameZelda escribió:
Pues simplemente tienes que ir "pasando" tipos desde el principio.
u32 sig_type; --> 4 bytes
u8 sig[256]; --> 256 bytes
u8 fill1[60]; --> 60 bytes
-----------------------------
TOTAL --> 320 bytes
Y luego ya solo es llegar allí. La mayoría de editores hex. incluyen una opción para saltar a un "offset" (posición) de archivo. Así que vas allí, y pones 320.
Verás que llegas a un trozo con lo de ROOT-... etc., pues allí seleccionas desde el principio (de la cadena) hasta el final (del archivo), lo pegas en uno nuevo, guardas, y "hasheas".