当前位置: 首页 > news >正文

[Datasheet S50卡]NXP S50卡读写细节说明

S50卡也成为M1卡,可以理解为一个带射频功能的EEPROM,可以存储1KByte的卡片,分为16个区;

1、通讯过程

通过射频芯片提供能量给卡片,卡片供电后可以支持读写命令,加减值命令等;框图如下:

图片

2、安全管理

2.1 制造商为每个设备编程了7字节UID或4字节NUID标识符

2.2 随机ID支持

2.3 相互三通身份验证(ISO/IECDIS9798-2)每个扇区单独设置两个密钥,以支持具有密钥层次结构的多应用程序

3、EEPROM

3.1 1kB,由4个块中的16个扇区组成(一个块由16个字节组成)

3.2 每个内存块的用户可定义的访问条件

3.3 数据保留时间为10年

3.4 支持200000次擦写

4、系统框图

图片

5、通讯流程

5.1 防碰撞检测

同时有多张卡靠近读卡器,会检测到多个卡号;

5.2 选卡

选择其中的一个卡号,进行定向通讯;

5.3 三次身份认证

秘钥认证后才能进行卡片的操作,每个存储器有A、B两组秘钥,其中B秘钥的权限能够完全覆盖A秘钥;可以修改A秘钥的内容;

5.4 进行卡的操作,读、写、存储、加值、减值

读写数据与加值和减值的区别,在于卡片协议的定义,读写数据只是对卡片的某个字节进行读写;加减值操作,对存储的格式,卡片会做特殊处理;后续会讲;

图片

6、三次认证秘钥流程

6.1 读取器指定要访问的扇区,并选择键A或B

6.2 从扇区中读取密钥和访问条件。然后卡片发送一个数字给读卡器认证(通过一个)。

6.3 使用密钥和其他输入来计算响应。响应,连同来自阅读器的随机认证,然后被传输到卡(通过两个)。

6.4 卡片通过与自己的认证进行比较来验证读卡器的反应,然后计算对认证的反应并将其传输(通过三次)。

6.5 读卡器器通过将卡片与自己的认证进行比较来验证卡片的响应。

认证完成后,读卡器与卡片之间的通讯会被加密。

7、存储

1024×8位EEPROM内存分为4个块的16个扇区。一个块包含16个字节。

图片

7.1厂商信息块

图片

7.2 数据块

每个扇区有3个数据块,分为读写块和值块;值块用于电子钱包,公交卡等,里面的金额进行加减值操作;

值块只能通过值块格式的写入操作生成值块:

值:表示已签名的4字节值。值的最低有效字节存储在最低地址字节中。负值以标准的2´补体格式存储。由于数据完整性和安全性,一个值存储三次,两次非倒置,一次倒置。

Adr:表示在实现强大的1字节备份管理时,可用于存储块的存储地址。地址字节存储四次,两次倒,非倒。在增量、递减、恢复和传输操作的过程中,地址保持不变。它只能通过写命令来更改。

图片

根据这个图可以看出,值块能够存储的数据最大4个字节;内部存储格式有校验,04存储正常值,47存储取反数据,8~11存储正常值;地址也有存储,上面画横线的就是取反值;

图片

7.3 扇区控制器

每个扇区的块3为整个扇区的秘钥区,存储A、B的秘钥内容;

图片

操作类型主要分为:

图片

图片

访问权限

图片

通过状态位做识别

图片

看着是不是有点晕呢,还有这些状态位如果生成了,如何搞成16进制呢,计算总感觉有点麻烦。这个时候就会想到工具。还真有人做出了这个工具。

图片

8、操作命令

图片

图片

每个命令手册都给出了示例:

比如:读取厂商ID

图片

让读卡器安装这个报文发送,卡片就会返回对应的报文;

还可以通过手机,安装NXP公司的软件taginfo,前提是有NFC功能。
可以读取卡片中的内容做验证,方便开发。

在这里插入图片描述

支持文件导出,xml格式

在这里插入图片描述

更多linux知识点推荐:

【Linux文件系统】NFS文件系统如何生效

[Linux文件系统]文件系统的反解压操作镜像生产原始目录

[Linux字符驱动] DIDO 74HC595实现遥控遥信功能

[linux字符驱动]Watchdog如何躲过linux的启动时间

[Linux字符驱动] LED点灯试验

[Linux 驱动]模块加载RTX8025驱动

[linux kernel] 内核下RX8025对接系统时钟

[linux kernel]内核启动阶段控制IO口时序输出

[职场吐槽]如何缓解焦虑

[linux kernel] 内核下ksz8081驱动调试

[linux kernel] 内核下ksz9031驱动调试

[linux kernel]内核图形化裁剪配置

[linux kernel]内核移植过程记录

[linux kernel] 内核启动流程梳理

[linux 底层]u-boot EMMC驱动

[linux 底层]u-boot图形化裁剪配置

[Linux 底层]U-boot ksz9031网络驱动调试

[Linux 底层]U-boot调试命令使用技巧

[Linux 底层]U-boot编译移植

[Linux 底层]U-boot烧录脚本介绍SecureCRT

[Linux 底层]bootstrap移植裁剪及编译

[Linux 底层] 平台软件分层介绍

[Linux 驱动] RS485测试程序编写

[Linux 驱动] CAN测试程序编写

推荐阅读:

芯片手册解读 | Linux底层 | 职场吐槽 | C语言视频

关注微信公众号,回复“S50资料”,下载数据手册及工具软件。

在这里插入图片描述

http://www.xdnf.cn/news/817345.html

相关文章:

  • 解决程序缺少richtx32.ocx无法运行问题
  • qreader无法进入的解决方法
  • 技术文档:C语言多线程编程与同步机制
  • .net的winform中DialogResult属性的使用
  • 我收集的学习网站
  • X86(32位)与X64(64位)有什么区别,如何选择对应的操作系统和应用程序?
  • 命令提示符已被系统管理员停用。请按任意键继续……
  • IP电话的VoIP语音网关设计
  • 鸿蒙系统开发app入门系列-- 第一个demo
  • C语言·贪吃蛇游戏(上)
  • 巧妙从进程中判断出病毒和木马
  • nc命令用法举例【转】
  • “熊猫烧香”变种“金猪报喜”制作者落网
  • kustomize/kubectl自动镜像部署互联网企业规范化上线流程(下) —— k8s从入门到高并发系列教程 (七)
  • 时域抽样定理,信号重建,附带频域抽样定理
  • OA系统流程效率改进方案
  • Java:81-RabbitMQ详解
  • “绿坝—花季护航”使用全攻略
  • 鬼影病毒学习总结
  • js复制URL链接
  • response.setContentType()和response.setCharacterEncoding()使用区别及统一处理request和response编码
  • python 网盘搭建_超简单!基于Python搭建个人“云盘”
  • 【MFC】Ribbon界面开发(一)
  • 刷机介绍----超详细
  • 公司内部邮件格式范文
  • SpringBoot -- 软件许可(License)证书生成+验证+应用完整流程
  • 手把手教你安装 Fedora
  • 计算机系列之排序算法
  • 2021年高考成绩查询宜春昌黎,2021年全国各省高考成绩排名查询系统入口
  • DIV简单个人静态HTML网页设计作品 WEB静态个人介绍网页模板代码 DW个人网站制作成品 期末网页制作与实现