USB免驱RFID读写器编程解析之一:智能卡篇
随着RFID应用的普及,越来越多的软件工程师需要使用RFID读写器编程来实现自己的需求。为了使软件工程师更快的了解RFID读写器的使 用,本文选择一款市面上常用的USB免驱RFID读写器SDT-HA来做解析。USB免驱一般是使用USB HID接口,因为windows系统本身带有HID接口的驱 动,所以不需要单独发布驱动程序。
要编写RFID读写器的程序,先必须了解RFID读写器读写的卡的内存结构。现在广泛使用的是以M1(S50)卡及其兼容卡为代表的智能卡,以 下将详细介绍S50卡的内存结构。
标准S50智能卡有8Kbits内存,相当于1K字节,实际可以用来的存储数据的有752字节,为什么会缩水,在稍后的内存介绍中将会解释。
标准S50智能卡有16个扇区,每个扇区有4块,每块有16个字节。这全部算下来就是16*4*16=1024字节(1K)。由于块是卡结构的最小管理 单位,所以我们在读写这张卡的时候就是按照块来操作的,就是说必须是16个字节。每4个块组成了一个扇区单元,组成扇区单元的目的就是为 了管理卡的密钥,也就是卡的密钥和扇区是对应的。有16个扇区,也就有16组密钥各自独立的工作着。某组密钥只是对这个扇区(4个块)管用 ,与其他的扇区无关。这种设计可以使此智能卡可以同时作多达16种不同的应用。
每个扇区的密钥都存放在该扇区的最后一块,占用了一个单独的块。密钥分为A密钥和B密钥,关于密钥可以参见文章《关于S50卡密钥A和密钥B》。
第0扇区的第0块用于保存序列号等相关数据,是只读的,不能写入任何数据。如果我们按照顺序定义块,那么块号就是从0到63。0到3块 为第0扇区,4到7块为第1扇区,依此类推,第60到63块为第15扇区。其中第0块是只读的,第3块,7块....第63块全部是密钥块,不能用来保存 数据, 所以总的可以保存数据的块为16*3-1=47块,共47*16=752字节。
(转载请注明出处: 友我科技网站 http://www.youwokeji.com.cn)
(转载请注明出处: 友我科技网站 http://www.youwokeji.com.cn)
USB免驱RFID读写器编程解析之一:智能卡篇的更多相关文章
- RFID 读写器 Reader Writer Cloner
RFID读写器的工作原理 RFID的数据采集以读写器为主导,RFID读写器是一种通过无线通信,实现对标签识别和内存数据的读出和写入操作的装置. 读写器又称为阅读器或读头(Reader).查询器(Int ...
- C++ MFC实现基于RFID读写器的上位机软件
C++ MFC实现基于RFID读写器的上位机软件 该博客涉及的完整工程托管在https://github.com/Wsine/UpperMonitor,觉得好请给个Star (/▽\=) 运行和测试环 ...
- 技巧.【转】在虚拟机Vmware中使用HID设备(如USB免驱键盘)
ZC:我的环境:Win7x64.VMware10 ZC:我的处理: ZC: (1).usb.generic.allowHID = "TRUE" (本来就有,将它的位置提前) ZC: ...
- Google Chome浏览器下如何开发UHF读写器
google Chrome浏览器不支持ocx,也就不能通过ocx来连接UHF读写器,只能使用RFID读写器云服务插件,通过javascript语言来连接和操控UHF读写器YW-602H.RFID读写器 ...
- IC卡接口芯片TDA8007的读写器设计
摘要:阐述T=0传输协议,给出IC卡读写器中使用的IC卡APDU指令流程和原理框图:重点介绍其中的IC卡接口芯片Philips的TDA8007,给出通过TDA8007对CPU IC卡上下电过程.具体程 ...
- NFC应用(二)读写器模式
NFC第二种应用场境就是所谓的读写器模式.既然有卡,当然就会有读写器,这两种模式是配合在一起使用的.两个卡放一起不能通信,两个读写器模式的设备也不能通信. NFC读写器一般支持以下一种或多种协议:Mi ...
- usb免驱动摄像头实验
1.编译openwrt系统内核使它支持usb,进入在/openwrt/trunk上执行make menuconfig 2.1). 添加USB 相关支持Kernel modules —> USB ...
- PC/SC双界面读写器开发指南
友我科技PCSC双界面读写器YW-606开发指南 1.建立资源管理器的上下文 函数ScardEstablishContext()用于建立将在其中进行设备数据库操作的资源管理器上下文(范围). 函数原型 ...
- Android NFC M1卡读写&芯片卡读写(CPU卡读写)(RFID读写)
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/sgn5200/article/detai ...
随机推荐
- 三种页面置换算法的C++模拟
#include<iostream> using namespace std; ,,,,,,,,,,,,,,,,,,,,- }; void FIFO(); void OPT(); void ...
- How to: Specify a Display Member (for a Lookup Editor, Detail Form Caption, etc.)如何:指定显示成员(用于查找编辑器、详细信息表单标题等)
Each business object used in an XAF application should have a default property. The default property ...
- Git实战指南----跟着haibiscuit学Git(第四篇)
笔名: haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...
- ubuntu 安装在硬盘与配置
安装 下载Ubuntu ISO文件,使用rufus制作启动U盘,重启选择这个U盘启动. 用rufus做启动盘时,提示缺少文件,点下载,找到log,进入找到下载地址,手动下载,并放到软件所在路径下的文件 ...
- Android8.1 SystemUI源码分析之 Notification流程
代码流程 1.先看UI显示,StatuBar加载 CollapsedStatusBarFragment 替换 status_bar_container(状态栏通知显示区域) SystemUI\src\ ...
- Vue之富文本tinymce爬坑录
前言 最近因业务需求在项目中嵌入了tinymce这个富文本编辑器,用于满足平台给用户编辑各类新闻内容什么的业务需求,前后也花了不少时间体验和对比了市面上各类开源编辑器. *案例demo版本:vue-t ...
- [Go] 利用函数类型实现封装中的回调
当进行业务逻辑开发的时候,经常要进行封装,封装成独立的类文件,在类文件的属性中预留出函数类型的API 在调用该类文件中某些方法的时候,也根据业务需要调用类属性中的函数, 在主业务中可以传递特定的函数注 ...
- MAC下安装pomelo
配置:OS X 10.9.4 + Xcode 6.0 摘要:本文目标为成功运行pomelo的HelloWorld程序. 壹.| 安装必要项 一.安装Xcode及相关工具 1.安装Xcode. ...
- curl 带 body
curl -H "Content-Type:plain/text" -X POST -d '<?xml version="1.0" encoding=&q ...
- java之四种权限修饰符
java权限修饰符piublic.protected.private.置于类的成员定义前,用来限定对象对该类成员的访问权限. 修饰符 类内部 同一个包 子类 任何地方 private yes ...