Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NFC Tag-4协议问题_Nfc_Apdu_Ndef_Smartcard Reader - Fatal编程技术网

NFC Tag-4协议问题

NFC Tag-4协议问题,nfc,apdu,ndef,smartcard-reader,Nfc,Apdu,Ndef,Smartcard Reader,我用的是springcard阅读器和标准的Type4被动标签。 我已经记录了通信协议,我不太明白发生了什么 完整的序列在消息的底部 为什么在收到CC+OK后,读卡器会以初始消息重新启动 00 A4 04 00 07 D2 76 00 00 85 01 00 并从标记中获取一个错误 我试图理解该协议,因为我需要使用微控制器和NFC前端(AS3953)实现被动类型4标签的仿真 完整通信日志: NFC Tag Tool v.2.10.5227.20069 Reader: EMPTY Discon

我用的是springcard阅读器和标准的Type4被动标签。 我已经记录了通信协议,我不太明白发生了什么

完整的序列在消息的底部

为什么在收到CC+OK后,读卡器会以初始消息重新启动

00 A4 04 00 07 D2 76 00 00 85 01 00

并从标记中获取一个错误

我试图理解该协议,因为我需要使用微控制器和NFC前端(AS3953)实现被动类型4标签的仿真


完整通信日志:

NFC Tag Tool v.2.10.5227.20069

Reader: EMPTY

Disconnect, disposition=1
Reader: MUTE
Reader: EMPTY
Reader: PRESENT

Connect to 'SpringCard NFC'Roll NFC 0', share=2, protocol=3
Connected to the card
Is the card a NFC Forum Tag ???
Reader: INUSE
< 00 A4 04 00 07 D2 76 00 00 85 01 01 00
Transmit << 00A4040007D276000085010100
Transmit >> 9000
> 90 00
< 00 A4 00 0C 02 E1 03
Transmit << 00A4000C02E103
Transmit >> 9000
> 90 00
< 00 B0 00 00 0F
Transmit << 00B000000F
Transmit >> 000F20003B00340406E104100000009000
> 00 0F 20 00 3B 00 34 04 06 E1 04 10 00 00 00 90 00
This card is a NFC type 4 Tag
< 00 A4 04 00 07 D2 76 00 00 85 01 01 00
Transmit << 00A4040007D276000085010100
Transmit >> 6A82
> 6A 82
SelectNfcApplication failed Check error : file not found (Check error : file not found)
< 00 A4 00 00 02 3F 00
Transmit << 00A40000023F00
Transmit >> 9000
> 90 00
< 00 A4 04 00 07 D2 76 00 00 85 01 01 00
Transmit << 00A4040007D276000085010100
Transmit >> 9000
> 90 00
< 00 A4 00 0C 02 E1 03
Transmit << 00A4000C02E103
Transmit >> 9000
> 90 00
< 00 B0 00 00 0F
Transmit << 00B000000F
Transmit >> 000F20003B00340406E104100000009000
> 00 0F 20 00 3B 00 34 04 06 E1 04 10 00 00 00 90 00
< 00 A4 00 0C 02 E1 04
Transmit << 00A4000C02E104
Transmit >> 9000
> 90 00
< 00 B0 00 00 02
Transmit << 00B0000002
Transmit >> 000A9000
> 00 0A 90 00
< 00 B0 00 02 3B
Transmit << 00B000023B
Transmit >> D101065402656E6F6B0A000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000009000
> D1 01 06 54 02 65 6E 6F 6B 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 00 00 00 00 00 00 90 00
Found a Text
Done!
1 NDEF record(s) found in the tag
Read terminated
NFC标签工具v.2.10.5227.20069
读者:空的
断开连接,配置=1
读取器:静音
读者:空的
读者:现在
连接到'SpringCard NFC'滚动NFC 0',共享=2,协议=3
已连接到卡
这张卡是NFC论坛的标签吗???
读者:因努塞
<00 A4 04 00 07 D2 76 00 00 85 01 01 00
传输>9000
> 90 00
<00 A4 00 0C 02 E1 03
传输>9000
> 90 00
<00B0000F
传输>000F20003B00340406E10410000009000
>00 0F 20 00 3B 00 34 04 06 E1 04 10 00 00 00 90 00
此卡是NFC类型4标签
<00 A4 04 00 07 D2 76 00 00 85 01 01 00
传输>6A82
>6A 82
SelectnCapApplication失败检查错误:未找到文件(检查错误:未找到文件)
<00 A4 00 00 02 3F 00
传输>9000
> 90 00
<00 A4 04 00 07 D2 76 00 00 85 01 01 00
传输>9000
> 90 00
<00 A4 00 0C 02 E1 03
传输>9000
> 90 00
<00B0000F
传输>000F20003B00340406E10410000009000
>00 0F 20 00 3B 00 34 04 06 E1 04 10 00 00 00 90 00
<00 A4 00 0C 02 E1 04
传输>9000
> 90 00
<00 B0 00 02
传输>000A9000
>00 0A 90 00
<00 B0 00 02 3B
传输>D101065402656E6F6B0A000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000009000
>D1 01 06 54 02 65 6E 6F 6B 0A 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 90 00
找到一个文本
完成!
在标签中找到1个NDEF记录
读终止
为什么读卡器在收到capability container+OK后重新启动以选择NFC Forum Type 4标记应用程序

没有任何东西要求读卡器应用程序执行此操作(但也没有任何东西禁止此行为)。因此,读卡器这样做是因为读卡器应用程序是以这种方式实现的

例如,应用程序可能分为几个层。第一层仅检查是否存在NFC论坛类型4标记应用程序(通过选择该应用程序并尝试查找功能容器),第二层然后尝试从NFC论坛类型4标记应用程序访问和读取数据,而不依赖于之前是否选择了该应用程序

为什么标签在收到NFC Forum Type 4标签应用程序的后续SELECT命令后返回错误(6A82)

这是一个很好的问题,它表明标记应用程序的实现很差,并且在已选择SELECT命令时无法识别该命令

似乎只有在选择了主文件(因此NFC论坛类型4标记应用程序被隐式取消选择)之后,才会识别NFC论坛类型4标记应用程序的新SELECT命令。同样,NFC论坛类型4标签操作规范并不强制要求这样做。第一个SELECT命令也可以(在我看来:应该也可以)正常工作

为什么读卡器在通信序列结束时请求0x3B(59)字节,而之前读取的NDEF消息大小仅指示0x0A(10)字节

读卡器似乎没有通过只读取NDEF文件的相关字节来优化通信。根据Type4标记操作规范,这是一个合法的场景。功能容器包含允许读卡器执行此操作的参数:

  • 能力容器是
    000F20003B00340406E10410000000
  • 因此,最大Le为
    0x003B
    (59字节)
  • 最大NDEF大小为
    0x1000
    (4096字节)
因此,读取器可以从NDEF文件读取多达4096个字节,并且允许在一个读取二进制APDU中读取多达59个字节。因此,读取器最多可以读取59个字节(从偏移量2开始),这远远低于字节偏移量4096

为什么读卡器在收到capability container+OK后重新启动以选择NFC Forum Type 4标记应用程序

没有任何东西要求读卡器应用程序执行此操作(但也没有任何东西禁止此行为)。因此,读卡器这样做是因为读卡器应用程序是以这种方式实现的

例如,应用程序可能分为几个层。第一层仅检查是否存在NFC论坛类型4标记应用程序(通过选择该应用程序并尝试查找功能容器),第二层然后尝试从NFC论坛类型4标记应用程序访问和读取数据,而不依赖于之前是否选择了该应用程序

为什么标签在收到NFC Forum Type 4标签应用程序的后续SELECT命令后返回错误(6A82)

这是一个很好的问题,它表明标记应用程序的实现很差,并且在已选择SELECT命令时无法识别该命令

似乎只有在选择了主文件(因此NFC论坛类型4标记应用程序被隐式取消选择)之后,才会识别NFC论坛类型4标记应用程序的新SELECT命令。同样,NFC论坛类型4标签操作规范并不强制要求这样做。第一个SELECT命令也可以(在我看来:应该也可以)正常工作

为什么读卡器在通信序列的末尾请求0x3B(59)字节