智能卡网吧收费机设计3课件_第1页
智能卡网吧收费机设计3课件_第2页
智能卡网吧收费机设计3课件_第3页
智能卡网吧收费机设计3课件_第4页
智能卡网吧收费机设计3课件_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、智能卡网吧收费机设计(三) 逻辑加密卡读写控制教学目标 SLE4442卡读主存储器 SLE4442卡更新主存储器 SLE4442卡密码校验产品开发智能卡网吧收费机开发任务:设计智能卡网吧收费机卡型:SLE4442智能卡网吧收费机功能分析 1、判断卡的合法性 2、上网计时收费产品开发之第三步:卡读写控制智能卡网吧收费机工作流程1、判断卡的合法性:判断是否SLE4442卡、是否本网吧发行的卡、密码是否正确、卡中余额是否充足复位与复位响应、读卡、校验密码2、计时收费:写卡扣款并发送允许上网代码,接收PC机计时时间到发出的控制信号,收到启动信号则重新判断卡合法性并扣款,收到停止信号则下电并提示允许拔卡

2、写卡如何实现卡读写控制?读卡信息如何从卡中读出?校验如何校验密码?写卡信息如何写入卡中?软件设计方法按SLE4442操作时序编制卡读写程序SLE4442卡操作时序SLE4442卡操作时序分析通信协议:2线连接协议,满足ISO7816同步传送协议数据传输:CLK信号下降沿有效,低位在前。读写过程: (1)读写器发送命令(Command)给卡命令时序 命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 函数实现:void sle4442_command(uchar control,uchar address,uchar dat) (2)卡执行命令(读写器接收数据或等待卡内部执行)操作模式(Mo

3、de):读数据:输出数据模式(OUTGOING DATA MODE)char sle4442_si(void)实现写入、擦除、校验:处理模式(PROCESSING MODE) sle4442_process()实现命令(Command)复位响应以后,芯片等待着命令。命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 。开始:在CLK为高状态(H)期间,I/O的下降沿为开始状态。停止:在CLK为高状态(H)期间,I/O的上升沿为停止状态。SLE4442操作命令/* sle4442 命令函数*/ void sle4442_command(uchar control,uchar address,

4、uchar dat)IO=1; / Start,下降沿SLECLK=1; delay_12us();IO=0; delay_4us(); / t3CLK=0;delay_4us();sle4442_so(control); /向卡中写入一字节的控制字sle4442_so(address); /向卡中写入一字节的地址字sle4442_so(dat); /向卡中写入一字节的数据字delay_4us();IO=0; / Stop,上升沿delay_4us(); / t6CLK=1; delay_4us();IO=1; 怎样向卡中写入一个字节?/* MCU向卡送出(写入)一字节 */ void sle

5、4442_so(char dat) / write a byte,LSB first uchar i,temp; for(i=0;i1; /右移,低位在前delay(4); / 保持CLK为高一个时钟脉冲操作模式 (Mode)接收了一个命令之后,卡芯片处于 两种可能的模式:(1)读数据:输出数据模式;(2)写入、擦除、校验密码:处理模式。输出数据(OUTGOING)模式将IC卡芯片中的数据传送给读写器在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。随后每增加一个时序脉冲,芯片内部的一位数据被送到I/O线上,低位(LSB)在前。当所需要的最后一个数据送出之后,需要再附加一个时钟脉

6、冲来把I/O线置成高阻状态(状态Z)。循环使用char sle4442_si(void) 函数,每调用一次从卡读入当前地址指向的一个字节,卡内地址指针自动+1。分任务1:读主存储器Read Main Memory 命令格式:0 x30 +字节地址+ *模式:OUTGOING功能:读出从给定的字节地址(N)开始,直到整个存储器末尾的主存储器内容。说明:在该命令输入以后,接口设备IFD必须提供足够的时钟脉冲,起始地址为N时所需要的时钟脉冲数为 M=(256-N)* 81 (N=0255)例如:地址为0 x7E(N=254),M=17/* sle4442 读主存储器函数*/unsigned char

7、 rdata=0; void read(unsigned char rcom ,unsigned char radd,unsigned char num)sle4442_command(rcom,raddr,0 xff); /送命令IO=1;/准备读入delay(12);CLK=0;delay(12);for(i=0;irnum;i+) rdatai=sle4442_si();/读入数据 入口参数:读卡指令com读卡起始地址radd读卡字节数num出口参数:读卡数据到数组rdata完成了吗?以上程序可以实现读入需要读入的字节数,但将导致后续命令无法被SLE4442卡接收,必须提供起始地址为N2

8、55所需要的时钟脉冲数M=(256-N)* 81/* sle4442 读主存储器函数,续上*/void read(unsigned char rcom ,unsigned char radd,unsigned char rnum)/补充剩余脉冲,等待后续命令for(i=0;i255-rnum;i+)for(j=0;j8;j+)CLK=1;delay(4);CLK=0;delay(4);CLK=1; /附加脉冲delay(4);CLK=0;delay(4);IO=1;delay(4);入口参数:读卡指令rcom读卡起始地址radd读卡字节数rnum出口参数:读卡数据送到数组rdata实训 接触式

9、逻辑加密卡读写控制第一阶段:读卡1、通过复位应答方式读入SLE4442卡主存储器前4个字节的内容。2、通过读主存储器方式读入SLE4442卡主存储器前4个字节的内容。3、读主存储器任意起始地址、任意长度的数据块内容。分任务2:修改主存储器 Updata Main Memory命令格式:0 x38 +字节地址+ 数据模式:PROCESSING功能:用所给出的数据修改主存储器指定字节地址(N)的内容说明:通常,要改变一个数据需要先进行擦除,再进行写入两项操作。如果在被寻址的字节里位中没有一个字位需要从变到,则可以不进行擦除处理。反之亦然,在被寻址的字节中,如果没有一个字位需要从变到,则可以不作写入

10、处理,写人或擦除操作一次至少要耗费.时间 。因此,在处理模式期间,可能发生下列几种情况之一:擦除和写入(5ms): 相应于M256个时钟脉冲只写入不擦除(2.5ms): 相应于 M= 124个时钟脉冲只擦除不写入(2.5ms): 相应于M124个时钟脉冲。 操作模式 (Mode)接收了一个命令之后,卡芯片处于 两种可能的模式:(1)读数据:输出数据模式;(2)写入、擦除、校验密码:处理模式。处理数据(PROCESSING)模式对IC卡芯片作内部处理(写/擦除/校验密码)芯片在第一个时钟脉冲的下降沿,将IO线从高状态(H状态)拉到低状态(L状态)并开始处理。此后芯片在内部连续计时计数,直到第n个

11、时钟脉冲之后的附加一个时钟脉冲的下降沿IO线被再次置高,完成芯片的处理过程。在整个处理过程中IO线被锁定成低状态。 void process();/sle4442处理模式CLK=0;IO=0; delay(4);for(i=0;i255;i+)/输出脉冲CLK=1;delay(4);CLK=0;delay(4); IO=1;CLK=1;delay(4);CLK=0;delay(4);/* 向sle4442卡存储器写一个字节 */ void write(unsigned char wcom,unsigned char wadd,unsigned char wdat ) sle4442_comma

12、nd(wcom,waddr,wdat); /送写卡命令 sle4442_process();/处理模式 CLK=1; /附加脉冲 delay(4); CLK=0; delay(4); IO=1;/拉高IO,等待后续命令 delay(4);入口参数:写卡命令wcom写卡地址waddr写入数据wdata分任务3:PSC校验PSC校验的过程并不是仅由比较校验数据命令来完成的,而是由多个命令构成的一个流程来共同完成,流程一:用一个修改加密存储器命令将密码错误计数器中的一位写0。流程二:连续用三条比较校验数据命令比较输入的用户密码与加密存储器中存储的密码。比较从字节1开始。流程三:校验密码成功与否是用能

13、否擦除密码错误计数器来证实的。如果校验成功,则擦除操作执行有效;如果校验不成功,擦除操作执行无效,密码错误计数器将不会恢复为“111”。但只要EC不全为0,就允许读写器对芯片进行重试。 读EC写EC的一位为0EC=000?校验三字节的密码擦除EC读ECEC=111?读SM*修改SM地址0数据校验VD地址1、2、3密码1、2、3修改SM地址00 x07读SM*YYNN校验通过校验不成功EC中1的个数=允许重试的次数卡被锁死比较校验数据Compare Varification Data 命令格式:0 x33 +字节地址+ 数据模式:PROCESSING功能:把输入的“用户密码”的各个字节与相对应的

14、PSC(存放在加密存储器中)进行比较 说明:字节地址为0 x010 x03,数据为用户密码读加密存储器 Read Security Memory命令格式:0 x3l +* + *模式:OUTGOING功能:类似于读保护存储器,可以读出4个字节的加密存储器的内容。M=33说明:密码比较失败时只能读出错误计数器(字节0)的内容,字节1、2、3的内容将为000000(即不能读出密码)修改加密存储器 Updata Security Memory命令格式:0 x39 +字节地址+ 数据模式:PROCESSING功能:用所给出的数据修改加密存储器指定字节地址的内容(即修改错误计数器或修改密码)说明:该命令

15、只能在PSC比较成功之后才能进行。该命令的执行时间和所需要的时钟脉冲与修改主存储器的情况相同 unsigned char verify(void) /* sle4442 校验密码程序*/unsigned char counter;read(0 x31,0 x00,0 x04); /读EC if(rdata0!=0) if(rdata0=7)rdata0=6; else if(rdata0=6)rdata0=4;/ elserdata0=0; write(0 x39,0 x00,rdata0);/EC减1次 write(0 x33,0 x01,PSC1); /密码校验 write(0 x33,0 x02,PSC2); write(0 x33,0 x03,PSC3); write(0 x39,0 x00,0 x07);/EC恢复为3次 read(0 x31,0 x00,0 x04); /重新读出ECcounter=rdata0; if(counter=0 x07)return 1; /密码正确返回1 elsereturn 0; /密码错误返回0 出口参数:错误计数器ECEC=0 x07则校验密码正确,否则校验密码错误实训 接触式逻辑加密卡读写控制第二阶段:校验密码、写卡1、校验3字节用户密码,密码正确则置错误标

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论