使用PN532对Mifare Ultralight C进行身份验证

时间:2016-02-02 11:34:22

标签: authentication nfc rfid mifare

我们知道对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。

1 个答案:

答案 0 :(得分:0)

问题是您将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