使用 PN532 的 Mifare Ultralight C 认证流程

Authentication process for Mifare Ultralight C using PN532

我们知道Mifare Ultralight C的认证流程,但是我们无法使用PN532芯片进行认证。我们按照命令集中显示的步骤进行操作,但我们无法获得准确的结果。我们需要一些帮助来完成 Mifare Ultralight C 的身份验证过程。请提供一些建议,或者任何从事此卡工作的人都可以提供帮助。

发现标签并获取 UID

Command:  00 00 FF 05 FB D4 60 01 01 00 CA 00
Response: 00 00 ff 11 ef d5 61 01 10 0c 01 00 44 00 07 04 54 ad f2 ef 45 80 b6 00

开始认证(Auth0)

Command:  00 00 FF 04 FC D4 42 1A 00 D0 00
Response: 00 00 ff 0c f4 d5 43 00 af 22 f5 ec 57 19 7f 44 72 91 00

解密RndB并旋转到RndB':

Key =                49454D4B41455242214E4143554F5946
enc(RndB) =          22 f5 ec 57 19 7f 44 72
decrypt(enc(RndB)) = d1 f4 00 d1 13 bd ef 04
RndB' =              04 f4 00 d1 13 bd ef d1

生成 RndA 并构建 RndA || RndB':

RndA =          74 bd 85 75 7b d2 8b 77
RndA || RndB' = 74 bd 85 75 7b d2 8b 77   04 f4 00 d1 13 bd ef d1

加密RndA || RndB':

IV = 22F5EC57197F4472
encrypt(RndA || RndB') = 98 70 67 11 40 8F 73 B1 1C 11 15 6A 30 47 ED 58

第二个身份验证步骤 (Auth1)

现在我们必须使用 AFh Mifare Ultralight C 命令将此 encrypt(RndA || RndB') 传递给卡:

Command:  00 00 FF 13 ED D4 42 AF 98 70 67 11 40 8F 73 B1 1C 11 15 6A 30 47 ED 58 60 00
Response: 00 00 ff 03 fd d5 43 01 e7 00

这导致错误代码 01h。

问题是您将 RndB 旋转到错误的方向。如果你有像

这样的RndB
RndB = decrypt(enc(RndB)) = d1 f4 00 d1 13 bd ef 04

那么RndB'应该是

RndB' = rotate_left(RndB) = f4 00 d1 13 bd ef 04 d1