Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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
与MRTD交互时,不同Android设备的不同响应_Android_Protocols_Nfc_Apdu_Contactless Smartcard - Fatal编程技术网

与MRTD交互时,不同Android设备的不同响应

与MRTD交互时,不同Android设备的不同响应,android,protocols,nfc,apdu,contactless-smartcard,Android,Protocols,Nfc,Apdu,Contactless Smartcard,我目前正在开发一个Android应用程序,它可以读取电子护照和其他支持NFC的文档 我已经在多台Android设备上测试了代码,但发现其中一台无法读取文档 以电子护照为例,它正确地传递Select应用程序调用,并返回状态代码90 00。 我还获得了一个有效的BAC质询,但当我调用外部身份验证时,它返回一个状态码69 86(不允许使用命令(无当前EF))。我所有的其他测试手机返回状态码90 00 我的问题是为什么单一型号的手机会给我不同的APDU响应。我曾试图阅读安卓系统中的NFC硬件,但没有找到

我目前正在开发一个Android应用程序,它可以读取电子护照和其他支持NFC的文档

我已经在多台Android设备上测试了代码,但发现其中一台无法读取文档

以电子护照为例,它正确地传递Select应用程序调用,并返回状态代码90 00。 我还获得了一个有效的BAC质询,但当我调用外部身份验证时,它返回一个状态码69 86(不允许使用命令(无当前EF))。我所有的其他测试手机返回状态码90 00

我的问题是为什么单一型号的手机会给我不同的APDU响应。我曾试图阅读安卓系统中的NFC硬件,但没有找到为什么会发生这种情况的答案。我只能假设这可能是一个协议问题


如果有人能解释一下,我将不胜感激。

如果不分析实际的交流,人们只能猜测那里发生了什么。然而,有两个潜在原因:

  • 您的体验可能是由Android标记存在检查机制造成的。默认情况下,如果您发送命令的速度不够快,Android将通过其状态检查机制交错您的通信。在某些设备上,此状态检查使用在基本逻辑通道上发送的APDU。因此,他们被护照上的MRTD申请接收和处理,并可能导致状态变化。看

  • MRTD上的加密操作需要比其他操作更大的功率。如果您的passport需要的电量超过特定测试设备提供的电量(请记住,NFC手机设计用于读取低功耗NFC标签,而不是与耗能的非接触式智能卡交互),则可能会丢失与passport的通信,或者在最坏的情况下,可能会导致智能卡应用程序中出现意外的状态变化(尽管智能卡芯片通常设计为在这些情况下强制重置)


  • 您可能希望至少提及“坏”设备的名称,并列出一些好设备。除非您确认所有设备都使用相同的芯片组。