T5557的基本信息就不在这里详细介绍,不了解的可以去看T5557的收据手册。

一上来直接开始讲操作

存在七种操作,我们重点介绍四种,Standard Write,Protected Write,Direct access(PWD = 0)和Direct access(PWD = 1)。

Standard Write和Direct access(PWD = 0)在T5557卡没有设置密码模式(Page0的Block0的第28位PWD设置为0)的时候使用,此为无密码模式,修改卡内的数据无需任何权限。

Protected Write和Direct access(PWD = 1)在T5557卡密码模式Page0的Block0的第28位PWD设置为1)下使用,此为有密码模式,修改卡内数据需要验证密码的正确性。

下面将详细介绍用白卡完成以上的四种操作。

拿到白卡的第一步是配置Page0的Block0配置寄存器(Mode Register)详见Figure 3,默认值为‘00 08 80 E8’h,表示RF/32、曼彻斯特编码,无密码模式。

需要将模式寄存器的修改为‘00 14 80 00’h,表示RF/64、曼彻斯特编码。如需设置密码求将第28位设置为1。

初始化函数如下:

void Card_initialization()//初始化卡片
{
Start_Gap();
SendOpcode(StandardWrite10); //10 2
SendLock(LOCK00); //0 1
SendByte(InitT55xxDataArr[0]); // 4
SendByte(InitT55xxDataArr[1]); // 4
SendByte(InitT55xxDataArr[2]); // 4
SendByte(InitT55xxDataArr[3]); // 4
SendAddress(BLOCK0);
}

Standard Write:

///////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////
// 函数名: Standard_Write_T5577(uchar lock,uchar opcode,uchar data_arr[4],uchar block)
// 参 数: lock为要发送的锁定位,block为待写入数据的块编号数 ,opcode为待发送的操作码,data_arr[4]为要发送的4字节数据
void Standard_Write_T5577(unsigned char opcode,unsigned char lock,unsigned char data_arr[4],unsigned char block)
{
Start_Gap();
SendOpcode(opcode); //10 2
SendLock(lock); //0 1
SendByte(data_arr[0]); // 4
SendByte(data_arr[1]); // 4
SendByte(data_arr[2]); // 4
SendByte(data_arr[3]); // 4
SendAddress(block); // 3
}

Protected Write:

void Protect_Write_T5577(unsigned char opcode,unsigned char lock,unsigned char data_arr[4],unsigned char block)
{
Start_Gap();
SendOpcode(opcode); //10 2
SendPassword();
SendLock(lock); //0 1
SendByte(data_arr[0]); // 4
SendByte(data_arr[1]); // 4
SendByte(data_arr[2]); // 4
SendByte(data_arr[3]); // 4
SendAddress(block); // 3
}

Direct access(PWD = 0):

void Read_0_Page_block(unsigned char block) //块读0页
{
Start_Gap();
SendOpcode(StandardWrite10); //10 2
SendLock(0X00); //0 1
SendAddress(block);

}

Direct access(PWD = 1):

void Protect_Read_0_Page_block(unsigned char block) //保护读读0页 此时PWD需要设置为1
{
Start_Gap();
SendOpcode(StandardWrite10); //10 2
SendPassword(); //此密码根据卡号匹配数据库获得
SendLock(0X00); //0 1
SendAddress(block);

}

T5557 读写卡详解的更多相关文章

  1. Linq之旅:Linq入门详解(Linq to Objects)

    示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...

  2. 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)

    一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...

  3. EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解

    前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...

  4. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  5. Android Notification 详解(一)——基本操作

    Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...

  6. Android Notification 详解——基本操作

    Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...

  7. Git初探--笔记整理和Git命令详解

    几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...

  8. Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)

    Android XML shape 标签使用详解   一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...

  9. Node.js npm 详解

    一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...

随机推荐

  1. mysql5.6 主从同步配置

    一:配置前说明 在centos 6环境下配置 mysql 5.6主从同步 准备两台测试的虚拟机,2台虚拟机上都安装mysql软件,并开启mysql服务主master : 192.168.1.110从s ...

  2. 新建体(3):dbms_job下新建一个job定期自动执行存储过程

    http://blog.csdn.net/thinkscape/article/details/7411012http://java-admin.iteye.com/blog/231159sql窗口执 ...

  3. sklearn-数据预处理scale

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  4. python 函数基础及装饰器

    没有参数的函数及return操作 def test1(): print ("welcome") def test2(): print ("welcomt test2&qu ...

  5. Linux系统IO分析工具之iotstat常用参数介绍

    Linux系统IO分析工具之iotstat常用参数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1>.安装iostat [root@flume115 ~]# yum - ...

  6. Web项目发布的更新

    在项目发版后经常需要修改bug,解决出现的各种问题,对项目升级,这时候就需要将之前部署,上线的项目更新版本. 本文就简单说一下一些出现的关键点(不到之处欢迎指教) 1.使用idea,eclipse等工 ...

  7. 【leetcode-101】 对称二叉树

    101. 对称二叉树 (1过) 给定一个二叉树,检查它是否是镜像对称的. 例如,二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [ ...

  8. springBoot整合mybatis、jsp 或 HTML

    springBoot整合mybatis.jsp Spring Boot的主要优点: 1:  为所有Spring开发者更快的入门: 2:  开箱即用,提供各种默认配置来简化项目配置: 3:  内嵌式容器 ...

  9. 029、限制容器的block IO(2019-01-24 周四)

    参考https://www.cnblogs.com/CloudMan6/p/7016050.html   Block IO ,是另一种可以限制容器使用的资源,block IO 指的是磁盘的读写,doc ...

  10. 通配符 Globbing赏析

    什么是 Globing? https://www.techopedia.com/definition/14392/globbing   Definition - What does Globbing ...