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 PN532
puce 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
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-utils
package, qui contient plusieurs programmes de ligne de commande basés sur la libnfc
bibliothèque pour interagir avec les périphériques NFC. Voir le libnfc
wiki pour plus d’informations.
Commandes disponibles
Une fois nfc-exp
installé, 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 Mifare
tags:
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-list
utilitaire. 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-list
commande. 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 ATQA
et SAK
indiquent le fabricant et le type d’étiquette. Il UID
s’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 ATQA
et les SAK
valeurs, et la longueur du UID
peuvent être utilisés pour déterminer le type de carte qui a été balayé:
Type de carte | ATQA | SAK | Longueur UID |
---|---|---|---|
Mifare Classic 1K | 00 04 | 08 | 4 octets |
Mifare Classic 4K | 00 02 | 18 | 4 octets |
Mifare Ultralight | 00 44 | 00 | 7 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-mfultralight
programme est utilisé pour configurer les Mifare Ultralight
cartes 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 ( .mfd
format) * 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 .mfd
fichier binaire a été enregistré dans votre système de fichiers. Pour afficher le contenu du fichier, utilisez l’ xxd
utilitaire à l’aide de la commande suivante:
xxd mycardUltra.mfd
Et vous serez présenté avec les éléments suivants:
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:
- Convertissez le
.mfd
binaire en un fichier.hex
plus facile à modifier - Modifiez le
.hex
fichier à l’aide de n’importe quel éditeur de code (par exemple vim, nano, etc.) - Convertissez l’hexagone dans le
.mfd
fichier
L’ xxd
utilitaire pourrait être utilisé pour convertir le .mfd
en .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 .mfd
format 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 carte | Nombre de secteurs | Nombre de blocs par secteur | Données (octets) |
---|---|---|---|
Mifare Classic 1K | 16 | 4 | 1 024 |
Mifare Classic 4K | 32 + 8 | 4 + 16 | 4,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é.
Nous allons utiliser le nfc-mfclassic
programme utilisé pour interagir avec les Mifare Classic
cartes. 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 ( .mfd
format) * 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.mfd
clé A
. Maintenant, le .mfd
fichier binaire a été enregistré dans votre système de fichiers. Ce fichier contient un contenu binaire difficile à comprendre. Nous allons donc utiliser l’ xxd
utilitaire 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 UID
de cette carte est 70e2f773
, BCC
est 16
, ATQA
est 8804
et 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:
- Convertissez le
.mfd
binaire en un fichier.hex
plus facile à modifier - Modifiez le
.hex
fichier à l’aide de n’importe quel éditeur de code (par exemple vim, nano, etc.) - Reconvertissez l’hex dans le
.mfd
fichier
L’ xxd
utilitaire pourrait être utilisé pour convertir le .mfd
en .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 .mfd
format 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-ndef
est l’utilité de lire la carte et le stocker dans un NDEF
format. En général, NDEF
est 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 -y
et 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.
MAD
signifie Mifare Application Directory
et 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-ndef
utilitaire 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.txt
et 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-format
commande 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-device
utilitaire 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 nfc
commande émise n’a pas pu terminer son processus et si vous la terminez à l’aide, Ctrl + C
elle 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’ screen
utilitaire sera utilisé pour l’arrêter. Exécutez les commandes suivantes pour installer l’ screen
utilitaire 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 + k
et à 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/