[TUTORIAL] Conseguir la clave de lectura/escritura de nuestra figura Disney Infinity

1, 2, 3
zantzue
MegaAdicto!!!
1.982 mensajes
desde ago 2008
en Isla Delfino
Editado 31 veces. Última: 25/12/2018 - 19:00:01 por zantzue.
Hace meses que me consta que el algoritmo de cifrado de Disney Infinity fue descubierto pero no se filtró. No ha sido hasta ayer cuando encontré algo y hoy me he puesto a cacharrear y he avanzado bastante aunque no he llegado al punto de clonar una figura propia (estoy a la espera de chips).

En la página nfc.toys detallan cómo la conseguir la Key A a partir de la UID de nuestra figura (y por lo que leí en la página proxmark.com debe de coincidir con la Key B) para poder escribir lo que queramos en nuestra figura. Paso a resumir en qué consiste el proceso pero no sin adelantar que cada clave es únicamente para nuestra figura así que no hay common key. Es por eso que me animo abrir este hilo porque entiendo que no va en contra de las normas:

Cada figura tiene una UID consistente en 14 caracteres hexadecimales (7 bytes) que usaremos en el proceso (más adelante detallaré cómo conseguirla) y el algoritmo es el siguiente:

1- Multiplicamos los números primos 3, 5, 23 y 38.844.225.342.798.321.268.237.511.320.137.937 (me ha costado encontrar una página online donde me dejara trabajar con tantos dígitos y sin redondear el resultado) obteniendo como resultado 13.401.257.743.265.420.837.541.941.405.447.588.265 que en hexadecimal es 0A14FD0507FF4BCD026BA83F0A3B89A9 (necesitamos 16 bytes, de ahí el primer 0). A esta cadena hexadecimal le llamaremos prefijo.

2- Ahora multiplicamos los números primos 3, 7 y 9.985.861.487.287.759.675.192.201.655.940.647 obteniendo como resultado 209.703.091.233.042.953.179.036.234.774.753.587 que en hexadecimal (15 bytes) es 286329204469736E65792032303133. A esta cadena hexadecimal le llamaremos sufijo.

3- Encademanos el prefijo, la UID y el sufijo obteniendo una cadena de 38 bytes. Pongamos como ejemplo que la UID es 0456263a873a80. En tal caso, obtendríamos esta cadena 0A14FD0507FF4BCD026BA83F0A3B89A90456263a873a80286329204469736E65792032303133.

4- Calculamos el SHA-1 de esa cadena. Yo lo he hecho en esta página https://www.fileformat.info/tool/hash.htm (Binary Hash) y he obtenido f74a5629375f05583602155dc169cbfc14038bfc.

5- La Key A se obtiene escribiendo, en este orden, los bytes 4, 3, 2, 1, 8 y 7 del SHA-1 del punto 4. En el caso del ejemplo obtenemos la Key A 29564af75805.

El ejemplo de esa UID lo he encontrado en la página nfc.toys y he conseguido obtener la Key A correcta. También lo he intentado con la UID 049c0bb2a03784 y he conseguido la Key A c0b423c8e4c2. Hay más ejemplos en la página pero ya tengo claro que entiendo en qué consiste el algoritmo puesto que consigo la clave correcta en dos ejemplos (hay más en la página).

Pongo en el spoiler el texto original del algoritmo:

Let a prefix be the 16-byte (32-character) hexadecimal representation of the integer computed by the multiplication of the four prime numbers 3 and 5 and 23 and 38,844,225,342,798,321,268,237,511,320,137,937

Let a postfix be the 15-byte (30-character) hexadecimal representation of the integer computed by the multiplication of the three prime numbers 3 and 7 and 9,985,861,487,287,759,675,192,201,655,940,647

Compute the SHA-1 digest of the 38 bytes encoded by the 76-character hexadecimal concatenation of the prefix and the UID and the postfix

The key A for all sectors is 6 bytes, represented in hexadecimal as 12 characters: in order, the 4th and 3rd and 2nd and 1st and 8th and 7th bytes of the computed SHA-1 digest

Sample inputs/outputs:

UID/Key A
0456263a873a80/29564af75805
049c0bb2a03784/c0b423c8e4c2
04a0f02a3d2d80/1e0615823120
04b40c12a13780/2737629f2ebe
04d9fb8a763b80/edb56de8a9fe


Me he descargado la aplicación TagInfo (la que usa el creador de la página en un video-tutorial), he leído una figura propia y la aplicación detecta el tipo de chip y varias cosas más pero no puede leer correctamente el contenido por no tener la Key A. He usado la UID que me da la aplicación (ver en la pestaña "Full Scan" en el apartado "Detailed protocol information"), he usado el algoritmo, le he pasado la clave a la aplicación y ahora me muestra correctamente el contenido de los sectores. Es decir, con la clave puedo leer correctamente mi figura.

Y hasta ahí he llegado hoy. No voy a escribir nada en mi figura porque no me serviría de nada y no quiero exponerme a dejarla inservible. Lo que tenemos que averiguar es si todo esto sirve para poder escribir un chip nfc en blanco y hacer un clon de nuestra figura. La aplicación me dice que es MIFARE Classic Compatible ISO/IEC 14443-3 (Type A) compatible ISO/IEC 14443-2 (Type A) compatible. No sé si con eso corresponde a algún chip ntag21X que podríamos usar para hacer clones. Según dicen en la página proxmark.com, los chips son mifare mini 03.K, cosa que concuerda la lectura de la aplicación TagInfo ya que en el protocolo aparece SAK 0x09 y según esta pagina corresponde a, efectivamente, mifare mini. He leído un ntag 213 por curiosidad y es SAK 0x00 con lo cual no me vale para hacer pruebas. Lo mismo para los ntag215.

No tengo chips compatibles con los que hacer pruebas así que mirando en Internet he descubierto que existen chips mifare classic que permiten escribir el sector 0 (el del fabricante) y he encontrado una aplicación (Mifare Classic Tool) a la que si le paso la Key A de este método no solamente me deja leer la figura sino que me da opción a clonar la figura volcada y escribir el sector 0 en un chip compatible. He encargado en aliexpress varias tarjetas miifare classic con sector cero grabables y cuando lleguen hago la prueba y comento a ver si tuve suerte. Toca esperar.

Editaré este mensaje dentro de tres o cuatro semanas.

Edito: Ya llegaron los chips. Como comento más abajo, estoy atascado. Puedo generar volcados completos de mis figuras pero me falta la forma de pasarlos a un chip. Tengo tarjetas con UID programables pero con las aplicaciones para móviles que tengo no lo he conseguido ni creo que sea posible; no consigo que el clon tenga el UID correcto. Habría que probar con un lector/grabador específico o, mejor aún, con un proxmark3 pero no me apetece gastarme 300€. Intentaré aprender más sobre el tema pero, de momento, estoy en punto muerto.

Edito: Tengo en camino un proxmark3 easy que cuesta mucho menos de lo que pensaba y volveré a la carga dentro de varias semanas a ver si avanzo más. He estado viendo videos de cómo hackear una tarjeta miifare classic y tengo el camino allanado puesto que sé calcular las claves sin ayuda del proxmark, que también es posible hacerlo con él, tengo volcados completos de mis figuras y me falta solamente hacer el último paso con el proxmark3 que es grabar los chips debidamente y no con un teléfono móvil.

A lo mejor así tampoco lo consigo puesto que quiero grabar solamente 5 sectores (20 bloques) en una tarjeta de 16. Creo que son compatibles pero es posible que el juego se dé cuenta de que hay algo raro. Espero que no porque, por lo que he leído, la información del SAK (tipo de chip y su protocolo) se guarda en el sector 0 (creo recordar que típicamente en el bloque 0) así que si logro un buen clon debería engañar al juego. Es decir, espero hacer funcionar una mifare classic como una mifare mini. Si no lo consigo, me dedicaré a aprender a usar mi proxmark3 y cacharrearé con él.
Tito_CO
Maese Musicalis
5.682 mensajes
desde dic 2003
en Musicolandia
Pues se agradece toda la información que nos puedas dar.

Aunque el juego en casa lo tengamos bastante apartado siempre es divertido cacharrear con estas cosas.

Un saludo
zantzue
MegaAdicto!!!
1.982 mensajes
desde ago 2008
en Isla Delfino
Editado 2 veces. Última: 30/11/2018 - 15:08:28 por zantzue.
Los chips que encargué ya han debido de salir de China así que en un par de semanas o antes espero tenerlos en casa. Si consigo clonar mis figuras y el juego reconoce los clones, os lo haré saber. No me atrevo a poner la mano en el fuego pero tengo una lectura completa de mis figuras, una aplicación de móvil que da la opción de clonar y chips con UID modificables en camino así que soy bastante optimista. La única duda que me surge es que, hasta donde yo sé, los Mifare mini no se comercializan y lo voy a intentar con Mifare classic que creo son compatibles. También lo estoy intentando con los Skylanders pero no termino de entender en qué consiste realmente el algoritmo.

Edito: También puedo generar correctamente la clave y leer el contenido de la figura de mi Play Set (Star Wars)
gracias por tu trabajo, lo seguiré atento,me interesa.
Yo tambien estaré atento. Muchas gracias.
zantzue
MegaAdicto!!!
1.982 mensajes
desde ago 2008
en Isla Delfino
Editado 5 veces. Última: 13/12/2018 - 17:21:27 por zantzue. Reflotado, original: 4/12/2018 - 17:28:25
Por curiosidad, ¿habéis hecho la prueba de identificar la UID de alguna de las figuras, generar la key A y leer el contenido de la misma? Para ver la UID utilizad la aplicación TagInfo y ver en la pestaña "Full Scan" en el apartado "Detailed protocol information".

Edito el 09/12/2018: El día 7 parece que los chips estaban ya en París. La semana que viene los tengo en casa. Emoción, intriga, dolor de barriga :p .

Edit 2: En aliexpress ahora me dice "arrived at destination country" :D.

Edit3: Hoy me han llegado los chips pero no he conseguido clonar correctamente las figuras. El problema es que no consigo clonar el bloque del fabricante (el resto de l contenido sí). He pecado de optimista al pensar que como la aplicación Mifare Classic Tool da opción de clonar, lo podría hacer. En el anuncio del vendedor ya avisaba de que los móviles no consiguen clonar el sector cero y que hace falta un lector/escritor específico (dice qué modelo es) o, si no, un proxmark3. Como soy bastante cabezón, he decidido utilizar la táctica "de perdidos al río" y he encargado el lector/escritor a ver si así me las apaño. Ale, otras tres o cuatro semanas de espera otra vez ya que hay fiestas de por medio. Ya os contaré Al final he cancelado el pedido antes de que lo llegaran a cobrar. No creo que tenga garantías de conseguir nada incluso gastándome más dinero ya que las figuras de DI son mifare mini y no creo que se comercialicen. Antes de gastarme más dinero voy a intentar aprender más sobre el tema.
Tito_CO
Maese Musicalis
5.682 mensajes
desde dic 2003
en Musicolandia
Mucho ánimo @zantzue, y mucha suerte en tus descubrimientos

Yo si quiero hacer alguna prueba esta próxima Navidad, que de momento no he tenido ni un segundo libre
zantzue
MegaAdicto!!!
1.982 mensajes
desde ago 2008
en Isla Delfino
@Tito_CO
Cancelé un lector/escritor pero he descubierto que existe una versión más barata del proxmark3 que debe de estar bastante bien así que me he animado a comprarlo y seguiré cacharreando. Con ese lector sé que podré clonar las tarjetas debidamente (aún tengo que aprender cómo) pero me queda la duda final de si el juego se las tragará porque las mifare mini 0,3k tienen solamente cinco sectores (y no se comercializan) y las mifare classic tienen 16; creo que son compatibles pero igual el juego se da cuenta de que hay algo raro y no se las traga. En cualquier caso, ya me lo tomo como algo que quiero aprender a usar y punto (intentaré clonar mi tarjeta de la basura orgánica y chorradas por el estilo). Luego si consigo hacer clones funcionales de los DI, bienvenido sea. De momento, me he dado de alta en el foro de desarrolladores de proxmark, me he presentado y me han dado acceso al resto del foro. También me he descargado los archivos y drivers necesarios de GitHub para poner en marcha el proxmark cuando llegue y las dudas que tenga las postearé en ese foro no sin antes leer cuanto pueda para que vean que lo hago antes de preguntar. Si consiguiera algo (allá por enero, febrero o a saber), pasaría por aquí para hacéroslo saber.
Tito_CO
Maese Musicalis
5.682 mensajes
desde dic 2003
en Musicolandia
zantzue
MegaAdicto!!!
1.982 mensajes
desde ago 2008
en Isla Delfino
Editado 6 veces. Última: 22/12/2018 - 15:45:20 por zantzue.
Aliexpress me dice que el proxmark3 ya está en España. ¡Qué rápido! [Alaa!] Todavía no creo que lo tiene Correos pero con un poco de suerte lo tengo aquí para el fin de semana. El viernes cojo vacaciones así que tengo unas ganas terribles de echarle el guante. A base de leer y leer empiezo a entender "bastantes" cosas de su uso. Incluso me estoy escribiendo anotaciones de comandos a usar y cosas que tengo que probar en cuanto llegue. Tengo la corazonada cabezonada XD de que me va a salir bien la jugada.

Edito: Ahora me dice ayer estaba en Paris. Igual va a ser que no lo tengo para el sábado pero la semana que viene me pongo al lío sí o sí.

Edito de nuevo: Mientras tanto, ya tengo un plan B en marcha. Si fallase el intentar clonar un mifare mini en un mifare classic (en principio lo único que las diferencia es que las mini son de 320 bytes y las que tengo son de 1KB), tengo un proveedor chino que está dispuesto a fabricar obleas con mifare mini con UID cambiable dentro. Ya le he comprado cientos de ntags213 el último año así que hemos hecho negocios antes. Está dispuesto a hacer una muestra para mí y luego si veo que me funciona el invento (le he explicado cuál es el problema que tengo) está dispuesto a hacerme más. Las harían expresamente para mí; no tienen a la venta ese producto y le tendría que pagar 16€. No es barato pero si luego me baja el precio para un pedido de 200, ya cambiaría la cosa. Espero que sea algo parecido a los ntag 213 o si no, me lo tendría que pensar.
1, 2, 3