Émuler la carte Mifare avec Android 4.4

j'ai fait des recherches sur Mifare et d'autres émulations de cartes j'ai de très bonnes connaissances en programmation (Pas Android, mais C/C++). J'ai proxmark et j'ai créé plusieurs codes d'émulation pour proxmark, donc je sais comment les cartes communiquent.

Je ne comprends pas actuellement, ne android permet l'émulation complète de la carte. J'ai cherché cela depuis environ 3 jours maintenant, et la conclusion est qu'il n'y a pas un modèle constant. Certains disent que c'est possible, d'autres non. Je j'ai regardé l'API android et l'émulation de carte basée sur L'hôte semble être capable de faire l'affaire, mais comme je comprends que c'est une nouvelle chose en 4.4 Kitkat, est-ce que quelqu'un a une expérience avec cela?

pour simplifier les choses, j'étudie actuellement l'émulation la plus simple pour L'Ultra-Léger Mifare. Cette carte est un cauchemar de sécurité, il n'y a pas de cryptage et seulement environ 10 fonctions qu'il fait. Donc je suis intéressé à commencer la recherche avec cette carte, parce que c'est le plus facile l'un pour se reproduire.

est-ce que quelqu'un a des connaissances en émulation de carte sur android. Peut-être pas en utilisant l'OS stock. Toute chose qui vaut le détour serait très apprécié.

Merci.

30
demandé sur Michael Roland 2013-11-18 22:51:10

4 réponses

avec l'émulation de carte basée sur l'hôte (HCE) dans Android 4.4, vous ne pouvez émuler le protocole ISO/IEC 14443-4. Plus spécifiquement, vous ne pouvez émuler les structures d'application selon ISO / IEC 7816-4 (ainsi les applications d'émulation de carte doivent être sélectionnées par une aide). De plus, L'API ne vous donne aucun moyen de spécifier si l'émulation de la carte doit être faite en utilisant un protocole de type A ou de type B.

Donc en ce qui concerne l'émulation de plusieurs MIFARE protocoles:

  • MIFARE Ultralight (et dérivés) protocole fonctionne sur le dessus de la norme ISO/IEC 14443-3. Il n'est pas possible d'émuler des cartes en utilisant de tels protocoles de couches basses en utilisant Android HCE.
  • MIFARE Classic le protocole fonctionne partiellement en plus de la norme ISO/IEC 14443-3 (avec un encadrement différent). Ainsi, il n'est pas non plus possible d'imiter Mifare Classic en utilisant Android HCE.
  • Les protocoles MIFARE DESFire fonctionnent en plus de la norme ISO/IEC 14443-4. Il existe trois variantes du protocole DESFire:

    1. native protocol : comme ce protocole n'utilise pas APDUs selon ISO/IEC 7816-4 il n'est pas possible de l'émuler en utilisant Android HCE.
    2. wrapped native protocol : ce protocole utilise APDU selon ISO / IEC 7816-4, cependant, les lecteurs ne seront généralement pas émettre un Sélectionnez la commande en utilisant L'aide DESFire lorsque vous commencez à communiquer avec une carte en mode de commande natif enveloppé. (Note: les nouvelles implémentations de lecteur sont plus susceptibles d'émettre une commande SELECT compatible avec Android HCE car cela est également requis pour certains des nouveaux produits smartcard de NXP avec émulation de protocole DESFire.)
    3. protocole ISO : ce protocole est basé sur la norme ISO/CEI 7816-4 et utilise la sélection des applications par AIDE. Ainsi, il peut être possible pour émuler ce protocole en utilisant Android HCE.

    certains lecteurs peuvent exiger certaines valeurs de paramètres dans les couches inférieures du protocole (comme un niveau de cascade UID spécifique, une certaine valeur ATQA, une certaine valeur SAK, ou un certain ATS). Android HCE n'a aucun moyen de définir ces valeurs. Voir éditer la fonctionnalité de L'émulation de la carte D'hôte dans Android pour une approche possible de modifier ces valeurs sur certains appareils enracinés et ma réponse à L'émulation de la carte basée sur L'hôte avec un ID de carte fixe pour une stratégie de modifier programmatiquement ces valeurs dans une ROM personnalisée.

note sur le HCE fonctionnalité disponible dans CyanogenMod à partir de la version 9.1 de la version 10.2 : Cela permettra d'émuler tout ISO/IEC 14443-4 basée sur le protocole sans l'exigence d'une structure de l'application selon la norme ISO/CEI 7816-4. Vous pouvez même choisir si vous voulez émuler le protocole de Type A ou de Type B. Il devrait donc être possible (bien que je n'ai pas testé) d'imiter l'un des trois protocoles de DESFire. Cependant, même avec la caractéristique HCE de CyanogenMod, il n'est pas possible d'imiter les protocoles ultralégers ou classiques de MIFARE. De plus, il n'est pas non plus possible d'influencer les paramètres de protocole de bas niveau tels que UID, ATQA, SAK ou ATS.

50
répondu Michael Roland 2017-05-23 12:17:55

j'ai passé des semaines à faire des recherches sur ce sujet il y a un an et ma conclusion basée sur la mise en œuvre actuelle était: L'émulation de Mifare Classic est possible, mais seulement à travers L'élément de sécurité intégré, cet élément est intégré dans la puce NFC de NXP (puce PN65 intégrée par exemple dans le Samsung I9300).

j'ai été capable d'émuler complètement une carte classique Mifare en utilisant des fonctions cachées dans la bibliothèque android_external_libnfc-nxp. Si seulement je pouvais lire la card et pour qu'il soit utile, vous avez besoin d'accéder à l'élément de sécurité où une applet par NXP existe dans la plupart des cas, ce serveur d'applet comme front-end pour gérer les cartes émulées.

une bonne façon de poursuivre cette recherche serait par ingénierie inverse application portefeuille de Google.

16
répondu Simplect 2014-01-09 12:33:05

la puce ultralégère MIFARE MF0ICU1 (16 pages x 4 octets chacune) est en effet un cauchemar, mais ne peut être émulée sur aucune interface NXP y compris PN53x, car ils ont câblé le premier UID byte ( UID0 ) à 0x08 , donc cela signifie que la balise a un UID aléatoire (selon les normes NXP). Vous avez besoin de UID0 = 0x04 pour imiter L'Ultra-Léger MIFARE.

il existe un autonome émulateur Ultra-Léger MIFARE qui permet n'importe quelle valeur pour UID0 , a des bits OTP, lock, et block-locking resettables. Voir le manuel pour plus d'informations.

4
répondu nCipher 2014-11-04 18:19:07

la réponse courte est Oui . Cependant dépend de nombreux facteurs tels que la version android, le téléphone NFC puce, etc

pour savoir si votre appareil le supporte il suffit de télécharger une application telle que " NFC Check " par Tapkey, et il vous informera si MiFare Classic & MIFARE Ultralight sont supportés. Il existe également une liste à jour, mais apparemment, il pourrait y avoir une incompatibilité: https://www.shopnfc.com/en/content/7-nfc-compatibility

Maintenant, la question est "comment". Je n'ai pas encore trouvé d'application pour utiliser l'émulation de carte basée sur L'hôte de la nouvelle Android ( HCE ) à cette fin (voir ici): dans quelle mesure l'API NFC Android prend-elle en charge Mifare Desfire?

en fait, il est suggéré récemment par MiFare que vous devriez utiliser la méthode" secure element "à la place: https://www.mifare.net/support/forum/topic/emulate-mifare-classic-1k /

retour à votre question sur L'Ultra-Léger, la principale difficulté est que L'API Android définit as-aujourd'hui l'envoi d'un UID aléatoire sur chaque tap, comme suggéré par un utilisateur précédent nCypher: https://developer.android.com/guide/topics/connectivity/nfc/hce

comme une alternative d'accès de racine (ou des ROMs cyanogènes personnalisés) pourrait aider à modifier L'UID tel que dans cet exemple: http://osgt7405i.bkt.clouddn.com/help/en/index.html?t=1536931682474

cependant la dernière API Android se réfère directement à L'objet Ultra-Léger: https://developer.android.com/reference/android/nfc/tech/MifareUltralight

je connais des compagnies qui imitent ceci par le stockage SIM. Pour utiliser votre téléphone comme carte RFID de ces types MIFARE, MiFare a déjà fait une solution là où l'entreprise peut charger des cartes dans le nuage https://www.mifare4mobile.org/ associé à son transporteur SIM. Il ya une liste des puces NFC officiellement certifiés qui fonctionnent, la plupart D'entre eux NPX qui sont largement inclus dans les smartphones.

cependant leur solution est une API SDK (à savoir TapLinx). Il n'y a pas de logiciel pur de NXP disponible comme n'importe quel logiciel d'émulation de téléphone ou une solution de base de nuage.

de plus, le Le forum MiFare en parle: https://www.mifare.net/support/forum/topic/creating-nfc-android-app-to-act-as-mifare-card-to-interact-with-mifare-readers /

0
répondu JCM 2018-09-18 16:53:40