首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ACR1252和pyscard的Mifare 4K后继块中键的更改返回错误"99“

使用ACR1252和pyscard的Mifare 4K后继块中键的更改返回错误"99“
EN

Stack Overflow用户
提问于 2021-10-06 15:07:38
回答 1查看 171关注 0票数 1

我们收到供应商提供的Mifare 4k卡,该供应商对每个部门拖车进行预编码,如下所示:

代码语言:javascript
复制
FFFFFFFFFFFFFF078069FFFFFFFFFFFF

在此过程中,供应商将访问位设置为FF0780,而读键(键A)和写键(键B)仍然是工厂默认的FFFFFFFFFFFF

当尝试使用pyscard和编码器ACR1252编写新的读键(键A)和写键(键B)和访问位时,我得到响应代码"99“,这是一个无文档的错误代码。我认为这是因为访问位已经更改,因为直接来自工厂的空白卡不会生成此错误。

在这个例子中,我们更新了拖车块,使得键A和键B是FFFFFFFFFFFF,访问位是787788

代码语言:javascript
复制
write_data = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x77, 0x88, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
write_key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
# load write key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x82, 0x00, 0x01, 0x06, *write_key])
# authenticate write key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x86, 0x00, 0x00, 0x05, 0x01, 0x00, block, 0x61, 0x01])
# write data
_, response_code, _ = cardservice.connection.transmit([0xFF, 0xD6, 0x00, block, 0x10, *write_data])

知道为什么在供应商设置访问位的卡片上返回响应代码99吗?

注意:身份验证工作正常,只是写入步骤失败了。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-07 18:31:35

结果,供应商ff0780随后设置的访问位意味着您需要对read_key (键A)进行身份验证,以便写入拖车块。非常违反直觉,但适用于Mifare 4K卡,之前访问位设置为ff0780

代码语言:javascript
复制
write_data = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x78, 0x77, 0x88, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
read_key = [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF]
# load read key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x82, 0x00, 0x00, 0x06, *read_key])
# authenticate read key
_, response_code, _ = cardservice.connection.transmit([0xFF, 0x86, 0x00, 0x00, 0x05, 0x01, 0x00, block, 0x60, 0x00])
# write data
_, response_code, _ = cardservice.connection.transmit([0xFF, 0xD6, 0x00, block, 0x10, *write_data])

我还发现您需要在编写之前立即对密钥进行身份验证。对这两个密钥进行身份验证,读取然后写入返回相同的99响应代码。而且,错误代码99似乎是从Mifare IC (而不是读卡器)级联而来的,这就是错误代码99没有出现在ACR1252文档中的原因。

我发现下列文件很有用:

https://www.acs.com.hk/en/products/342/acr1252u-usb-nfc-reader-iii-nfc-forum-certified-reader/

  • ACR1252应用程序编程接口
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69468239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档