硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2835|回复: 4
收起左侧

[有问必答] NXP Mifare S70 EV1 7bytes UID卡 目前寻卡-2次防冲撞都可以了 密钥验证不行

[复制链接]

4

主题

8

回帖

20

积分

新手上路

积分
20
发表于 2019-4-4 15:31:34 | 显示全部楼层 |阅读模式
操作一张7位UID的S70白卡初始密钥(FF FF FF FF FF FF)从寻卡->2次防冲撞->密钥加载->密钥验证


目前就是密钥验证一直不行,试过CL1前4字节和CL2前4字节UID验证都不行,那位大神能不能给指点一下?


以下是密钥验证代码:

status=Authentication(UID,0,TYPEA_MODE);////验证0扇区keyA

/****************************************************************/
/*名称: Authentication                                          */
/*功能: 该函数实现密码认证的过程                                */
/*输入: UID: 卡片序列号地址                                     */  
/*      SecNR: 扇区号                                           */
/*      mode: 模式                                              */
/*输出: FM1715_NOTAGERR: 无卡                                  */
/*      FM1715_PARITYERR: 奇偶校验错                            */
/*      FM1715_CRCERR: CRC校验错                                */
/*      FM1715_OK: 应答正确                                     */
/*      FM1715_AUTHERR: 权威认证有错                            */
/****************************************************************/
uchar Authentication(uchar idata *UID,uchar SecNR,uchar mode)
{
uchar idata i;
uchar idata temp,temp1;
  
CRCPresetLSB = 0x63;
CRCPresetLSB = 0x63;
CWConductance = 0x3f;
ModConductance = 0x3f;
temp1 = Control;
temp1 = temp1 & 0xf7;
Control = temp1;
  
if (mode == 1)        //AUTHENT1
          buffer[0] = RF_CMD_AUTH_LB; //61
else
          buffer[0] = RF_CMD_AUTH_LA; //60
buffer[1] = SecNR * 4 + 3;
for (i = 0; i < 4; i++)
{
          buffer[2 + i] = UID;
}
ChannelRedundancy = 0x0f;     //开启CRC,奇偶校验校验
temp = Command_Send(6, buffer, Authent1);                  
if (temp == FALSE)
{
          return FM1715_NOTAGERR;      
}
temp = ErrorFlag;
if ((temp & 0x02) == 0x02)
          return FM1715_PARITYERR;
if((temp & 0x04) == 0x04)
          return FM1715_FRAMINGERR;
if ((temp & 0x08) == 0x08)
          return FM1715_CRCERR;
               
temp = Command_Send(0, buffer, Authent2); //AUTHENT2
if(temp == FALSE)
{
          return FM1715_NOTAGERR;
}
temp = ErrorFlag;
if ((temp & 0x02) == 0x02)
          return FM1715_PARITYERR;
if((temp & 0x04) == 0x04)
          return FM1715_FRAMINGERR;
if ((temp & 0x08) == 0x08)
          return FM1715_CRCERR;
temp1 = Control;
temp1 = temp1 & 0x08;      //Crypto1on=1验证通过
if (temp1 == 0x08)
{
  return FM1715_OK;
}
return FM1715_AUTHERR;  
}



回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107397
QQ
发表于 2019-4-6 00:56:19 | 显示全部楼层
帮顶下,没有研究过这个。
回复

使用道具 举报

4

主题

8

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2019-6-24 13:51:15 | 显示全部楼层
上次的问题是自己太不细心,初始化时通信标准选错了,项目终于做完了,过来结个贴!!!!
回复

使用道具 举报

4

主题

8

回帖

20

积分

新手上路

积分
20
 楼主| 发表于 2019-6-24 13:54:01 | 显示全部楼层
玩卡的,还是要去和NXP签个NDA,不然有些东西真的玩不动。。。。。。。。
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2019-6-25 10:11:28 | 显示全部楼层
lddjss 发表于 2019-6-24 13:54
玩卡的,还是要去和NXP签个NDA,不然有些东西真的玩不动。。。。。。。。

不容易啊,楼主还来回复了最终原因,赞一下
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-30 02:04 , Processed in 0.198136 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表