1.使用NFC Pro(Android APK)读取的TAG信息:
2.连接ACR 122U之后,从设备管理处可以看出ACR122U采用标准的微软CCID和PC/SC驱动(USB CCID):
3.PICC 的 Get Data指令
获取UID
< FF CA 00 00 00
> 04 5B 9D 32 23 35 80 90 00获取ISO 14443A 的ATS
< FF CA 01 00 00
> 6A 81 (Error:不支持此功能)
加载密钥
< FF 82 00 00 06 FF FF FF FF FF FF
> 90 00 (操作成功)
获取读写器固件版本号
< FF 00 48 00 00
> 41 43 52 31 32 32 55 32 31 34 (ASCII:ACR122U204)
4.向NFC标签读写数据(同Android NFC APK向NTAG203标签写入的内容为"123456")
读取数据
< FF B0 00 06 04
> 6E 31 32 33 90 00
从中可以看到数据域是从第6数据块第二个字节开始的
写入数据
< FF D6 00 06 04 39 38 37 36
> 90 00
使用Android读取标签内容为"876456",可见第6数据块的4个字节被9876覆盖,但是有效显示数据是从8开始的
两个不同标签读取的前48字节数据
A:
< FF B0 00 00 10
> 04 19 92 07 7A 8C 33 81 44 48 00 00 E1 10 12 00 90 00
< FF B0 00 04 10
> 01 03 A0 10 44 03 12 D1 01 0E 54 02 65 6E 48 65 90 00
< FF B0 00 08 10
> 6C 6C 6F 4B 69 74 74 79 21 FE 00 00 00 00 00 00 90 00
B:
< FF B0 00 00 10
> 04 5B 9D 4A 32 23 35 80 A4 48 00 00 E1 11 12 00 90 00
< FF B0 00 04 10
> 03 12 D1 01 0E 54 02 65 6E 48 65 6C 6C 6F 4B 69 90 00
< FF B0 00 08 10
> 74 74 79 21 FE 4E 69 63 6B 21 FE A6 D4 56 F3 56 90 00
Ismb-npp-java: https://code.google.com/p/ismb-npp-java/wiki/NppFromPhoneToACR122
NFC手机上基于软件的卡模拟:http://www.eefocus.com/cdfldf1984/blog/13-05/294325_53ee4.html
Android NFC 开发实例:http://blog.csdn.net/pku_android/article/details/7430788
附:
SD-NFC集成天线卡ATR/ATS定义规则说明
SD-NFC集成天线卡的ATR信息共14个字节,ATS信息15个字节(最后一个字节为校验字节)。其中包括协议字节4bytes和10bytes的历史字节。历史字节则包括:卡片提供商名称、项目标识、COS版本号、卡商自定义字节、代码编译日期(B-11,C-2012)、厂商ID和生产批次号。
ATS:3B8A800154464415FFBCFFFFFFFF0B
ATR:3B6A000054464415FFBCFFFFFFFF
Mifare Classic 存储卡的PICC命令(T=CL模拟)
ACR122U APDU Command
向密钥位置0x00h加载密钥{FF FF FF FF FF FF}:
< FF 82 00 00 06 FF FF FF FF FF FF
> 90 00
使用{TYPE A, 密钥号0x00h}验证块0x04h, PC/SC V2.07:
< FF 86 00 00 05 01 00 04 60 00
> 90 00
将Mifare 1K/4K卡中二进制块0x04h的数据更新为{00 01…0F h}:
< FF D6 00 04 10 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
> 90 00
从二进制块0x04h中读取16个字节(Mifare 1K 或 4K):
< FF B0 00 04 10
> 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 90 00