我正在尝试读取MF下的文件。 EF.DIR文件。我得到了文件的 SFID ,所以我不首先使用SELEC_FILE方法(因为它没有必要)。 我可能在理解 P2 参数(OFFSET)时遇到一些问题。我读了几个解释,但仍然没有得到 OFFSET 的含义。但我尝试了0-8的所有数字以防万一,没有用。
CLA = 0x00
INS_READ = 0xB0
P1_READ = 0x9E (by the datasheed: bit(8) = 1, bit(7:6) = 00, bit(5:1): SFID)
P2 = 0x04 (I figured that the offset should be from bit0 to bit4 (the SFID)
Le = 0 (by the datasheet I have, this should mean that any size will be returned)
这是我的代码:
byte[] readBinary = { CLA, INS_READ, P1_READ, (byte) 0x04, (short) 0};
ResponseAPDU read = channel.transmit(new CommandAPDU(readBinary));
String responseReadToString =read.toString();
System.out.println("Response Read: " + responseReadToString + "\n" + "Response Read (HEX): " + responseReadHex );
我在Console中获得的输出是:
Response Read: ResponseAPDU: 2 bytes, SW=6b00
Response Read (HEX): 6B00
对于6B00的SW1-SW2的解释:
Incorrect parameters P1-P2
我真的不知道什么是错的,而且很难在网上找到SmartCards的支持,所以希望能够更好地了解这一点的人可以帮助我。我也尝试先使用SELECT_FILE,然后使用READ_BINARY(在P1 parametr ofcourse中没有SFID),但它以&#34响应;没有将EF设置为当前"。
任何帮助人员?
答案 0 :(得分:1)
偏移量是您开始阅读的位置/起点。
示例:Data = [0x00 0x01 0x02 0x03 0x04 0x05]
当您使用offset = 2查询ReadBinary时,返回的数据将是[0x02 0x03 0x4 0x05]
由于您可能想要读取整个EF.DIR文件偏移量应为零。
要阅读EF.DIR,您可以发送
00 B0 9E 00 00
或
00 B1 2F 00 04 54 02 00 00 00
或
00 A4 02 0C 02 2F 00
00 B0 00 00 00