0%

NFC读写工具杂记

NFC概述[摘自维基]

  • 近距离无线通信(英语:Near-field communication,NFC),又简称近距离通信或近场通信,是一套通信协议,让两个电子设备(其中一个通常是移动设备,例如智能手机)在相距几厘米之内进行通信.NFC,如同过去的电子票券智能卡一般,将允许移动支付取代或支持这类系统.NFC应用于社交网络,分享联系方式,照片,视频或文件.具备 NFC 功能的设备可以充当电子身份证和钥匙卡.NFC 提供了设置简便的低速连接,也可用于引导能力更强的无线连接.
  • 近场通信技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体 NXP)’诺基亚和索尼共同于2004年研制开发[4],其基础是RFID及互连技术.近场通信是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内.其传输速度有106 Kbit/秒,212 Kbit/秒或者424 Kbit/秒三种.目前近场通信已通过成为ISO/IEC IS 18092国际标准,EMCA-340标准与ETSI TS 102 190标准.NFC采用主动和被动两种读取模式.
  • 每一个完整的NFC设备可以用三种模式工作:
    • 卡模拟模式(Card emulation mode):这个模式其实就是相当于一张采用RFID技术的IC卡.可以替代现在大量的IC卡(包括信用卡)场合商场刷卡,IPASS,门禁管制,车票,门票等等.此种方式下,有一个极大的优点,那就是卡片通过非接触读卡器的RF域来供电,即便是寄主设备(如手机)没电也可以工作.NFC设备若要进行卡片模拟(Card Emulation)相关应用,则必须内置安全组件(Security Element, SE)之NFC芯片或通过软件实现主机卡模拟(Host Card Emulation,HCE).
    • 读卡器模式(Reader/Writer mode):作为非接触读卡器使用,比如从海报或者展览信息电子标签上读取相关信息.
    • 点对点模式(P2P mode):这个模式和红外线差不多,可用于数据交换,只是传输距离较短,传输创建速度较快,传输速度也快些,功耗低(蓝牙也类似).将两个具备NFC功能的设备链接,能实现数据点对点传输,如下载音乐,交换图片或者同步设备地址薄.因此通过NFC,多个设备如数位相机,PDA,计算机和手机之间都可以交换资料或者服务.

与藍牙的比较

  • NFC和蓝牙都是短距离通信技术,而且都被集成到移动电话.但NFC不需要复杂的设置程序.NFC也可以简化蓝牙连接.
  • NFC略胜蓝牙的地方在于设置程序较短,但无法达到低功率蓝牙(Bluetooth Low Energy)的传输速率.在两台NFC设备相互连接的设备识别过程中,使用NFC来替代人工设置会使创建连接的速度大大加快:少于十分之一秒.NFC的最大资料传输量424 kbit/s远小于Bluetooth V2.1(2.1 Mbit/s).虽然NFC在传输速度与距离比不上蓝牙(小于20 cm),但相应可以减少不必要的干扰.这让NFC特别适用于设备密集而传输变得困难的时候.
  • 相对于蓝牙,NFC兼容于现有的被动RFID(13.56 MHz ISO/IEC 18000-3)设施.NFC的能量需求更低,与蓝牙V4.0低功耗协议类似.当NFC在一台无供电的设备(比如一台关机的手机,非接触式智能信用卡,或是智能海报)上工作时,NFC的能量消耗会要大于低功率蓝牙V4.0.
  • 对于移动电话或是行动消费性电子产品来说,NFC的使用比较方便.NFC的短距离通信特性正是其优点,由于耗电量低,一次只和一台机器链接,拥有较高的保密性与安全性,NFC有利于信用卡交易时避免被盗用.NFC的目标并非是取代蓝牙等其他无线技术,而是在不同的场合,不同的领域起到相互补充的作用.

Linux连接使用

1
~$ sudo apt-get install libnfc-bin libnfc-examples mfoc mfcuk
  • 这里是直接使用uart来连接,只要一个USB-TTL连接到电脑就要可以,修改/etc/nfc/libnfc.conf成如下内容:
1
2
3
4
5
6
7
~$ grep  '=' /etc/nfc/libnfc.conf
#allow_autoscan = true
#allow_intrusive_scan = false
#log_level = 1
#device.name = "microBuilder.eu"
device.connstring = "pn532_uart:/dev/ttyUSB0"

  • 如下图所示,连接UART后,并且通过板上的拨码开关设置成HSV模式.

PN532_nfc.jpg

1
2
3
4
5
6
  USB-TTL      PN532

3.3vVCC <-----> VCC
GND <-----> GND
RX <-----> TX
TX <-----> RX
  • 列出所有的NFC列表,如果LIBNFC_LOG_LEVEL=3会有更加丰富的信息输出.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
~$ LIBNFC_LOG_LEVEL=1 nfc-list -v
nfc-list uses libnfc 1.8.0
NFC device: opened
0 ISO14443A passive target(s) found.

0 Felica (212 kbps) passive target(s) found.

0 Felica (424 kbps) passive target(s) found.

0 ISO14443B passive target(s) found.

0 ISO14443B passive target(s) found.

0 ISO14443B-2 ST SRx passive target(s) found.

0 ISO14443B-2 ASK CTx passive target(s) found.

0 ISO14443B iClass passive target(s) found.

0 ISO14443A-3 Jewel passive target(s) found.

0 ISO14443A-2 NFC Barcode passive target(s) found.

  • 直接放上一张卡,读取它的基本信息.如下面所示,这张卡的UID370656b3.
1
2
3
4
5
6
7
8
~$ nfc-list
nfc-list uses libnfc 1.8.0
NFC device: opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): 00 04
UID (NFCID1): 37 06 56 b3
SAK (SEL_RES): 08
  • 再读一张
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
~$ ~$ nfc-list -v
nfc-list uses libnfc 1.8.0
NFC device: opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): 00 04
* UID size: single
* bit frame anticollision supported
UID (NFCID1): 0f b7 85 32
SAK (SEL_RES): 28
* Compliant with ISO/IEC 14443-4
* Not compliant with ISO/IEC 18092
ATS: 77 33 a0 02 22 30 00 01 01
* Max Frame Size accepted by PICC: 128 bytes
* Bit Rate Capability:
* PICC to PCD, DS=2, bitrate 212 kbits/s supported
* PICC to PCD, DS=4, bitrate 424 kbits/s supported
* PCD to PICC, DR=2, bitrate 212 kbits/s supported
* PCD to PICC, DR=4, bitrate 424 kbits/s supported
* Frame Waiting Time: 309.3 ms
* No Start-up Frame Guard Time required
* Node Address not supported
* Card IDentifier supported
* Historical bytes Tk: 22 30 00 01 01
* Proprietary format

Fingerprinting based on MIFARE type Identification Procedure:
* SmartMX with MIFARE 1K emulation
Other possible matches based on ATQA & SAK values:
* JCOP31 v2.3.1


  • 这是一张NXPSmartMX系列的卡片,同时附带MIFARE Classic 1K模拟.SmartMXNXPJCOP卡系列,也就是说这张卡是一种CPU卡(也有叫做Java卡).CPU卡意味着卡中有一个完整功能的CPU,并且带有操作系统,卡片的功能是基于软件实现的,而不是像MIFAREClassic这种基于ASIC的卡,用硬件电路实现卡片功能.这种类型的卡相比较MifareClassic类型的卡要安全的多,几乎不可能被破解和复制.

相关源码编译

1

树莓派

手机应用

NRF52840

ESP32

烧写工具

谢谢支持

  • 微信二维码: