概述:

1、  容量512bit,分为16个page,每个page占4byte

2、  每个page可以通过编程的方式锁定为只读功能

3、  384位(从page4往后)用户读写区域

4、  唯一7字节物理卡号(page0前3个byte加page1)

存储结构:

页号

Byte0

Byte1

Byte2

Byte3

说明

0

SN0

SN1

SN2

BCC0

只读,存放卡的序列号:Page0前3字节+整个Page1

1

SN3

SN4

SN5

SN6

2

BCC1

保留

LOCK0

LOCK1

只读,通过设置LOCK0和LOCK1可以讲16个page设为只读

3

OTP0

OTP1

OTP2

OTP3

可读写,一次性交易计数器,不可逆

4

Data0

Data1

Data2

Data3

可读写,数据存放区域

5

Data0

Data1

Data2

Data3

6

Data0

Data1

Data2

Data3

7

Data0

Data1

Data2

Data3

8

Data0

Data1

Data2

Data3

9

Data0

Data1

Data2

Data3

10

Data0

Data1

Data2

Data3

11

Data0

Data1

Data2

Data3

12

Data0

Data1

Data2

Data3

13

Data0

Data1

Data2

Data3

14

Data0

Data1

Data2

Data3

15

Data0

Data1

Data2

Data3

 

总的来说,你可以把UltraLight卡简单地看成是一种存储介质,对它的操作也就是对扇区中每个Page的读取和写入的过程。

UltraLight卡的发卡流程:

第一步:寻卡

dc_card(icdev, cardMode, snr)

dc_anticoll2(icdev, 0, snr2)

dc_select2(icdev, snr2, size)

第二步:写卡

获得想要写入卡片的数据(十六进制字符串形式),调用dc_write_hex函数,写入对应page

关于这个函数有个比较怪的问题,文档中规定,对于Ultralight卡,一次必须写入4个字节,也就是一个Page,但你仍需将你写入的数据以后补0的方式补足16字节,尽管它实际写入的只是前4个字节。自己写的功能函数:

    ''' <summary>''' 将进制串写入指定地址的卡片内存中''' </summary>''' <param name="start">要写入的起始块地址</param>''' <param name="finish">要写入的结束块地址</param>''' <param name="dataBufHex">要写入的串</param>''' <returns>写卡是否成功</returns>''' <remarks></remarks>Private Function Write(ByVal start As Short, ByVal finish As Short, ByVal dataBufHex As String)Dim i As Byte '循环标记Write = False'假设dataBufHex为字8节,start为4,finsh为5,但对Ultralight来说,一次只能写4个字节,即'一次只能写一个块,因此需要分两次来写。虽然每次只能写四个字节,但'dc_write_hex函数规定写入的数据必须为16字节,因此需要做右补0操作For i = 0 To (finish - start)Dim tmp As Stringtmp = Mid(dataBufHex, i * 8 + 1, 8)'补0If Len(tmp) < 32 Thentmp = tmp & New String("0", 32 - Len(tmp))End IfLog("往Page" & (start + i) & "中写数据:" & tmp)st = dc_write_hex(icdev, start + i, tmp)If (st <> 0) Then '写卡失败Write = FalseExit FunctionEnd IfNextWrite = True
End Function

第三步:读卡

发好卡后,需要验证写入的数据是否正确,这时你就需要调用dc_read_hex函数读入卡片中的数据,有例子:

st = dc_read_hex(icdev, address, dataBufHex)

这里icdev是通讯设备标识符,address是要读入的起始页地址,dataBufHex是存放读入数据的变量。

dc_read_hex函数一次性读入16字节数据,因此dataBufHex字符串长度最长为32,但是不管你的dataBufHex设成任何长度(只要不大于32),该函数仍然读出16字节数据,只不过它会截取前面的部分放到dataBufHex中返还给你罢了。

其他:

关于发行验证码和交易TAC的计算方法,等过几天总结了CPU卡和M1卡的发卡流程之后再写出来。还有就是卡片的应用,我发的UltraLight是拿来作为单程票的,它的消费充值等流程是由其他人来做的,而且跟具体的卡结构有关,不好讲。

转载于:https://www.cnblogs.com/chenguanwei/archive/2011/01/07/1930169.html

Mifare Ultra Light 非接触式IC卡发卡总结相关推荐

  1. Mifare Ultra Light 非接触式IC卡

    概述: 1.  容量512bit,分为16个page,每个page占4byte 2.  每个page可以通过编程的方式锁定为只读功能 3.  384位(从page4往后)用户读写区域 4.  唯一7字 ...

  2. Mifare One 非接触式IC卡介绍

    贴一篇关于Mifare1的介绍 Mifare l卡特性简介 M1卡为8K位的非接触式IC卡. 电气特性 l         容量为8K位EEPrOM l         分为16个扇区,每个扇区为4块 ...

  3. 非接触式IC卡存储结构

    非接触式IC卡Contactless Smart Card(CSS),也称作感应卡.射频卡,由IC芯片.感应天线组成,并完全密封在一个标准PVC卡片中, 无外露部分,其结构示意图如下. 非接触IC卡工 ...

  4. 磁条卡,接触式IC卡,非接触式IC卡的优缺点

    磁条卡的特点: 磁条卡由于其结构简单,存储容量小,安全保密性差,读写设备复杂且维护费用高,作为七.八十年代技术水平的产品已风光不再,即将面临淘汰. 智能IC卡与磁条卡相比有哪些优势? 接触式IC卡与磁 ...

  5. 全球与中国非接触式IC卡芯片市场现状及未来发展趋势2022

    根据QYR(恒州博智)的统计及预测,2021年全球非接触式IC卡芯片市场销售额达到了 亿美元,预计2028年将达到 亿美元,年复合增长率(CAGR)为 %(2022-2028).地区层面来看,中国市场 ...

  6. 非接触式IC卡与条码卡磁卡接触式IC卡相比较

    一.最新技术-非接触IC卡 非接触IC卡,又名感应卡,诞生于90年代初,由于存在着条码卡.磁卡和接触式IC卡不可比拟的优点,使之一经问世,便立刻引起了广泛的关注,并以惊人的速度得到推广应用. 非接触式 ...

  7. iso14443 非接触式IC卡协议

    转自百度百科 http://baike.baidu.com/link?url=Y1koEW6mX0AgDV5kt37i7M5RaV0g_WwxU163dO-VKUbR5w4qEHv0OMOnbw1BT ...

  8. S50非接触式IC卡 学习笔记

    S50非接触式IC卡性能简介(M1) 一. 主要指标 l 容量为8K位EEPROM(1K 字节) l 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位 l 每个扇区有独立的一组密码及访问 ...

  9. 非接触式IC卡性能简介(M1)

    卡片的电气部分只由一个天线和ASIC组成. 天线:卡片的天线是只有几组绕线的线圈,很适于封装到IS0卡片中. ASIC:卡片的ASIC由一个高速(106KB波特率)的RF接口,一个控制单元和一个 8K ...

最新文章

  1. 使用Vue时localhost:8080中localhost换成ip地址后无法显示页面的问题
  2. 单片机c语言编译软件6,eUIDE下载-单片机c语言编译器 v1.07.32.23 官方版 - 安下载...
  3. QPW 企业员工表(tf_company_employee)
  4. WinForm部署问题
  5. Registry注册机制
  6. mysql8.0.20 64位安装教程_MySQL8.0.20压缩版本安装教程图文详解
  7. 如何避免JDBC内存溢出问题
  8. SQLALchemy (ORM工具)[PostgreSQL为例]
  9. 6章:常用工具类以及函数
  10. python利器-python利器app下载-python利器手机版 _5577安卓网
  11. 并发-2-Thread和Runnable的API
  12. Xilinx zynqmp VCU使用
  13. C++ opencv viz位姿可视化
  14. vue引入echarts-liquidfill水滴图并批量动态加载
  15. 微前端究竟是什么?微前端核心技术揭秘!
  16. SSTV 建伍TK8185 连接电脑
  17. 在系统grub.cfg里面设定关闭 aspm
  18. 廖雪峰的GIT教程-读书笔记
  19. 男人也勾魂(航爷钦定题目,汗!)
  20. javascript模块化的前世今生

热门文章

  1. linux非权限安装bioperl,BioPerl安装指南:Unix/Linux/Windows下的安装
  2. html 幻灯禁止上下滑动,幻灯片滑动Immersive Slider
  3. eclipse注释模板_Intellij IDEA设置默认文档注释
  4. 角谷定理python输出变化过程,Python 100例——第十章----定理与猜想
  5. python flask web开发 可视化开发_python web开发之——Flask入门教程
  6. 使用python完成冒泡排序_python 冒泡排序优化,用递归实现冒泡排序
  7. dns的服务器地址是多少当前位置,dns的服务器地址设置为多少
  8. while(true) 循环中使用了sleep休眠了半小时就中断了_线程中断不是你想中断就能的...
  9. 计算机辅助分析及应用论文,故障树计算机辅助分析及应用研究-机械制造及自动化专业论文.docx...
  10. html input日期值,input标签设置时间值