Modification de la fonctionnalité de l'émulation de la carte hôte dans Android
Je suis actuellement dans le processus de développement d'un projet pour mes cours à l'Université où je vais être, espérons-le, l'édition de la fonctionnalité du HCE Fonctionnalité d'Android, pour me permettre de mettre mon propre UID lorsque l'émulation d'une carte.
Maintenant, j'ai téléchargé le PSBA source, et construit une image personnalisée avec pas modifié le code et installé à ma Nexus 7 (Ce qui inclut le téléchargement et y compris le Fournisseur de matériel spécifique pour les conducteurs), et je suis bloqué sur la partie suivante.
J'ai physiquement impossible de trouver le code de l'appareil qui régit les fonctions NFC Android, et je suis pas sûr de la façon d'aller sur a) la Recherche, et b) la Façon dont je devrais être en train de modifier ce code.
Est le code de la NFC sur Android dans la base de Noyau? et si oui, comment aurais-je le modifier avant que je ne "faire" de nouveau et j'espère qu'il construit? ou est-ce ailleurs? J'ai remarqué que les fichiers dans le Fournisseur dossier que j'ai téléchargé et extrait sont dans un .mnt format, je ne pense pas modifiable.
Toute aide que je peux obtenir sur ce serait grandement apprécié.
source d'informationauteur Jay Allen
Vous devez vous connecter pour publier un commentaire.
Ok ! J'ai donc trouvé une solution pour le problème que j'ai!
Sur la Nexus 7, lorsque le NFC est activé, il obtient ses informations à partir d'un fichier de configuration "/etc/" appelé "libnfc-brcm-20791b05.conf"
À l'intérieur de ce fichier il y a un paramètre appelé "NFA_DM_START_UP_CFG"
Par défaut, il ressemble à ceci:
Pour modifier l'UID qui est généré à l'Émulation, vous devez ajouter quelques octets à la fin de ce paramètre.
Le premier octet de ce que vous ajoutez est 0x33 (Ce qui signifie que vous allez définir manuellement l'UID)
Le deuxième octet qui est ajouté est la longueur de l'id utilisateur que vous souhaitez configurer (Ce qui peut être soit 4,7 ou 10 octets, de sorte que cette deuxième octet peut être 0x04, 0x07 ou 0x0A)
La prochaine octets sont alors les ID que vous souhaitez! (REMARQUE: en Fonction du nombre d'Octets que vous ajoutez, vous devez modifier le premier octet du tableau afin de refléter la nouvelle taille de la matrice - il commence au 42, de sorte que si vous ajoutez des 6 octets qu'il devrait changer à 48)
Par exemple, si vous souhaitez définir un 7 octet ID d'01 02 03 04 05 06 07, la nouvelle configuration de la ligne devrait ressembler à ceci:
Vous pouvez ensuite pousser ce fichier de configuration pour votre nexus appareil à l'aide de la bad:
Ceci permettra de rétablir le lien avec le nouveau fichier de configuration, et sur l'émulation de l'UID sera désormais fixé à 01 02 03 04 05 06 07
Espère que cette aide n'importe qui lisant ma question!
Android NFC pile est fondamentalement divisée en cinq parties:
Le NFC interface de pilote de périphérique. C'est une partie du noyau. En un mot, ce conducteur n'tunnels de trames de données (par exemple, NCI trames de protocole) entre un personnage de fichier de périphérique et le contrôleur NFC matériel. Vous n'aurez pas à toucher qu'une partie de votre projet.
L'interface de bas niveau de la bibliothèque écrite en C (libnfc-nciou libnfc-nxp pour les appareils avec NXP du PN544 contrôleur NFC). Cette bibliothèque fournit un ensemble de fonctions de haut niveau pour interagir avec le contrôleur NFC. Donc, fondamentalement, traduit de haut niveau de fonctionnalité (par exemple, "début d'interrogation pour les technologies de X, Y et Z") dans NCI commandes qui sont envoyées au contrôleur NFC à travers le noyau conducteur. C'est certainement un endroit où vous aurez besoin d'ajouter des modifications. Il fait partie de PSBA, vous pouvez le compiler à l'aide de la normale PSBA système de construction.
La JNI de l'interface de la bibliothèque écrite en C++ (libnfc_nci_jni). Cette couche se connecte le libnfc-nci C bibliothèque de haut niveau en code Java. Si vous souhaitez modifier les émules de l'UID les applications Android, ce est certainement un endroit où vous aurez besoin d'ajouter des modifications. Il fait partie de PSBA, vous pouvez le compiler à l'aide de la normale PSBA système de construction.
Android NFC service système écrit en Java. Ce service prend le contrôle sur l'ensemble de la NFC pile et met en œuvre la fonctionnalité de niveau supérieur sur la base des ressources fournies par libnfc-nci. Si vous souhaitez modifier les émules de l'UID les applications Android, ce est certainement un endroit où vous aurez besoin d'ajouter des modifications. Il fait partie de PSBA, vous pouvez le compiler à l'aide de la normale PSBA système de construction.
Android cadre de base fournit une API pour la fonctionnalité de la technologie NFC, le système de services qui peuvent être accessibles par les applications Android.
Concerne la fixation et la modification de la émulé UID vous aurez certainement envie d'avoir un coup d'oeil à ces projets que j'ai récemment publié sur GitHub (même si elles sont encore en cours de réalisation):