Emula la tarjeta Mifare con Android 4.4


He investigado Mifare y otras emulaciones de tarjetas Tengo muy buen conocimiento en programación (no Android, sino C/C++). Tengo proxmark y he hecho varios códigos de emulación para proxmark, así que sé cómo se comunican las tarjetas.

Actualmente no entiendo, Android habilita la emulación de tarjeta completa. He investigado esto durante aproximadamente 3 días, y la conclusión es que no hay un patrón constante. Algunas personas dicen que es posible, otros dicen que no lo es. Miré a través de Android API y la emulación de la tarjeta basada en el Host parece ser capaz de hacer el truco, pero según tengo entendido es algo nuevo en 4.4 Kitkat, ¿alguien tiene alguna experiencia con eso?

Para simplificar las cosas, actualmente estoy investigando la emulación básica más simple para Mifare Ultralight. Esta tarjeta es una pesadilla de seguridad, no hay cifrado y solo tiene unas 10 funciones. Así que estoy interesado en comenzar la investigación con esta tarjeta, porque es la más fácil de reproducir.

También lo hace cualquiera tener algún conocimiento en la emulación de tarjetas en Android. Tal vez no usando el sistema operativo común. Cualquier cosa que vale la pena saber sería muy apreciada.

Gracias.

Author: Michael Roland, 2013-11-18

4 answers

Con la emulación de tarjeta basada en host (HCE) en Android 4.4 solo puedes emular el protocolo ISO/IEC 14443-4. Más específicamente, solo puede emular estructuras de aplicación según ISO/IEC 7816-4 (por lo tanto, las aplicaciones de emulación de tarjetas deben seleccionarse a través de una AYUDA). Por otra parte, la API no le da ningún medio para especificar si la emulación de la tarjeta debe hacerse utilizando el protocolo de tipo A o Tipo B.

Así que con respecto a la emulación de varios protocolos MIFARE:

  • MIFARE El protocolo ultraligero (y derivados) opera sobre ISO/IEC 14443-3. No es posible emular tarjetas usando protocolos de capa baja usando Android HCE.
  • El protocolo MIFARE Classic funciona parcialmente sobre ISO/IEC 14443-3 (con algunos marcos diferentes). Por lo tanto, tampoco es posible emular MIFARE Classic usando Android HCE.
  • Los protocolos MIFARE DESFire funcionan sobre ISO/IEC 14443-4. Hay tres variantes del DESFire protocolo:

    1. protocolo nativo : Como este protocolo no usa APDU según ISO/IEC 7816-4, no es posible emularlo usando Android HCE.
    2. protocolo nativo envuelto: Este protocolo utiliza APDU de acuerdo con ISO/IEC 7816-4, sin embargo, los lectores normalmente no emitirán un comando SELECT usando la AYUDA DESFire cuando comiencen a comunicarse con una tarjeta en modo de comando nativo envuelto. (Nota: Las implementaciones de lectores más recientes son más propensas a emitir un SELECT comando que es compatible con Android HCE ya que esto también es necesario para algunos de los nuevos productos de tarjetas inteligentes de NXP con emulación de protocolo DESFire.)
    3. Protocolo ISO : Este protocolo se basa en ISO/IEC 7816-4 y utiliza la selección de aplicaciones por AID. Por lo tanto, puede ser posible emular este protocolo utilizando Android HCE.

    Algunos lectores pueden requerir ciertos valores de parámetros en capas de protocolo inferiores (como un nivel de cascada UID específico, un cierto Valor ATQA, cierto valor SAK o cierto ATS). Android HCE no tiene ningún medio para establecer estos valores. Consulte La funcionalidad de edición de la Emulación de Tarjeta de host en Android para un posible enfoque para modificar esos valores en ciertos dispositivos arraigados y mi respuesta a la Emulación de tarjeta basada en Host con ID de tarjeta fija para una estrategia para cambiar programáticamente esos valores en una ROM personalizada.

Una nota sobre la función HCE disponible en CyanogenMod de la versión 9.1 a versión 10.2 : Emulará cualquier protocolo basado en ISO/IEC 14443-4 sin el requisito de una estructura de aplicación de acuerdo con ISO/IEC 7816-4. Incluso puede elegir si desea emular el protocolo de tipo A o Tipo B. Así que debería ser posible (aunque no he probado) emular cualquiera de los tres protocolos DESFire. Sin embargo, incluso con la función HCE de CyanogenMod no es posible emular los protocolos MIFARE Ultralight o Classic. Además, tampoco es posible influir en el nivel bajo parámetros de protocolo como un UID, ATQA, SAK o ATS.

 50
Author: Michael Roland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:17:55

He pasado semanas investigando este tema hace un año y mi conclusión basada en la implementación actual fue: La emulación de MIFARE Classic es posible, pero solo a través del Elemento Seguro Integrado, este elemento está incrustado dentro del chip NFC de NXP (chip PN65 incorporado, por ejemplo, el Samsung I9300).

He podido emular completamente una tarjeta Mifare Classic usando funciones ocultas en la biblioteca android_external_libnfc-nxp. Aunque sólo podía leer la tarjeta y para que fuera útil necesita acceso al Elemento Seguro donde existe un applet de NXP en la mayoría de los casos, este applet sirve como front-end para administrar las tarjetas emuladas.

Una buena manera de continuar esta búsqueda sería mediante la ingeniería inversa de la aplicación wallet de Google.

 16
Author: Simplect,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-09 12:33:05

El chip Ultraligero MIFARE MF0ICU1 (16 páginas x 4 bytes cada uno) es de hecho una pesadilla, pero no puede ser emulado en ninguna interfaz NXP incluyendo PN53x, ya que cableó el primer UID byte (UID0) a 0x08, por lo que significa que la etiqueta tiene un UID aleatorio (de acuerdo con los estándares NXP). Necesitas UID0 = 0x04 para emular MIFARE Ultralight.

Existe un emulador ultraligero MIFARE independiente que permite cualquier valor para UID0, tiene bits OTP, lock y block-locking reiniciables. Ver el manual para más información.

 4
Author: nCipher,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-04 18:19:07

La respuesta corta es . Sin embargo, depende de muchos factores como la versión de Android, el chip NFC del teléfono, etc.

Para saber si su dispositivo lo admite, simplemente descargue alguna aplicación como "NFC Check" de Tapkey, y le informará si MiFare Classic y Mifare Ultralight son compatibles. También hay una lista actualizada, pero aparentemente podría haber algún desajuste: https://www.shopnfc.com/en/content/7-nfc-compatibility

Ahora la pregunta es "cómo". Tengo aún no se ha encontrado una aplicación para usar la emulación de tarjeta basada en host de Android (HCE) para este propósito (ver aquí): ¿Qué tan bien soporta la API NFC de Android Mifare Desfire?

De hecho, MiFare ha sugerido recientemente que debería usar el método" secure element " en su lugar: https://www.mifare.net/support/forum/topic/emulate-mifare-classic-1k /

Volviendo a tu pregunta sobre el Ultraligero, la principal dificultad es que la API de Android define como UID aleatorio en cada toque, según lo sugerido por un usuario anterior nCypher: https://developer.android.com/guide/topics/connectivity/nfc/hce

Como un acceso root alternativo (o ROMs de cianógeno personalizadas) podría ayudar a modificar el UID como en este ejemplo: http://osgt7405i.bkt.clouddn.com/help/en/index.html?t=1536931682474

Sin embargo, la nueva API de Android se refiere directamente al objeto Ultraligero: https://developer.android.com/reference/android/nfc/tech/MifareUltralight

Conozco algunas compañías que están emulando esto por el almacenamiento SIM. Para usar su teléfono como tarjeta RFID de estos tipos de MIFARE, MiFare ya ha creado una solución donde las empresas pueden cargar tarjetas en la nube https://www.mifare4mobile.org / asociado a su SIM portadora. Hay una lista de los chips NFC certificados oficialmente que funcionan, la mayoría de ellos NPX que se incluyen ampliamente en smartphones.

Sin embargo, su solución es una API SDK (es decir, TapLinx). No hay un producto de software puro de NXP disponible como cualquier software de emulación de teléfono o una solución base en la nube.

Además, el foro de MiFare habla de esto: https://www.mifare.net/support/forum/topic/creating-nfc-android-app-to-act-as-mifare-card-to-interact-with-mifare-readers/

 0
Author: JCM,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-18 16:53:40