El post que buscas se encuentra eliminado, pero este también te puede interesar

avance xbox360 revelada clave publica y parte de la pribada

avance xbox360 revelada clave publica y parte de la pribada
Queria que vieran esto y me den su opinion aquellos que saben de criptografia si esto es posible y si la clave publica que dice haber octenido robeweb es la correcta del xbox360



esto es lo que escrito robeweb en
http://www.elotrolado.net/hilo_investigacion-carga-de-archivos-desde-hdd-revelada-clave-publica_1671183


[xbox 360] Me he decidido a revelar la clave publica RSA y el sistema de cifrado usado para cargar archivos PIRS desde el disco duro para que la gente pueda hacer sus propias investigaciones (Es el primer paso para cargar cualquier PIRS desde el disco duro sin JTAG/RGH)

Siempre me ha gustado modificar juegos del PC, coches...mapas...skins...vamos, darle un toque personal al juego, pero con mi XBOX simplemente no puedo por la dichosa firma de Microsoft, pero es algo que siempre he querido hacer, y por fin me he decidido a intentarlo. En caso de modificación del archivo hay que generar un nuevo SHA1, pero como ya hay aplicaciones que lo hacen, me voy a centrar en su funcionamiento offline y la firma del archivo.

Lo del funcionamiento offline es para poder usar un DLC modificado, ya sea la música, ropa, coches, o lo que sea y que se pueda jugar sin que Microsoft se entere, que seguro que no le gusta que se modifiquen estos archivos (Aunque sea para mejor).

Como poseo algunos conocimientos de cifrado, y en alguna otra ocasión he conseguido cifrar y descifrar mensajes RSA sin saber la clave privada, pues me he decido a intentar esta "salvajada".

0.- CIFRADO RSA
Vamos con una pequeña explicación del algoritmo RSA para quienes no lo conozcan. Tenemos de partida dos números primos muy grandes (quizás de 200 cifras de largo), a los que llamaremos "p" y "q". Estos números son privados, y el conseguir obtenerlos supondría haber roto la clave.
El siguiente número es "phi(n)", que no es más que multiplicar "p"-1 por "q"-1, y este "phi(n)" también es privado.
Tenemos otro numero llamado "n", que se obtiene de multiplicar "p" y "q". Este número "n" es el modulo y es parte de la clave pública.
Y por ultimo tenemos los exponentes "e" y "d". El exponente "e" es también parte de la clave pública y suele emplearse el numero 65537.
Y el exponente "d" tiene que cumplir que al multiplicarlo por "e" y dividirlo entre "phi(n)" el resto sea 1.
No es extraño que después de efectuar los cálculos necesarios se destruyan casi todos los números, quedando solo "e", "d", y "n", ya que son los empleados en el cifrado/descifrado.
Clave pública los números "e" y "n"
Clave privada los números "d" y "n"
CIFRADO:
Tenemos un mensaje "m", pues lo elevamos al número "e" y lo dividimos entre "n", y el resto es el mensaje cifrado, que llamaremos "c"
DESCIFRADO:
Desde el mensaje cifrado "c" lo elevamos a la "d" y dividimos entre "n", y el resto es el mensaje sin cifrar llamado "m"

Aunque así pueda parecer bastante sencillo el algoritmo es muy fuerte y el punto de partida es tener la clave pública, tanto el modulo "n" como el exponente "e", ya que desde ahí partirá cualquier intento de romper el cifrado y de comprobación de cualquier tipo.

A partir de este punto llamaremos al resto de una división módulo, de tal forma que 19 mod 5 = 4, ya que 19 entre 5 es 3 y nos sobran 4.

1.- LOS DLC's

1.1.- ANALIZANDO DLC's
He tenido la gran suerte de tener los DLC's del Mafia II que necesitaban un perfil especifico para funcionar, y que luego, dichos DLC's fueron editados en DVD y, por lo tanto, funcionaban en cualquier consola como un juego más, pues tenía un gran punto de partida, ya que podía comparar los DLC's LIVE con los del DVD y comprobar diferencias.

Lo primero que hice fue pasar ambos ficheros por un programa que me indica las diferencias en bytes entre ellos con los siguientes resultados (A la izquierda LIVE y a la derecha DVD, que, de ahora en adelante, llamaremos PIRS):
1.1.a) 2FB11BBF146E8654171C4C5912519AD76876868A54 - Vegas Pack (257 bytes diferentes)

1.1.b) 9FE613DEEC585142474A3A2AA07CC063DD03AAF754 - Joe's Adventure (272 bytes diferentes)
Firma Digital
clave publica xbox 360
1.1.c) 26471AA1DC2FEEFF65C1DF2CDA427E7852553D2754 - Jimmy's Vendetta (269 bytes diferentes)
clave pribada xbox 360
firma digital xbox 360
1.1.d) 61408E568A04473F48D18E5041340EF216E1ACDA54 - Renegade Pack (No he encontrado el LIVE)
1.1.e) A0E2C50D5FB619CF11255EE9415589FB3AE2ECCF54 - The Betrayal of Jimmy (No he encontrado el LIVE)
1.1.f) A33EC174FB2BB1D942274DBC0A060F5EAD35B40554 - Made Man Pack (No he encontrado el PIRS)
1.1.g) F4AE109F615E7F240BC1D97BAD04C5ACC30C958254 - Greaser Pack (259 bytes diferentes)
avance xbox 360
1.1.h) F29F8510F984A05FE08728CB28611E3FFED39CE654 - War Hero Pack (258 bytes diferentes)


1.2.- SACANDO CONCLUSIONES
1.2.a) Los 4 primeros bytes pasan de 4C 49 56 45 (LIVE) a 50 49 52 53 (PIRS)
1.2.b) Los 256 bytes siguientes parecen ser la firma del archivo
1.2.c) En los DLC's que son juegos en sí, cambia desde 0x22c hasta 0x233, que pasa a ser todo "FF" en los PIRS, que coincide con los PIRS que no son juegos.
1.2.d) En los DLC's que son juegos en sí, cambia 0x237 que pasa a ser 01 (Valor igual para todos los PIRS)
1.2.e) En los DLC's que son juegos en sí, cambian algunos valores entre 0x23B y 0x32B que pasan a ser "00" (Valor igual para todos los PIRS)

1.3.- CONVIRTIENDO DE LIVE A PIRS (Sin firmar)
1.3.a) Cambiar los 4 primeros bytes a "50 49 52 53"
1.3.b) Cambiar de 0x22C a 0x233 todo "FF"
1.3.c) Cambiar 0x237 a "01"
1.3.d) Cambiar de 0x23B a 0x32B todo a "00"
1.3.e) El nombre del archivo debe ser el valor de SHA-1 almacenado en 0x32c añadiéndole al final un "54"

*Llegados a este punto tenemos el DLC solo a falta de la firma para que
funcione (Se supone que las modificaciones del archivo como cambiar una canción, por ejemplo, ya estarían efectuadas con cualquiera de los programas que existen para ello). En otras palabras, lo fácil ya está hecho, ahora viene lo más complicado de todo.

2.- LA FIRMA

2.1.- ANALIZANDO LAS FIRMAS
Las firmas son de 256 bytes, lo que puede indicar que se ha utilizado RSA-2048.
Como RSA usa una clave privada y una pública, lo más lógico es que la clave privada esté en los servidores de Microsoft y que la clave publica esté en nuestra consola, y que Microsoft utilice la clave privada para firmar el contenido, y nuestra consola use la clave pública para desencriptar el
contenido y comprobar si el resultado es correcto.

Como los PIRS funcionan en cualquier consola sin modificar nada, es de lógica que todas las consolas tienen la misma clave pública.

De otros estudios se sabe que el cifrado es aplicado al SHA1 del archivo que está guardado en 0x32c y ocupa 20 bytes.
Analizando el KV.bin, que tiene claves RSA obtenemos varias claves, pero todas son RSA-1024, por lo que no parece que se use ninguna de las claves del KV.bin . Sin embargo todas las claves comparten el exponente "AQAB", que es 65537 en decimal, y además es un exponente público muy utilizado en RSA.

Después de indagar un poco más por varios sitios de internet, parece ser que la clave RSA está guardada en la CPU, pero no especifican si es la clave usada para cargar los DLC's o simplemente para los 1BL y demás, y, dado que en muchos sitios de internet se dice que disponen de la clave
publica, pero no figura en ninguno de estos sitios, y directamente pegan malas contestaciones a las personas que solicitan dicha clave, pues me veo obligado a averiguar la clave por mi cuenta.

Tras muchísimas pruebas (casi un año) sin resultados, decidí atacar el problema desde otro punto de vista, llegando a la conclusión de que las firmas están "invertidas". Por "invertidas" me refiero a que si la firma RSA es, por ejemplo, "7A DE 3F 01 14", ésta se escribe en el archivo como "14 01 3F DE 7A". Este array de bytes yo lo manejaba a la inversa, por lo que los resultados obtenidos no fueron satisfactorios.

Otro de los resultados de las pruebas realizadas indica que los archivos son firmados de la siguiente manera:
- Se halla el SHA1 desde 0x22c hasta 0x343 (280 bytes en total)
- Al resultado anterior se le añade un relleno y un ID del algoritmo SHA1 quedando de la siguiente forma:

0001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 + <3021300906052B0E03021A05000414> + <SHA1>

De tal manera que al aplicar la clave publica a la firma "invertida" (llamada "c" se obtiene el resultado descrito (llamado "m".

2.2.- OBTENIENDO EL MODULO Y EL EXPONENTE
Al disponer del origen y de la firma, se podría intentar obtener el modulo partiendo del exponente. Por regla general se usa el exponente 65537 (Otra de las conclusiones las que llegué tras el año de pruebas, es que el exponente no es 65537, sino otro distinto), así que voy a usar dicho exponente en la ecuación de RSA y lo aplico a todos los archivos:


(c^e)mod(n)=m <=> xn-m=c^e <=> xn=(c^e)-m

Primero calculo c^e para luego restar m y obtener así el valor del modulo "a lo bruto", y después de varias horas de tener a mi ordenador currando ininterrumpidamente obtengo los valores de xn. Como el modulo tiene que ser de 256 bytes tengo que buscar un número entero x para que se cumpla:
(xn)/x=número entero y de 512 dígitos Hex

Dado que todos los xn que he obtenido tienen como divisor el modulo RSA, busco el máximo común divisor de todos los xn con el algoritmo de Euclides (Este no lo voy a explicar), y , después de un rato de tener al ordenador currando ininterrumpidamente obtengo un numero, que cumple los requisitos.

Como curiosidad indico que dada la complejidad computacional con números tan grandes y el excesivo tiempo requerido, me he visto obligado a modificar algunas librerías de JAVA (Sí, he utilizado JAVA) haciéndolas CUSTOM para poder trabajar con más comodidad (Mayor control de las funciones, sistema de backup…).

2.3.- COMPROBANDO EL MODULO OBTENIDO
Si el exponente elegido es correcto y no he metido la pata al hallar n, se debería cumplir (c^e)mod(n)=m para todos los DLC's descritos arriba y algunos otros más:
2.3.a) Vegas Pack <=> SE CUMPLE
2.3.b) Joe's Adventure <=> SE CUMPLE
2.3.c) Jimmy's Vendetta <=> SE CUMPLE
2.3.e) Greaser Pack <=> SE CUMPLE
2.3.f) Renegade Pack <=> SE CUMPLE
2.3.g) The betrayal of Jimmy <=> SE CUMPLE
2.3.h) War Hero Pack <=> SE CUMPLE
2.3.i) Resident Evil (Spanish Voice Pack) <=> SE CUMPLE
2.3.j) Resident Evil (Italian Voice Pack) <=> SE CUMPLE
2.3.k) Resident Evil (German Voice Pack) <=> SE CUMPLE
2.3.l) Resident Evil (French Voice Pack) <=> SE CUMPLE

Comprobado este número con todos los PIRS que aquí figuran, y cumpliéndose la norma en todos, puedo afirmar sin ningún temor a equivocarme que he hallado la clave pública usada por la Xbox para desencriptar los archivos PIRS.

CLAVE PÚBLICA RSA-2048 XBOX 360 PARA CARGAR PIRS:

(EN DECIMAL)
MODULO:
17661946096927428880018687687519554222346387998386674749439126372717750406323
07060671643668450647975474317819462292616976627854486641760891076788782549621
61912322309701904992145957584398090797731146197754981933232949066577876300320
48519982660030398113790748461815621813092619362680460222583163739419452794455
39259726150760598690047541200517411791604385438817211921665153660127235499206
07292144105766600566090259053092221694080043745350514468167457519187266838898
34943038011327744188881589447518161341915478112600554089968515099834362012946
18606728664027347340773917137439061431362735447351145922289602202140807676695
1

EXPONENTE: 3

(EN HEXADECIMAL)
MODULO:
0x8BE8D920F205E07057A868B461F41BC640D24EA6C611041BBD477C90DD88121784F7B0F64B
8EF089C7E5CEAAECDE48A0A43730115183BDF7A21027962F9FA93D322579360EF4ED194A02A
ED4D837CFA6EB87E6D1FBB366FC09062A61202CF872FE48FF283D10BB9EB33D032560C87A59
4D84B9189799AC00224E1324D3C157DFBCA4AA1C474BF4979C2751CF4B347A35BE66492FAE2
0A476456046BC36E11771C5A79B08112EA064D0F89102A6E77D77114A802472057A63E67C63
0EAF4CF7E7FC02AB77BAC8E674B2B0AE9769EBFE71A658EBB6A3C4A3EEBA0385B51A3E25F98
EBA8EBC1A90AC20DE0D184072D6E3469DFC5C7241945847E63B32B28D9E9EE7

EXPONENTE: 0x3

Como su propio nombre indica, esta clave es PÚBLICA por lo que no se infringe ninguna ley ni nada parecido al ser publicada. Otra cosa seria crackear esta clave o conseguir y/o publicar el exponente privado, el cual, por ahora, se desconoce, y lo que se necesitaría para poder firmar las modificaciones de los juegos.

2.4.- REFIRMANDO LOS PIRS
Mediante un sencillo sistema de "acotacion" he podido ir "arrinconando" poco a poco la clave privada. El problema con este sistema es que el tiempo necesario es exponencial cuanto mas se quiera acotar la clave privada. Ahora mismo tengo hallados 307 digitos de 617 que tiene la clave privada. El exponente privado por ahora es el siguiente (Como es logico, las "x" son los numeros que me faltan por hallar):

11774630731284952586679125125013036148230925332257783166292750915145166937548
71373781095778967098650316211879641528411317751902991094507260717859188366414
41274881539801269994763971722932060531820764131836654622155299377718584200213
6567998844002026540919383230787708120872841290845364014838877582627963519630x
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
x


Mi PC sigue currando las 24 horas de manera ininterrumpida, según vaya obteniendo mas resultados, los iré publicando.

MADE by $3@!_ a.k.a robeweb

P.D.: Quiero agradecer tanto a la gente que me dio ánimos desde el principio como a la gente que no, ya que ambos han conseguido que quiera llegar hasta el final en este proyecto.

1 comentario - avance xbox360 revelada clave publica y parte de la pribada

Seele015
No entendí mucho pero que bueno.