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 ...
随机推荐
- 浅析椭圆曲线加密算法(ECC)
本文首发于先知社区,原文链接:https://xz.aliyun.com/t/6295 数学基础 黎曼几何中的"平行线" 欧几里得<几何原本>中提出五条公设: 过相异两 ...
- 获取开发版sha1和开发版sha1
注:前提是你已经安装好jdk和android-sdk,并且将两者的环境变量已经设置完毕,我这里是jdk8 获取开发版sha1(也称作测试版) 1.打开命令行 cd .android 2.输入keyto ...
- DRF单表序列化和反序列化
安装 djangorestframework pip install djangorestframework 将rest_framework注册到app上 INSTALLED_APPS = [ 're ...
- Context知识详解
Context知识详解 建议配合context知识架构图食用. 一.什么是Context 贴一个官方解释: Interface to global information about an appli ...
- Docker安全扫描工具之docker-bench-security
简介 Docker Bench for Security检查关于在生产环境中部署Docker容器的几十个常见最佳实践.这些测试都是自动化的,其灵感来自CIS Docker基准1.2.0版. 这种安全扫 ...
- AES加密原理和AOE工程实践
在AI业务的开发的过程中,我们常常需要对模型文件进行加密.我们从以下几个方面来说一说AES的加密原理以及AOE里的工程实践. 常见的加密算法 AOE对模型加密需求的思考 AES的加密原理 AOE工程实 ...
- spark shell操作
RDD有两种类型的操作 ,分别是Transformation(返回一个新的RDD)和Action(返回values). 1.Transformation:根据已有RDD创建新的RDD数据集build ...
- 利用zabbix API 统计一段时间内监控项的均值和峰值
#coding:utf-8 #给定主机IP获取一段时间内cpu的均值和峰值并写入文件(txt,可以跑完后直接把后缀名改为csv以表格形式打开):需要指定IP文件 import requests imp ...
- Spring Bean Expression Language(EL)
1, Add dependency. <dependency> <groupId>org.springframework</groupId> <artifac ...
- CODING 2.0 企业级持续交付解决方案
"The key to DevOps transformation is that there is no end-state-we must continuously evolve.&qu ...