gpt4 book ai didi

python - 如何使用金雅拓 Prox-SU 读卡器访问 MIFARE 1k 内存块?

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:07 25 4
gpt4 key购买 nike

我最近刚刚开始从事智能卡编程。

我正在 Ubuntu 16.04 计算机上使用 Gemalto Prox-SU 读卡器,并且有几张可用的空白 MIFARE Classic 1k 卡。我已经安装了 Gemalto Prox-SU 读卡器,并让读卡器使用 Ludovic Russeau's pyscard 通过 python 中的脚本检测卡。 .

我已经成功编写了一个脚本,将 APDU 发送到读卡器/卡连接。我可以读取 ATR,发送 GetData 命令来读取卡的序列号,并且一直在尝试向卡发送多个 APDU 以尝试读取卡内存块。然而,除了 LoadKey 命令之外,其他所有命令都返回“0x6982:安全状态不满足”

我知道我应该在每次读写之前发送通用身份验证命令,如手册中所述,但即使通用身份验证命令也会返回“安全状态不满足”。从我读过的内容来看,这应该非常简单。我缺少什么?如何设置我的脚本以便身份验证成功并且我可以从内存块读取数据?

最佳答案

使用 Prox-SU 读卡器读取 MIFARE Classic 1K 卡的典型流程(请参阅 manual)是:

  1. 加载身份验证 key 。例如,如果您的卡可以使用默认值(“传输 key ”)FF FF FF FF FF FF的 key A 读取,您将使用以下 LOAD KEY 命令:

    FF 82 00 50 06 FFFFFFFFFFFF      ^^ ^^    ^^^^^^^^^^^^       |  |               \-- Key       |  |       |  \------------------ Key slot 80 (0x50)       |       \--------------------- Key in RAM (0x00)

    这会将 key FF FF FF FF FF FF 存储到阅读器的 volatile 存储器 (RAM) 的第一个 key 槽 (0x50) 中。

  2. 使用 GENERAL AUTHENTICATE 命令对扇区进行身份验证。即使您对整个扇区进行身份验证,您也需要通过 block 号(通常是扇区的第一个 block )来寻址该扇区:

    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 命令读取 block :

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

如果您在 GENERAL AUTHENTICATE 期间收到状态代码 69 82,这很可能表明您尝试使用不正确的 key 进行身份验证。

关于python - 如何使用金雅拓 Prox-SU 读卡器访问 MIFARE 1k 内存块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39399577/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com