【问题标题】:Verify the PIN code of a belgian EID card on a reader with PINPAD使用 PINPAD 在读卡器上验证比利时 EID 卡的 PIN 码
【发布时间】:2017-01-13 17:33:19
【问题描述】:

我在 PINPAD 阅读器上验证 PIN 码的所有尝试都以失败告终,这是我的情况:

设置

  • 比利时 EID 卡;
  • Vasco DIGIPASS 875,通过蓝牙连接;
  • Android 应用程序使用来自 Vasco 的 SDK。

情况

我使用 APDU 命令来选择和读取文件,设置安全环境 (MSE : SET),经过大量研究和合并来自不同文档的不同解决方案,我可以让读者询问我的 PIN 码。但是使用我的伪 APDU 命令,我收到 69|C# 响应。相同的过程(读取文件、设置安全环境和验证 PIN)在没有 PINPAD 的 USB 读卡器上工作正常,所以我猜 APDU 命令是可以的,但不是前面的伪 APDU 命令。

使用的文档

The BEID documentation,PC/SC 规范第 10 部分 (2.5.2) 和补充 (2.2.1) 和 USB Smart Card devices 用于从 6.1.11.3 到 6.1.11.6 的章节。

我明白了什么?

第一部分应该是FF C2 01 06,用于在阅读器上直接进行PIN验证,后面是后续数据的大小。 接下来应该遵循 PC/SC 第 10 部分的结构,其中:

  1. 超时 1 和 2(默认为00);
  2. 格式(对我来说应该是 89,因为对于 1 字节偏移 PIN 应该是 10001001,左对齐和 BCD);
  3. PIN 块格式(应为 48,因为 PIN 块包含 4 位长度和 8 字节);
  4. PIN 长度格式(04:PIN 块中的 4 位偏移);
  5. 最小/最大 PIN 长度:040C(但不是这样,0404 肯定可以);
  6. 确认条件为02 确定按钮;
  7. 消息数:01 使用命令中的一个;
  8. 语言是0409 英语;
  9. 要显示的消息是 00 用于输入 PIN;
  10. 000000 因为这个字段没有被使用;
  11. 使用 PIN 格式化后要传输的最终 APDU 命令的长度(0000000D 是我的猜测);
  12. 然后是 APDU 命令:0020000108FFFFFFFFFFFFFFFF

结果

我已经多次更改了一些我不太确定的值(2、3、4、11 和 12 用于已经存在或不存在的填充字符),但没有成功,有时只是不同的结果代码。

我在这里做错了什么?

提前谢谢!

【问题讨论】:

    标签: android smartcard apdu smartcard-reader eid


    【解决方案1】:

    经过最后一轮的研究和检查,我发现了另一个显示我的错误的例子:PIN 块!它是 47,因为它不包括控制/有效 PIN 长度。所以对我来说正确的答案是:

    0xFF, 0xC2, 0x01, 0x06, // Base PPDU command
    0x20,                   // Length of the data
    0x00,                   // timeout
    0x00,                   // timeout
    0x89,                   // format
    0x47,                   // PIN block
    0x04,                   // PIN length format
    0x04,                   // Min pin size
    0x04,                   // Max pin size
    0x02,                   // Entry validation condition
    0x01,                   // Number of messages to display
    0x04, 0x09,             // English
    0x00,                   // Message "Enter pin"
    0x00, 0x00, 0x00,       // Non significant here
    0x00, 0x00, 0x00, 0x0D, // Length of the apdu once formatted
    0x00, 0x20, 0x00, 0x01, // APDU command VERIFY
    0x08,                   // APDU command Data length
    0x20,                   // APDU command Control data + Effective PIN length
    0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF // APDU command PIN + filler
    

    【讨论】:

      猜你喜欢
      • 2020-01-02
      • 2016-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2011-11-16
      • 1970-01-01
      • 2014-06-05
      相关资源
      最近更新 更多