RFID et NFC sans contact pour l’écosystème Omega

Utilisation de l’extension RFID et NFC

L’extension NFC et RFID apporte une communication RFID et NFC sans contact à l’écosystème Omega. Il prend en charge la lecture et l’écriture avec plusieurs protocoles NDC et RFID à 13,56 MHz. L’extension est basée sur la PN532puce NFC populaire et communique avec l’Omega via UART1.

Types de cartes pris en charge

L’extension RFID / NFC est livrée avec deux étiquettes Mifare Ultralight que vous pouvez numériser, lire et écrire. Cependant, vous pouvez également utiliser d’autres étiquettes RFID / NFC compatibles avec une extension. Voici la liste des autres:

  • Cartes Mifare 1k, 4k, Ultralight et DesFire
  • Cartes ISO / IEC 14443-4 telles que CD97BX, CD light, DesFire, P5CN072 (SMX)
  • Cartes Jewel Innovision telles que la carte IRT5001
  • Cartes FeliCa telles que RCS_860 et RCS_854

Nous verrons comment utiliser Mifare Classic et Ultralight car ce sont les balises les plus utilisées

balises rfid

Installation

Pour utiliser votre extension RFID et NFC, vous devez d’abord initialiser l’appareil:

opkg update
opkg install nfc-exp

Cela installera le nfc-utilspackage, qui contient plusieurs programmes de ligne de commande basés sur la libnfcbibliothèque pour interagir avec les périphériques NFC. Voir le libnfcwiki pour plus d’informations.

Commandes disponibles

Une fois nfc-expinstallé, les utilitaires suivants seront disponibles:

nfc-emulate-forum-tag4
nfc-jewel
nfc-list
nfc-mfclassic
nfc-mfultralight
nfc-read-forum-tag3
nfc-relay-picc
nfc-scan-device

Il existe également quelques packages dédiés aux Mifaretags:

mifare-classic-format
mifare-classic-read-ndef
mifare-classic-write-ndef
mifare-desfire-access
mifare-desfire-create-ndef
mifare-desfire-ev1-configure-ats
mifare-desfire-ev1-configure-default-key
mifare-desfire-ev1-configure-random-uid
mifare-desfire-format
mifare-desfire-info
mifare-desfire-read-ndef
mifare-desfire-write-ndef
mifare-ultralight-info

Ces programmes sont accessibles à partir de la ligne de commande et sont utilisés pour contrôler l’extension RFID et NFC. Pour une impression de l’utilisation de la commande, exécutez-la avec juste un argument ‘-h’.

Numérisation des étiquettes RFID / NFC

Pour numériser une étiquette RFID / NFC, vous pouvez utiliser l’ nfc-listutilitaire. Cet outil recherche les balises disponibles et imprime les résultats. Si aucune balise n’est trouvée, elle quittera simplement.

Placez l’étiquette près de l’antenne de l’extension et exécutez la nfc-listcommande. Par exemple, si vous numérisez une Mifare Classicétiquette de carte, elle imprimera quelque chose comme ceci:

nfc-list uses libnfc reboot-3483-gd1bcad0
NFC device: pn532_uart:/dev/ttyS1 opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04
       UID (NFCID1): c0  a8  f6  73
      SAK (SEL_RES): 08

Le ATQAet SAKindiquent le fabricant et le type d’étiquette. Il UIDs’agit du numéro d’identification unique. C’est important! Étant donné que chaque étiquette a un ID unique , cette valeur peut être utilisée pour reconnaître certaines cartes!

Les ATQAet les SAKvaleurs, et la longueur du UIDpeuvent être utilisés pour déterminer le type de carte qui a été balayé:

Type de carteATQASAKLongueur UID
Mifare Classic 1K00 04084 octets
Mifare Classic 4K00 02184 octets
Mifare Ultralight00 44007 octets

Utilisation des cartes ultra légères Mifare

Les cartes ultra légères Mifare sont très utiles pour les applications à volume élevé. Ils sont chargés avec 64 octets de mémoire EEPROM, dont 4 octets de mémoire programmable unique où les bits individuels peuvent être écrits mais pas effacés et 48 octets de données définies par l’utilisateur. Les cartes ultralégères peuvent également être définies en «lecture seule» à l’aide de Lock-Bytes.

nfc-mfultralightprogramme est utilisé pour configurer les Mifare Ultralightcartes de type. Vous pouvez lire à partir de la balise et y écrire.

Il y a plusieurs opérations qui peuvent être effectuées avec ce programme: * Scanner la balise et la stocker dans un fichier binaire ( .mfdformat) * Modifier les données utilisateur * Écrire un nouveau fichier binaire dans la balise

Afin d’analyser la balise et de la stocker dans un fichier, veuillez exécuter la commande suivante:

nfc-mfultralight r mycardUltra.mfd

La carte a été lue et stockée dans un fichier appelé mycardUltra.mfd. Maintenant, le .mfdfichier binaire a été enregistré dans votre système de fichiers. Pour afficher le contenu du fichier, utilisez l’ xxdutilitaire à l’aide de la commande suivante:

xxd mycardUltra.mfd

Et vous serez présenté avec les éléments suivants:

étiqueté ultraléger

Modification des données

Pour écrire des données dans la balise, nous allons modifier ce que nous venons de lire, puis les écrire sur la carte. Pour modifier les données, nous allons:

  1. Convertissez le .mfdbinaire en un fichier .hexplus facile à modifier
  2. Modifiez le .hexfichier à l’aide de n’importe quel éditeur de code (par exemple vim, nano, etc.)
  3. Convertissez l’hexagone dans le .mfdfichier

L’ xxdutilitaire pourrait être utilisé pour convertir le .mfden .hex:

xxd mycardUltra.mfd > mycardUltra.hex

Vous pouvez modifier n’importe quel bloc de données utilisateur (2e, 3e et 4e blocs du secteur). Modifiez les octets que vous souhaitez modifier et enregistrez-le. Par exemple, vous pouvez effectuer les opérations suivantes:

Block 1: 4920 616d 2075 7369 6e67 2072 6669 642f
Block 2: 6e66 6320 6578 7061 6e73 696f 6e0a 0a0a

Enregistrez votre fichier modifié et reconvertissez-le au .mfdformat binaire à l’aide de la commande suivante:

xxd -r mycardUltra.hex mycardUltra.mfd

Écrire dans la balise

Maintenant, vous pouvez écrire les données mises à jour sur la carte. Émettez la commande suivante

yes N | nfc-mfultralight w mycardUltra.mfd

La première partie de cette commande répondra automatiquement Non à toutes les questions posées par l’utilitaire:

Write OTP bytes ? [yN] Write Lock bytes ? [yN] Write UID bytes (only for special writeable UID cards) ? [yN]

Et vous serez présenté avec les éléments suivants:

NFC device: Omega NFC Expansion opened
1 ISO14443A passive target(s) found:
        53e55e3e000f80
Using MIFARE Ultralight card with UID: 53e55e3e000f80
Tag is EVI - PASSWORD may be required
EVI storage size: unknown!
Write OTP bytes ? [yN] Write Lock bytes ? [yN] Write UID bytes (only for special writeable UID cards) ? [yN]

Si vous relisez la carte, vous verrez qu’elle contient maintenant les données qui viennent d’être écrites:

0000000: 53e5 5e60 3e00 0f80 b148 0000 e110 1200  S.^`>....H......
0000010: 4920 616d 2075 7369 6e67 2072 6669 642f  I am using rfid/
0000020: 6e66 6320 6578 7061 6e73 696f 6e0a 0a0a  nfc expansion...
0000030: 6572 65fe 616e 7cfe 003e 1026 0001 0110  ere.an|..>.&....

Utilisation des cartes Mifare Classic

Les cartes Mifare Classic sont assez pratiques, elles stockent jusqu’à 4 Ko de données et se présentent généralement sous deux formes:

Les cartes Mifare Classic sont chargées avec 1 Ko ou 4 Ko de mémoire EEPROM.

Chaque carte a son propre UID, caractère de vérification de bloc (BCC), condition d’accès avec deux clés (A et B) et blocs de données utilisateur qui peuvent être configurés avec différentes conditions d’accès.

Veuillez consulter le tableau ci-dessous pour les caractéristiques des cartes:

Type de carteNombre de secteursNombre de blocs par secteurDonnées (octets)
Mifare Classic 1K1641 024
Mifare Classic 4K32 + 84 + 164,096

Chaque bloc fait 16 octets. Un secteur contient 4 blocs, soit 64 octets au total. Un bloc dans chaque secteur contient les deux clés (A et B), ainsi que les paramètres de contrôle d’accès qui définissent les privilèges (lecture, écriture, ni l’un ni l’autre, les deux) de chaque clé pour ce secteur.

Le tout premier secteur d’une étiquette commence par un bloc de données d’identification de carte qui ne peut pas être écrasé, puis 2 blocs programmables et le bloc clé. Tous les autres secteurs sont composés de 3 blocs programmables et d’un bloc clé.

diagramme-mifare-classique

Nous allons utiliser le nfc-mfclassicprogramme utilisé pour interagir avec les Mifare Classiccartes. Vous pouvez lire / écrire sur l’étiquette, essuyer la carte et modifier les clés.

Il y a plusieurs opérations qui peuvent être effectuées avec cette commande: * Scanner la balise et stocker le contenu dans un fichier binaire ( .mfdformat) * Modifier les données utilisateur et / ou les clés * Écrire un nouveau fichier binaire dans la balise

Lecture de la balise Mifare Classic

Afin d’analyser la balise et de la stocker dans un fichier à l’aide de la clé A, exécutez la commande suivante:

nfc-mfclassic r a mycard.mfd

La carte a été lue puis stockée dans un fichier appelé mycard.mfdclé A. Maintenant, le .mfdfichier binaire a été enregistré dans votre système de fichiers. Ce fichier contient un contenu binaire difficile à comprendre. Nous allons donc utiliser l’ xxdutilitaire pour le convertir en un format hexadécimal plus lisible.

À l’aide de cet utilitaire, vous pouvez afficher le contenu de vos données de balise à l’aide de la commande suivante:

xxd mycard.mfd

Et vous serez présenté avec les éléments suivants:

00000000: 70e2 f773 1688 0400 0000 0000 0000 0000  p..s............
00000010: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000020: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000030: ffff ffff ffff ff07 8069 0000 0000 0000  .........i......
00000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000070: ffff ffff ffff ff07 8069 0000 0000 0000  .........i......
00000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000000b0: ffff ffff ffff ff07 8069 0000 0000 0000  .........i......
...

Les 4 premières lignes représentent le premier secteur. Le tout premier bloc de ce secteur contient les données d’identification de la carte, y compris l’UID, le BCC et d’autres données du fabricant. Dans ce cas, le UIDde cette carte est 70e2f773BCCest 16ATQAest 8804et le reste est les données du fabricant. Chaque secteur a ses propres clés et points d’accès stockés dans le dernier bloc de chaque secteur.

Modification des données

Pour écrire des données dans la balise, nous allons modifier ce que nous venons de lire, puis les écrire sur la carte. Pour modifier les données:

  1. Convertissez le .mfdbinaire en un fichier .hexplus facile à modifier
  2. Modifiez le .hexfichier à l’aide de n’importe quel éditeur de code (par exemple vim, nano, etc.)
  3. Reconvertissez l’hex dans le .mfdfichier

L’ xxdutilitaire pourrait être utilisé pour convertir le .mfden .hex:

xxd mycard.mfd > mycard.hex

Vous pouvez modifier n’importe quel bloc de données utilisateur (2e et 3e blocs du premier secteur et 1er, 2e ou 3e bloc de tous les autres secteurs). Modifiez les octets que vous souhaitez modifier et enregistrez-le. Par exemple, vous pouvez effectuer les opérations suivantes:

Block 1: 0001 0203 0405 0607 0809 0a0b 0c0d 0e0f

Enregistrez votre fichier modifié et reconvertissez-le au .mfdformat binaire à l’aide de la commande suivante:

xxd -r mycard.hex mycard.mfd

Écrire dans la balise

Maintenant, vous pouvez réécrire les données mises à jour sur la carte, en utilisant la touche A:

# nfc-mfclassic w a newdata.mfd
NFC reader: pn532_uart:/dev/ttyS1 opened
Found MIFARE Classic card:
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04
       UID (NFCID1): 70  e2  f7  73
      SAK (SEL_RES): 08
Guessing size: seems to be a 1024-byte card
Writing 64 blocks |...............................................................|
Done, 63 of 64 blocks written.

Maintenant, la carte contient des données mises à jour!

Lecture des données NDEF

L’ mifare-classic-read-ndefest l’utilité de lire la carte et le stocker dans un NDEFformat. En général, NDEFest l’abréviation de NFS Data Exchange Format. Ce format est utilisé pour stocker et échanger des données (par exemple, des messages texte, les URL du site, des mots de passe, etc.) dans un format texte brut.

Exécutez la commande suivante:

mifare-classic-read-ndef -y -o readdata.txt

Dans cette commande, nous ne confirmons pas la lecture en utilisant -yet en extrayant le message NDEF en ayant -o. Si votre balise n’a pas de données NDEF écrites précédemment, alors vous serez présenté avec la sortie suivante:

Found Mifare Classic 1k with UID 10ebf773.
No MAD detected.

MADsignifie Mifare Application Directoryet indique le secteur qui contient l’enregistrement NDEF. S’il n’y a pas encore de données NDEF écrites, il n’y a rien à lire. Écrivons donc quelque chose sur la carte.

Écriture de données NDEF dans la balise

Pour écrire un message sur la carte, l’ mifare-classic-write-ndefutilitaire sera utilisé. Voici la procédure d’écriture:

  • Créez un fichier (par exemple file.txt) et remplissez-le avec un message (par exemple Hello World!)
  • Écrivez ce fichier dans la balise
  • Vérifiez si les données ont bien été écrites

En supposant que vous avez créé le fichier texte, nous utiliserons la commande suivante pour écrire le contenu de ce fichier sur la carte:

mifare-classic-write-ndef -y -i file.txt

Si le fichier a été écrit avec succès, vous devriez voir la sortie similaire:

NDEF file is 13 bytes long.
Found Mifare Classic 1k with UID 10ebf773.

Enfin, pour vérifier si le message est sur la carte, nous allons lire la carte dans un nouveau fichier et vérifier les données:

mifare-classic-read-ndef -y -o readfile.txt

Vous pouvez maintenant voir le contenu du readfile.txtet le comparer au file.txt.

Formatage des données Tag NDEF

Afin de formater les données de la carte (supprimer toutes les données utilisateur), la mifare-classic-formatcommande sera utilisée. Assurez-vous de sauvegarder / sauvegarder toutes les données stockées sur la carte si nécessaire car cette opération ne peut pas être annulée.

Disponibilité d’extension RFID / NFC

L’ nfc-scan-deviceutilitaire permet de vérifier si le périphérique RFID / NFC est disponible. Lorsque votre extension RFID / NFC est connectée à la station d’accueil, vous pouvez la numériser et vous assurer qu’elle est reconnue par le système:

# nfc-scan-device
nfc-scan-device uses libnfc reboot-3483-gd1bcad0
1 NFC device(s) found:
- pn532_uart:/dev/ttyS1:
    pn532_uart:/dev/ttyS1

De là, vous pouvez voir que l’extension est opérationnelle /dev/ttyS1.

Des conseils de dépannage

Parfois, la nfccommande émise n’a pas pu terminer son processus et si vous la terminez à l’aide, Ctrl + Celle s’exécutera en arrière-plan. Si vous essayez d’effectuer d’autres opérations liées à nfc, vous pouvez rencontrer l’erreur suivante:

error   libnfc.driver.pn532_uart        Serial port already claimed: /dev/ttyS1
nfc-mfultralight: ERROR: Error opening NFC device

Cela signifie que l’extension RFID / NFC est toujours occupée à traiter la commande précédente. L’ screenutilitaire sera utilisé pour l’arrêter. Exécutez les commandes suivantes pour installer l’ screenutilitaire et arrêter le processus d’arrière-plan:

opkg update
opkg install screen
screen /dev/ttyS1

Un écran noir noir vous sera présenté. Pour arrêter le processus, appuyez sur Ctrl + a + ket à l’invite suivante, Really kill this window [y/n]appuyez sur y. Cela arrêtera le processus et vous permettra de poursuivre l’expansion.

source principal : https://docs.onion.io/omega2-docs/using-rfid-nfc-expansion.html#scanning-rfidnfc-tags

Autre source utile : https://sanscontact.wordpress.com/2011/10/23/le-point-sur-les-societes-fabriquant-les-chips-nfc-pour-les-mobiles/