使用 APDU 命令访问智能卡 (ISO 7816-4) 上受 PIN 保护的数据

问题描述 投票:0回答:0

我是智能卡相关问题的新手,我遇到了一些问题,需要一些帮助来克服它们。

我需要从 PT CitizenCard 中读取一些数据,部分数据(如姓名、照片等)是公开访问的,另一方面,地址等数据受 PIN 保护。我对该内容的了解:

  • 3F 00 - 公共 DF / MF
  • 5F 00 - 公共 DF / DF
  • EF 02(公开数据)| EF0F | EF08(证书)
  • EF 05 地址(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 (不满足安全条件)

任何人都可以帮助解决这个问题吗? 谢谢

我正在尝试在描述中使用该代码片段,但没有结果...... :( 我希望任何人都可以指导我如何解决这个问题。

c# smartcard apdu
© www.soinside.com 2019 - 2024. All rights reserved.