Mise en œuvre d'un lecteur NFC ACR122U sous Linux/Ubuntu tvaira@free.fr © 2014-
Mise en œuvre d'un lecteur NFC ACR122U sous Linux/Ubuntu tvaira@free.fr © 2014-2019 http://www.acs.com.hk/en/products/3/acr122u-usb-nfc-reader/ NFC (Near Field Communication, communication en champ proche) est une technologie de communication sans-fil à courte portée et haute fréquence, permettant l'échange d'informations entre des périphériques jusqu'à une distance d'environ 10 cm. Cette technologie est une extension de la norme ISO/ CEI 14443 standardisant les cartes de proximité utilisant la radio-identification (RFID). Documents annexes : Annexe 1 (carte Mifare Classic) et Annexe 2 (message ATR) 1. Détection $ dmesg ... [ 728.576207] usb 3-10.4.2: new full-speed USB device number 11 using xhci_hcd [ 728.595917] usb 3-10.4.2: New USB device found, idVendor=072f, idProduct=2200 [ 728.595919] usb 3-10.4.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 [ 728.595921] usb 3-10.4.2: Product: ACR122U PICC Interface [ 728.595922] usb 3-10.4.2: Manufacturer: ACS ... $ lsusb ... Bus 003 Device 011: ID 072f:2200 Advanced Card Systems, Ltd Conclusion : le lecteur USB est bien détecté. 2. Installation logicielle 2.1. Préparation $ sudo apt-get install pcsc-tools pcscd $ sudo apt-get install libpcsclite-dev $ sudo apt-get install libpcsclite1 $ sudo apt-get install libusb-dev 2.2. Installation de libnfc • Paquets (Ubuntu) $ sudo apt-get install libnfc-bin libnfc-dev libnfc5 • ou : $ wget http://dl.bintray.com/nfc-tools/sources/libnfc-1.7.1.tar.bz2 $ tar xjf libnfc-1.7.1.tar.bz2 $ cd libnfc-1.7.1/ $ ./configure // ou : $ ./configure --with-drivers=acr122_usb $ make $ sudo make install $ sudo ldconfig Remarque : par défaut, l'environnement de développement a été installé dans /usr/local. 3. Tests Remarque : si vous avez l'erreur « Unable to claim USB interface (Device or resource busy) », cela est certainement dû à la version du noyau Linux > 3.5 (cf. uname -a). Dans ce cas, il vous faudra faire : $ sudo vim /etc/modprobe.d/blacklist-libnfc.conf blacklist nfc blacklist pn533 blacklist pn533_usb Manuellement : $ sudo modprobe -r pn533_usb $ sudo modprobe -r pn533 Et éventuellement redémarrer pcscd : $ sudo service pcscd restart 3.1. Test du lecteur Remarque : pour le sudo cf. Droits d’accès (plus loin) $ sudo nfc-scan-device -v 1 NFC device(s) found: - ACS / ACR122U PICC Interface: acr122_usb:003:011 chip: PN532 v1.6 initator mode modulations: ISO/IEC 14443A (106 kbps), FeliCa (424 kbps, 212 kbps), ISO/IEC 14443-4B (106 kbps), Innovision Jewel (106 kbps), D.E.P. (424 kbps, 212 kbps, 106 kbps) target mode modulations: ISO/IEC 14443A (106 kbps), FeliCa (424 kbps, 212 kbps), D.E.P. (424 kbps, 212 kbps, 106 kbps) Conclusion : il semble que le lecteur soit un ACS / ACR122U. 3.2. Test d'une carte Mifare $ sudo nfc-list NFC device: ACS / ACR122U PICC Interface opened 1 ISO14443A passive target(s) found: ISO/IEC 14443A (106 kbps) target: ATQA (SENS_RES): 00 04 UID (NFCID1): 17 f0 79 21 SAK (SEL_RES): 08 Avec le badge de l'école :) $ sudo nfc-list nfc-list uses libnfc 1.7.1 NFC device: ACS / ACR122U PICC Interface opened 1 ISO14443A passive target(s) found: ISO/IEC 14443A (106 kbps) target: ATQA (SENS_RES): 00 04 UID (NFCID1): 0b dd 47 cd SAK (SEL_RES): 08 3.3. Autres tests Avec les 2 outils installés à partir du paquetage pcsc-tools : $ sudo pcsc_scan PC/SC device scanner V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr> Compiled with PC/SC lite version: 1.7.4 Using reader plug'n play mechanism Scanning present readers... 0: ACS ACR122U PICC Interface 00 00 Sun Jul 27 09:36:40 2014 Reader 0: ACS ACR122U PICC Interface 00 00 Card state: Card removed, Sun Jul 27 09:36:52 2014 Reader 0: ACS ACR122U PICC Interface 00 00 Card state: Card inserted, ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A + TS = 3B --> Direct Convention + T0 = 8F, Y(1): 1000, K: 15 (historical bytes) TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 ----- TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1 ----- + Historical bytes: 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 Category indicator byte: 80 (compact TLV data object) Tag: 4, len: F (initial access data) Initial access data: 0C A0 00 00 03 06 03 00 01 00 00 00 00 + TCK = 6A (correct checksum) Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 3B 8F 80 01 80 4F 0C A0 00 00 03 06 .. 00 01 00 00 00 00 .. Mifare Standard 1K (as per PCSC std part3) 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 .. .. 00 00 00 00 .. RFID - ISO 14443 Type A Part 3 (as per PCSC std part3) 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A Philips MIFARE Standard (1 Kbytes EEPROM) http://www.nxp.com/#/pip/pip=[pfp=41863]|pp=[t=pfp,i=41863] RFID - ISO 14443 Type A - Transport for London Oyster ACOS5/1k Mirfare RFID - ISO 14443 Type A - NXP Mifare card with 1k EEPROM vivotech ViVOcard Contactless Test Card $ ATR_analysis 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A ATR: 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A + TS = 3B --> Direct Convention + T0 = 8F, Y(1): 1000, K: 15 (historical bytes) TD(1) = 80 --> Y(i+1) = 1000, Protocol T = 0 ----- TD(2) = 01 --> Y(i+1) = 0000, Protocol T = 1 ----- + Historical bytes: 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 Category indicator byte: 80 (compact TLV data object) Tag: 4, len: F (initial access data) Initial access data: 0C A0 00 00 03 06 03 00 01 00 00 00 00 + TCK = 6A (correct checksum) Possibly identified card (using /usr/share/pcsc/smartcard_list.txt): 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 3B 8F 80 01 80 4F 0C A0 00 00 03 06 .. 00 01 00 00 00 00 .. Mifare Standard 1K (as per PCSC std part3) 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 .. .. 00 00 00 00 .. RFID - ISO 14443 Type A Part 3 (as per PCSC std part3) 3B 8F 80 01 80 4F 0C A0 00 00 03 06 03 00 01 00 00 00 00 6A Philips MIFARE Standard (1 Kbytes EEPROM) http://www.nxp.com/#/pip/pip=[pfp=41863]|pp=[t=pfp,i=41863] RFID - ISO 14443 Type A - Transport for London Oyster ACOS5/1k Mirfare RFID - ISO 14443 Type A - NXP Mifare card with 1k EEPROM vivotech ViVOcard Contactless Test Card Conclusion : Il semble que la carte lue soit une carte Philips MIFARE Standard (1 Kbytes EEPROM). Lire l'annexe 1 (carte Mifare Classic) et l'annexe 2 (message ATR). 4. Droits d'accès Manuellement : $ sudo ./utils/nfc-scan-device -v 1 NFC device(s) found: - ACS / ACR122U PICC Interface: acr122_usb:003:011 $ sudo chmod o+rw /dev/bus/usb/003/011 Automatiquement : $ sudo cp contrib/udev/42-pn53x.rules /etc/udev/rules.d/99-pn53x.rules $ sudo vim /etc/udev/rules.d/99-pn53x.rules ... ATTRS{idVendor}=="072f", ATTRS{idProduct}=="2200", MODE="0666", SYMLINK+="nfc" ... Remarque : un lien symbolique /dev/nfc sera aussi créé automatiquement au branchement du lecteur. Test : $ nfc-scan-device -v 1 NFC device(s) found: - ACS / ACR122U PICC Interface: acr122_usb:003:011 ... 5. Programmation Lien : http://tvaira.free.fr/projets/archives/test-nfc-acr122u.zip Annexe 1 : la carte MIFARE Classic MIFARE est une des technologies de carte à puce sans contact les plus répandues dans le monde avec 3,5 milliards de cartes et 40 millions de modules de lecture/encodage. La marque, lancée par Philips, est propriété de la société NXP. MIFARE est fondée (partiellement ou complètement selon les modèles) sur l'un des standards ISO décrivant les cartes à puce sans contact : l'ISO 14443 de Type A fonctionnant à 13,56 MHz. La technologie est intégrée à la fois dans les cartes et dans les lecteurs/encodeurs. Ces lecteurs sont fabriqués par différents fabricants sur la base d'un composant fourni par la société NXP. En fait, le nom MIFARE englobe plusieurs types de cartes à puce sans contact très différents. Les cartes MIFARE dites Classic (ou Standard) sont des cartes à mémoire (logique câblée). Elles ne respectent que partiellement le standard ISO 14443A, puisqu'elles utilisent un jeu de commandes propriétaire à la place du protocole de haut-niveau ISO 14443-4, et ne respectent pas le format de trames ISO 14443-3 dans les communications chiffrées. Elles utilisent un protocole de sécurité propriétaire NXP (CRYPTO1) pour l'authentification et le chiffrement qui a été cassé en 2008. La carte MIFARE Classic dispose d'un numéro de série ou CSN de 32 bits pré-encodé (UID) et d'un espace de stockage découpé en segments de données puis en uploads/Geographie/ tutoriel-nfc-acr122u.pdf
Documents similaires
-
21
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 23, 2021
- Catégorie Geography / Geogra...
- Langue French
- Taille du fichier 1.1111MB