smartcard - 智能卡 Mifare 1k 钥匙
问题描述
按照一些示例,我可以使用以下命令读取 Mifare 1K 卡的扇区 0 的所有块:
- 加载身份验证密钥
- 验证
- 读取二进制块
对于第一个命令,我使用了 FF FF FF FF FF FF 键。当我尝试读取块 4(扇区 1)时,我收到拒绝访问错误。我想这是因为扇区有一个非默认键。这是对的吗 ?
我不熟悉智能卡,我正在测试的是用于记录对工作场所的访问,我(错误地?)认为它就像单次读取一样简单。我只需要印在卡上的 6 位数代码。我现在怀疑在访问卡上的信息之前我必须知道密钥。
此外,我认为 Mifare 1K adpu有一个标准。
根据 Internet 上的文档,错误情况是Sw1 = 0x63
,但根据我的特定阅读器手册 ( AccessIs ATR210 ) 是Sw1 = 0x69
。adpu 命令也有很大的不同,这让我很困惑。
解决方案
Mifare 和智能卡不同,只有后者理解 APDU。对于前者,阅读器将伪 APDU 转换为相应的命令,因此阅读器或其驱动程序可能需要不同的字节。
如果您描述的卡用于现实世界的应用程序,那么与默认值不同的密钥是维持低 MIFARE 经典安全性所需的最低限度。除了不同的值外,可能根本无法使用密钥 A 进行读取访问,请参见数据表第 8.7.2 节。
我不知道,你的卡上印了什么,但是比键值少 6 位,需要 6 个字节。只有键值,即键 A 和 B 将允许您访问可能受配置访问位限制的所有内容。
推荐阅读
- apple-push-notifications - 在 iOS 13 设备中无法在后台/挂起状态下接收 VoIP 消息
- azure - Azure 数字孪生物联网中心问题
- list - 如何在 ReasonML 的列表中找到元素的出现次数?
- flutter - 无法更改 void 函数内的数据
- perl - 使用 Carton 的 Mojolicious 应用程序的 init.d 脚本
- python - 如何在 kubeflow 管道中传递环境变量?
- django - 我可以一次调用 django waffle 中的所有标志、开关和样本吗?
- mongodb - 架构内容已过时,不再与文档视图同步
- java - 如何调试此代码以了解它在做什么?
- android - Android协程作业改为CompletableJob?