我正在尝试个性化(NTag 424 DNA) 一切都很顺利,除了我在 ReadData 命令 (CommMode.Full) 中遇到的一个问题。
我对 file_02 调用 ChangeFileSettings 进行两项更改:
我将数据 (03 00 00) 传递给 (ChangeFileSettings),它工作完美,响应良好。
(GetFileSettings) 现在返回 (00 03 00 00 00 01 00) (这表明 CommMode 现在确实是 (Full) )
(WriteData) 命令运行良好 (CommMode.Full)。 现在的问题是(ReadData)命令返回(7Eh命令大小不允许)
(无论我使用什么 CommMode)
如果我恢复更改(再次设置文件的 CommMode(普通)),(ReadData)将在普通模式下再次工作
这是我的 ReadData 示例的详细信息(使用 Key0 验证)
TI: 391267AA
KSesAuthENC: 2675CA630A2C87B4986AC116E66A0045
KSesAuthMAC: B89AD52AB517855F8695018883DEF90F
CmdCtr: 1
Params: (file:2, Offset: 0, Length: 255)
APDU Buffer: 90AD00000F02000000FF0000CC7137F33032F9F200
Response: 917E
My Reader: ACR1281U-C1
你能帮我解决这个问题吗? 问题是什么以及如何克服?
提前致谢。
您的命令没有犯任何错误,但您正在使用的参数有问题。
NTAG 424 DNA 上的标准文件 02 的预定义大小为 256 字节。只要您不将文件设置更改为“完整/加密”模式,该文件就会在通信设置明文中运行。
使用“更改文件设置”命令,您将文件更改为“通信设置完整”,包括更改身份验证密钥。
发出此命令后,文件需要在安全消息传递模式下运行。
在下一步中,您尝试读取 256 字节长文件中的 255 字节,并且收到“7Eh”错误:
Length Error : 7Eh Command size not allowed
这表明您使用的命令太长或参数超出任何其他限制。
标签的数据表在第 73 + 74 页上给出了一些提示(“读取数据命令”):
Command Header Parameters
Length 3 000000h Read the entire StandardData file, starting from the position specified in the offset value. Note that the short length Le limits response data to 256 byte including secure messaging (if applicable).
Response data parameters description - ReadData
Response data : up to 256 byte including secure messaging
重要的事实是“包括安全消息传递”部分。安全消息传递会带来额外的数据开销(例如,由于填充的加密数据和 MAC 数据),从而限制了数据的长度。
一次可检索的数据最大长度为 239 字节。
解决方案:如果在完全加密模式下超出此限制,您会收到错误“7Eh”,因此如果您需要读取完整文件,则必须使用偏移参数将其分成(至少)2 个部分。