智能卡网吧收费机设计三

上传人:桔**** 文档编号:588274406 上传时间:2024-09-07 格式:PPT 页数:43 大小:295KB
返回 下载 相关 举报
智能卡网吧收费机设计三_第1页
第1页 / 共43页
智能卡网吧收费机设计三_第2页
第2页 / 共43页
智能卡网吧收费机设计三_第3页
第3页 / 共43页
智能卡网吧收费机设计三_第4页
第4页 / 共43页
智能卡网吧收费机设计三_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《智能卡网吧收费机设计三》由会员分享,可在线阅读,更多相关《智能卡网吧收费机设计三(43页珍藏版)》请在金锄头文库上搜索。

1、SmartCardSmartCard智能卡网吧收费机设计(三)智能卡网吧收费机设计(三)接触式逻辑加密卡读写软件设计接触式逻辑加密卡读写软件设计电子与信息工程学院电子与信息工程学院SmartCardSmartCard教学目标q SLE4442卡读主存储器q SLE4442卡更新主存储器q SLE4442卡密码校验SmartCardSmartCard产品开发智能卡网吧收费机q开发任务:设计智能卡网吧收费机q卡型:SLE4442q智能卡网吧收费机功能分析 1、判断卡的合法性 2、上网计时收费SmartCardSmartCard产品开发之第三步:软件实现产品开发之第三步:软件实现q智能卡网吧收费机工

2、作流程1、判断卡的合法性:判断是否SLE4442卡、是否本网吧发行的卡、密码是否正确、卡中余额是否充足复位与复位响应、读卡、校验密码2、计时收费:写卡扣款并发送允许上网代码,接收PC机计时时间到发出的控制信号,收到启动信号则重新判断卡合法性并扣款,收到停止信号则下电并提示允许拔卡写卡SmartCardSmartCard网吧收费机主程序流程图网吧收费机主程序流程图插卡上电是否4442卡?是否本网吧发行?是否合法卡?是否4442卡?插卡上电更新余额余额足否?发送上网允许代码接收PC机控制信号启动?N发送错误代码1卡类型错误发送错误代码2伪卡错误发送错误代码3密码错误发送错误代码4余额不足NNNYY

3、YNY下电提示允许拔卡SmartCardSmartCardIO BIT P1.0CLK BIT P1.1RST BIT P1.2ICSW BIT P1.6 PWR BIT P1.7PSC1 EQU 0FFHPSC2 EQU 0FFHPSC3 EQU 0FFHCOM EQU 20HADDR EQU 21HDAT EQU 22H NUM EQU 2FH;*主程序* ORG 0030HMAIN:CLR EA;关中断 MOV SP,#60H;设置堆栈网吧卡功能测试主程序SmartCardSmartCard LCALL PWRON;上电控制 LCALL RESET;复位 MOV R0,#30H;设置读数

4、据缓冲区1首地址 LCALL READ;读主存储器 NOP;断点 LCALL VERIFY;PSC校验 XRL A,#07h;断点,检查PSC校验是否正确 JNZ EXIT;PSC校验失败退出 MOV R0,#50H;设置写数据缓冲区首地址 LCALL WRITE;修改主存储器 MOV R0,#40H;设置读数据缓冲区2首地址 LCALL READ;再次读主存储器EXIT: NOP;断点 LCALL PWROFF;下电控制 SJMP $SmartCardSmartCard如何实现卡读写控制?如何实现卡读写控制?q接触式逻辑加密卡SLE4442与读写器如何交换数据?q如何启动SLE4442卡工作

5、?q信息如何从卡中读出?q如何校验密码?q信息如何写入卡中?SmartCardSmartCard软件设计方法按SLE4442操作时序编制卡读写程序q通信协议:2线连接协议,满足ISO7816同步传送协议q数据传输:CLK信号下降沿有效。q复位和复位响应(Reset and Answer-to-Reset): 上电后启动芯片,符合7816RESET子程序实现q命令(Command) 命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 COMMAND子程序实现q操作模式(Mode):读 数 据 : 输 出 数 据 模 式 ( OUTGOING DATA MODE)SHIN子程序实现写入、擦除、

6、校验:处理模式(PROCESSING MODE) PROCESS子程序实现SmartCardSmartCardSmartCardSmartCard分任务分任务1:读主存储器:读主存储器Read Main Memory q命令格式:30H +字节地址+ *q模式:OUTGOINGq功能:读出从给定的字节地址(N)开始,直到整个存储器末尾的主存储器内容。q说明:在该命令输入以后,接口设备IFD必须提供足够的时钟脉冲,起始地址为N时所需要的时钟脉冲数为 M=(256-N)* 81 (N=0255)例如:地址为7EH(N=254),M=17SmartCardSmartCardSmartCardSmar

7、tCardSmartCardSmartCard;*读主存储器子程序*READ: MOV COM,#30H;设置读主存储器控制字 MOV ADDR,#R_ADDR;取读主存储器首地址 MOV DAT,#00H;设置读主存储器数据字(任意) MOV R4,NUM;数据个数 LCALL COMMAND;送命令给卡READ0:LCALL SHIN;读数据(输出数据模式) MOV R0,A;送数据入数据缓冲区 INC R0 DJNZ R4,READ0;未读完继续 如何完成命令如何完成命令的发送呢?的发送呢?SmartCardSmartCard SETB CLK;发送一个附加脉冲 LCALL DELAY

8、CLR CLK LCALL DELAY SETB IO;置位数据线 LCALL DELAY RETSmartCardSmartCard命令(Command)q复位响应以后,芯片等待着命令。q命令=开始+(控制字+地址字+数据字)+附加脉冲+停止 。q开始:在CLK为高状态(H)期间,I/O的下降沿为开始状态。q停止:在CLK为高状态(H)期间,I/O的上升沿为停止状态。SmartCardSmartCardSLE4442操作命令SmartCardSmartCard;*命令子程序*;该子程序送出三字节的SLE4442命令;入口参数:COM为控制字,ADDR为地址字,DAT为数据字COMMAND:S

9、ETB CLK LCALL DELAY_12 CLR IO ;开始 LCALL DELAY CLR CLK LCALL DELAY MOV A,COM;送命令字 LCALL SHOUT MOV A,ADDR;送地址字 LCALL SHOUT MOV A,DAT;送数据 LCALL SHOUT LCALL DELAY CLR IO LCALL DELAY SETB CLK;附加脉冲 LCALL DELAY SETB IO;停止 RET怎样向卡中写入怎样向卡中写入一个字节?一个字节?SmartCardSmartCard; sle4442 串行输入一个字节函数, 即MCU向卡写入一字节SHOUT:

10、PUSH B MOV B,#08HX42: RRC A MOV IO,C NOP SETB CLK LCALL DELAY CLR CLK LCALL DELAY DJNZ B,X42 POP B RETSmartCardSmartCard操作模式 (Mode)q接收了一个命令之后,卡芯片处于 两种可能的模式:(1)读数据:输出数据输出数据模式;(2)写入、擦除、校验密码:处理处理模式。SmartCardSmartCard输出数据(OUTGOING)模式q将IC卡芯片中的数据传送给读写器q在第一个CLK脉冲的下降沿之后,I/O线上的第一位数据变为有效。随后每增加一个时序脉冲,芯片内部的一位数据

11、被送到I/O线上,低位(LSB)在前。当所需要的最后一个数据送出之后,需要再附加一个时钟脉冲来把I/O线置成高阻状态(状态Z)。q循环使用SHIN子程序,每调用一次读入卡输出的一个字节。SmartCardSmartCard处理数据(PROCESSING)模式q对IC卡芯片作内部处理(写/擦除/校验密码)q芯片在第一个时钟脉冲的下降沿,将IO线从高状态(H状态)拉到低状态(L状态)并开始处理。此后芯片在内部连续计时计数,直到第n个时钟脉冲之后的附加一个时钟脉冲的下降沿IO线被再次置高,完成芯片的处理过程。在整个处理过程中IO线被锁定成低状态。 SmartCardSmartCard;sle4442

12、处理模式子程序 PROCESS: MOV R7,#254D CLR CLK CLR IO LCALL DELAYPRO1:SETB CLK LCALL DELAY CLR CLK LCALL DELAY DJNZ R7,PRO1 SETB IO LCALL DELAY SETB CLK LCALL DELAY CLR CLK RETSmartCardSmartCard分任务2:PSC校验qPSC校验的过程并不是仅由比较校验数据命令来完成的,而是由多个命令构成的一个流程来共同完成,流程一:用一个修改加密存储器命令将密码错误计数器中的一位写0。流程二:连续用三条比较校验数据命令比较输入的用户密码与

13、加密存储器中存储的密码。比较从字节1开始。流程三:校验密码成功与否是用能否擦除密码错误计数器来证实的。如果校验成功,则擦除操作执行有效;如果校验不成功,擦除操作执行无效,密码错误计数器将不会恢复为“111”。但只要EC不全为0,就允许读写器对芯片进行重试。 SmartCardSmartCard读读ECEC写写ECEC的一位为的一位为0 0EC=000EC=000?校验三字节的密码校验三字节的密码擦除擦除ECEC读读ECECEC=111EC=111?读SM*修改SM地址0数据校验VD地址1、2、3密码1、2、3修改SM地址007H读SM*Y YY YN NN N校验通过校验通过校验不成功校验不成

14、功ECEC中中1 1的个数的个数= =允许重试的次数允许重试的次数卡被锁死卡被锁死SmartCardSmartCard比较校验数据比较校验数据Compare Varification Data q命令格式:33H +字节地址+ 数据q模式:PROCESSINGq功能:把输入的“用户密码”的各个字节与相对应的PSC(存放在加密存储器中)进行比较 q说明:字节地址为01H03H,数据为用户密码SmartCardSmartCardSmartCardSmartCard读加密存储器读加密存储器 Read Security Memoryq命令格式:3lH +* + *q模式:OUTGOINGq功能:类似于

15、读保护存储器,可以读出4个字节的加密存储器的内容。M=33q说明:密码比较失败时只能读出错误计数器(字节0)的内容,字节1、2、3的内容将为000000(即不能读出密码)SmartCardSmartCard修改加密存储器修改加密存储器 Updata Security Memoryq命令格式:39H +字节地址+ 数据q模式:PROCESSINGq功能:用所给出的数据修改加密存储器指定字节地址的内容(即修改错误计数器或修改密码)q说明:该命令只能在PSC比较成功之后才能进行。该命令的执行时间和所需要的时钟脉冲与修改主存储器的情况相同 SmartCardSmartCardSmartCardSmar

16、tCard;*PSC校验子程序*VERIFY: MOV COM,#31H;设置读加密存储器命令控制字 MOV ADDR,#00H;设置读加密存储器命令地址字(00H为错误计数器) MOV DAT,#00H;设置读加密存储器命令数据字(任意) LCALL COMMAND;送读加密存储器命令 LCALL SHIN;读错误计数器 MOV 23H,A;错误计数器值暂存(23H)单元 LCALL SHIN;继续读入加密存储器后3个字节 MOV 24H,A LCALL SHIN MOV 25H,A LCALL SHIN MOV 26H,A MOV A,23H SETB IO;附加一个脉冲,置数据线为高 L

17、CALL DELAY SETB CLK LCALL DELAY CLR CLK SmartCardSmartCard JB ACC.0,NEXT0;判断错误计数器中是否还有“1” ;JB ACC.1,NEXT1;如有“1”则减去一个“1”, ;JB ACC.0,NEXT2 LJMP EXIT1;错误计数器为全“0”退出NEXT0:MOV DAT,#06HAJMP COMP0NEXT1:MOV DAT,#04HAJMP COMP0NEXT2:MOV DAT,#00HCOMP0:MOV COM,#39H;设置修改加密存储器命令控制字 MOV ADDR,#00H;设置修改加密存储器命令地址字(错误计

18、数器) LCALL COMMAND;送修改加密存储器命令(错误计数器减一个1) LCALL PROCESS;处理模式SmartCardSmartCard MOV COM,#33H;设置PSC校验命令控制字 MOV ADDR,#01H;设置PSC校验命令地址字 MOV DAT,#PSC1;取PSC第一个字节 LCALL COMMAND;送PSC校验命令给卡 LCALL PROCESS;处理模式 MOV COM,#33H;设置PSC校验命令控制字 MOV ADDR,#02H;设置PSC校验命令地址字 MOV DAT,#PSC2;取PSC第二个字节 LCALL COMMAND;送PSC校验命令给卡

19、LCALL PROCESS;处理模式 MOV COM,#33H;设置PSC校验命令控制字 MOV ADDR,#03H;设置PSC校验命令地址字 MOV DAT,#PSC3;取PSC第三个字节 LCALL COMMAND;送PSC校验命令给卡 LCALL PROCESS;处理模式SmartCardSmartCard MOV COM,#39H;设置修改加密存储器命令控制字 MOV ADDR,#00H;设置修改加密存储器命令地址字(错误计数器) MOV DAT,#07H;取修改加密存储器命令数据字(擦除错误计数器) LCALL COMMAND ;送修改加密存储器(擦除错误计数器)命令给卡 LCALL

20、 PROCESS;处理模式 MOV COM,#31H;设置读加密存储器命令控制字 MOV ADDR,#00H;设置读加密存储器命令地址字(错误计数器) MOV DAT,#00H;设置读加密存储器命令数据字(任意) LCALL COMMAND;送读加密存储器命令给卡 LCALL SHIN;读加密存储器的错误计数器 MOV 23H,A SmartCardSmartCard LCALL SHIN;读加密存储器的后三个字节 MOV 24H,A LCALL SHIN MOV 25H,A LCALL SHIN MOV 26H,A MOV A,23H;EC值送A SETB IO;附加一个脉冲,置数据线为高

21、LCALL DELAY SETB CLK LCALL DELAY CLR CLKEXIT1:RETSmartCardSmartCard分任务分任务3:修改主存储器:修改主存储器 Updata Main Memoryq命令格式:38H +字节地址+ 数据q模式:PROCESSINGq功能:用所给出的数据修改主存储器指定字节地址(N)的内容q说明:通常,要改变一个数据需要先进行擦除,再进行写入两项操作。如果在被寻址的字节里位中没有一个字位需要从变到,则可以不进行擦除处理。反之亦然,在被寻址的字节中,如果没有一个字位需要从变到,则可以不作写入处理,写人或擦除操作一次至少要耗费.时间 。因此,在处理模

22、式期间,可能发生下列几种情况之一:擦除和写入(5ms): 相应于M256个时钟脉冲只写入不擦除(2.5ms): 相应于 M= 124个时钟脉冲只擦除不写入(2.5ms): 相应于M124个时钟脉冲。 SmartCardSmartCardSmartCardSmartCardSmartCardSmartCard;*修改主存储器子程序*WRITE: MOV R4,NUM;取要写的字节数 MOV COM,#38H ;设置修改主存储器控制字WRITE0: MOV ADDR,#W_ADDR;取修改主存储器首地址 MOV A,R0 MOV DAT,A;取修改主存储器数据字 LCALL COMMAND;送修改

23、主存储器命令给卡 LCALL PROCESS;处理模式 INC W_ADDR ;地址字指向主存储器下一个单元 INC R0;指向下一个数据 DJNZ R4,WRITE0;未写完继续 RETSmartCardSmartCard实训实训 接触式逻辑加密卡读写控制接触式逻辑加密卡读写控制第一阶段:读卡第一阶段:读卡1、通过复位应答方式读入SLE4442卡主存储器前4个字节的内容。2、通过读主存储器方式读入SLE4442卡主存储器前4个字节的内容。3、读主存储器任意起始地址、任意长度的数据块内容。课前准备:1、在原有AT24C01卡接口电路上增加RST连线及其上拉电阻。2、完成程序的编写、编译。Sma

24、rtCardSmartCard第二阶段:校验密码、写卡第二阶段:校验密码、写卡1、校验密码,校验成功则设标志寄存器B为00H,否则设为FFH并退出。2、判断校验密码是否成功,成功则在主存储器任意起始地址、任意长度的数据块中写入数据。否则退出。注意:注意: 校验密码错误退出程序后,请用通用读写器重新输入正确密码,以恢复EC的次数,切勿反复出错退出导致卡锁死!SmartCardSmartCard思考q目前大多数网吧卡仅保护发卡方利益(校验卡的合法性),并未保护持卡人利益(校验持卡人的合法性),即:若网吧卡丢失,可为非法持卡人盗用。如何避免网吧卡被非法持卡人盗用?如何实现挂失功能?SmartCardSmartCard作业q设计IC卡自动加油机1.分析系统需求,选择卡型。2.设计IC卡加油机硬件电路,画出功能模块图。3.分析IC卡加油机工作流程,画出主程序流程图。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号