搞定IC卡(中)-ic卡扇区解读
介绍每张IC卡都有16个扇区,包括1个公共区和15个数据区。每个扇区有4个块,每个块占16字节。第0扇区的块0为厂商代码,已经固化。包括芯片序列号UID,ATQA和SAK每个扇区的块3为控制块,用来存放密码和控制权限 ,不能用来存储数据。每个扇区的块0,块1,块2可以用来存储数据(扇区0的块0除外)。块3的前6个字节为KeyA,后6个字节为KeyB。中间的4个字节为存储控制。每个扇区可以通过它包含
介绍
每张IC卡都有16个扇区,包括1个公共区和15个数据区。每个扇区有4个块,每个块占16字节。
第0扇区的块0为厂商代码,已经固化。包括芯片序列号UID,ATQA和SAK
每个扇区的块3为控制块,用来存放密码和控制权限 ,不能用来存储数据。
每个扇区的块0,块1,块2可以用来存储数据(扇区0的块0除外)。
块3的前6个字节为KeyA,后6个字节为KeyB。中间的4个字节为存储控制。
每个扇区可以通过它包含的密钥A或者密钥B单独加密
扇区图
IC卡加解密
非加密卡和加密卡的区别就是,非加密卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;而加密卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密卡,所有扇区都加密的卡称全加密卡
现在手机都带有NFC读卡功能,可以在应用市场下载一个 NFC Writer
拿一个ic卡,放置手机NFC读卡区域,在该APP中即可查看到卡片信息,如:
IC卡读写数据
要写入的IC卡数据,这里要求必须32字节的ASCII码值,比如你要写一个卡号1,那就输入31000000000000000000000000000000。
IC卡序列号
C卡内在一个 8位16进制数的字符串,由数字和字母组成,所有IC卡读写设备或只读设备都可以读出这一串内容,不需要通过密码,所以这个也叫序列号,类似人的身份证ID号,基本上是唯一.
传翔 黑色读卡器CX500就是将8位16进制数读出并转换成 10进制的纯数字.
这种读取方法市面上比较常用,将IC卡的序列号作为会员或客户的身份唯一标识,只能读卡器读取序列号查询到系统的相应信息.
转换方法:
先调换IC卡序列号顺序 从原序列号末端开始,每次取2位,然后按顺序排列。
然后把新的组合转换成10进制
如果最后的结果不足10位,则要在前面补0,补够10位。
示例:
IC卡序列号为:1A5221B4
先排序结果为:B421521A
转换为十进制:3022082586
由于结果为10位,所以不必要补0。
对IC卡进行读写
对IC卡读写则要通过IC卡内部设置的密码才可以写入内容或读取内容,内容储存在IC卡的16个扇区中,以14443A.B协议的IC卡为例,具体流程则为如下:
(1).先确定好IC卡的加密密码,默认为12个F,即空密码的意思,可以设置其它12位由数字和字母组成的密码,数字可以从0到9选择,字母只能从A到F中选择,超过无效
(2).确定好密码以后,通过传翔带IC卡读写模块的PDA或读写器对IC卡写密码.
(3).密码写好后将内容写入到某个扇区的某个块中,一般情况IC卡容量非常小,普通的都在2K以内,只能储存简单的字符,比如卡号,身份证号之类.
(4).写好内容如果要读取则要在软件中配置对应的卡密码,在读取时设备会识别与卡密码一样才会显示出具体内容.
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)