我是智能卡相关问题的新手,我遇到了一些问题,需要一些帮助来克服它们。
我需要从 PT CitizenCard 中读取一些数据,部分数据(如姓名、照片等)是公开访问的,另一方面,地址等数据受 PIN 保护。我对该内容的了解:
为了访问这些数据,我使用以下 APDU 命令/指令: sendAPDUCommand(scContext, cardContext, "00A4040007604632FF000002"); // 选择卡片 sendAPDUCommand(scContext, cardContext, "00A4000C023F00"); // 公共 DF / MF sendAPDUCommand(scContext, cardContext, "00A4000C025F00"); //公共DF / DF sendAPDUCommand(scContext, cardContext, "00A4000C02" + EF_VALUE); // 选择 EF
EF_VALUE 取 EF02 | 的值EF0F | EF08 根据需要
为了读取 EF 数据段,我正在使用指令:
// some other code here …
let segmentData;
for (let j = 0; j < max_value + 1; j++) {
let segment = j.toString(16).padStart(2, "0").toUpperCase()
segmentData = await sendAPDUCommand(scContext, cardContext, "00B0" + segment + "0000");
// some other code here
if (segmentData["returnCode"] == "9000") {
data += segmentData["value"];
}
// some other code here (error handle, etc)
}
// some other code here …
对于读取智能卡上的公民地址数据,我基本上使用相同的指令/命令,对于公共数据,EF -> EF05。 地址数据受 PIN 保护,因此我试图在尝试从卡中获取/读取该数据之前执行包含验证地址 PIN 的“验证”协议,就像我在通过 AuthenticationCertificatePIN 签署数据过程时所做的那样。
地址 PIN 验证成功,但读取数据程序返回: SW1:69 SW2:82 (不满足安全条件)
任何人都可以帮助解决这个问题吗? 谢谢
我正在尝试在描述中使用该代码片段,但没有结果...... :( 我希望任何人都可以指导我如何解决这个问题。