如何使用Gemalto ProxSU reader访问MIFARE 1k内存块?

2024-04-28 23:19:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近刚开始学习智能卡编程。在

我正在使用Gemalto Prox SU reader,在Ubuntu16.04机器上有几张空白的MIFARE Classic 1k卡。 我已经安装了gemaltoproxsu读卡器,并让读卡器通过python中的脚本使用Ludovic Russeau's pyscard来检测卡。在

我已经成功地编写了一个脚本,将apdu发送到读卡器/卡连接。我可以读取ATR,发送GetData命令来读取卡的序列号,并一直试图向卡发送几个apdu来尝试读取卡的存储块。但是,除了LoadKey命令外,其他所有命令都返回“0x6982:security status not completed”

我知道我应该在每次读写之前发送一个通用的身份验证命令,正如手册中所述,但是即使是通用的Authenticate命令也返回“security status not completed”。从我所读的来看,这应该很简单。我错过了什么?如何设置我的脚本,使身份验证成功,我可以从内存块中读取数据?在


Tags: 命令脚本机器身份验证status编程notprox
1条回答
网友
1楼 · 发布于 2024-04-28 23:19:22

使用Prox SU读卡器读取MIFARE Classic 1K卡的典型流程是:

  1. 加载身份验证密钥。例如,如果使用带有默认值(“transport key”)FF FF FF FF FF FF的key A读取卡,则可以使用以下LOAD key命令:

    ^{1}$

    这将密钥FF FF FF FF FF FF存储到读卡器的易失性内存(RAM)中的第一个键槽(0x50)。

  2. 使用通用Authenticate命令对扇区进行身份验证。即使您对整个扇区进行了身份验证,您仍需要按块号(通常是扇区的第一个块)对扇区进行寻址:

    FF 86 00 00 05 01 0004 60 50
                      ^^^^ ^^ ^^
                         |  |  \  Key slot 80 (0x50)
                         |  |
                         |  \  - Key type (0x60 = Key A, 0x61 = Key B)
                         |
                         \     Block number (block 4)
    
  3. 最后,可以使用read BINARY命令读取块:

    FF B0 0004 10
          ^^^^
             \     Block number (block 4)
    

如果在常规身份验证过程中收到状态码69 82,这很可能表示您试图使用错误的密钥进行身份验证。在

相关问题 更多 >