智能卡实验.docx
- 文档编号:10351957
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:28
- 大小:27.74KB
智能卡实验.docx
《智能卡实验.docx》由会员分享,可在线阅读,更多相关《智能卡实验.docx(28页珍藏版)》请在冰豆网上搜索。
智能卡实验
设备技术指标
通讯接口:
内置式RS232串口;
外置式RS232串口、TTL串口或标准并口
串口波特率:
1200~115200BPS
并口传输方式:
全字节(BYTEMODE)和半字节(NIBBLEMODE)
电源:
内置式DC5V±10%;外置式AC220V±10%
最大功耗:
100mW
环境温度:
0℃~50℃
相对湿度:
30%~95%
外型尺寸:
内置式138mm×120mm×25mm(长宽高);
外置式150mm×118mm×100mm(长宽高)
重量:
内置式约200克;外置式约500
接口特性
读写器采用DB25/F接插件与外界通讯,PIN脚使用如下:
D0-D7:
并行通讯数据总线,BYTEMODE时,为双向数据传送。
ND0-ND3:
并行通讯数据线,NIBBLEMODE时为数据上行线,下行线为D0-D7。
TXD,RXD:
串行通讯时为TTL接口,并行通讯时为握手信号线PTRCLK,HOSTBUSY。
T1,R1:
串行通讯时为232接口。
SLT:
通讯方式选择线,低电平时选择并口,高电平,或悬空时选择串口。
GND:
接地线。
由于数据总线的存在,此读写器可方便的与其他系统进行系统集成,只须把读写设备接到自己系统的总线上即可(具体内容请参看并行通讯1284协议)。
读写设备分类及型号
读写设备分类
设备类型
接口方式
操作卡型
卡座类型
放置方式
RD通用读写器
串并两用
各种存储器卡
自弹式
推推式
推拨式
内置式
外置式
CPU卡专用读写器
串并两用
CPU卡
推推式
推拨式
外置式
存储器卡专用读写器
串并选一
用户定制卡型
推推式
推拨式
外置式
MIX混合读写器
串并两用
CPU卡
各种存储器卡
推推式
推拨式
外置式
建立连接
建立连接
初次运行系统时,系统按自动测试方式建立连接,并将成功连接的参数保存在系统文件中。
下次运行时系统将自动按保存的参数建立连接。
系统建立连接成功,则在提示信息中显示当前连接方式。
例如,“当前接口:
串口19600”,表示读写器连接在COM1,通讯速率为9600BPS。
如设备密码有效,则必须先核对密码,才能进行后续操作。
如密码无效或核对密码正确后,系统将做如下操作:
1、读硬件版本号(读写器CPU程序版本号,参见函数srd_ver());
2、读产品序列号(产品生产批号,参见函数srd_snr());
3、读设备计数值;(参见函数val_read())
建立连接失败,系统显示提示信息。
此时请用户检查读写器电源、端口等是否连接正确,连接方式是否设置正确,再执行建立连接操作;或选择自动测试方式,让系统自行连接。
注:
1、提示信息显示各项操作的结果或出错信息。
鼠标双点框内文字可清空该区域。
2、软件版本号表示本演示软件的版本号。
3、用户可根据是否显示硬件版本号及产品序列号,来判断是否连接成功。
更改连接
连接成功后,用户可以更换读写器端口,指定连接方式,更改连接。
自动测试
按串口1~串口4、并口0x378、并口0x278的顺序测试连接。
设备操作
设备计数
该功能将用户指定的整数写入读写器的EEPROM中,有效值为0~200,000,000之间的整数。
设备计数值在建立连接时读出。
具体运用参见函数:
设初值:
val_set()
读值:
val_read()
加值:
val_inc()
减值:
val_dec()
设备蜂鸣
输入0~255之间的一个值,读写器按此值鸣响。
参见函数dv_beep()。
密码操作
读写器有密码保护功能,并设有一使能开关。
设置读写器密码时一定要慎重。
如果设备密码设置为有效,则每次设备上电时,必须先核对设备密码,才可以对读写器进行其他操作。
如果设备密码遗忘,用户只能穷举尝试或与供应商联系,敬请用户千万小心!
设备出厂时,缺省密码为0xffffff,密码方式设置为无效。
在密码设置无效或在密码正确核对有效期间,均可读出或修改设备密码。
密码核对的有效期是指从正确核对设备密码开始,到读写器关闭电源为止的这段时间。
在此期间即使用户程序已经退出,原先核对的密码仍然有效。
具体运用参见函数:
核对密码:
cmp_dvsc()
读取密码:
srd_dvsc()
更改密码:
swr_dvsc()
用户备注
用户可在读写器的EEPROM中写入最长为384Byte的备注信息。
用户可在备注区中写入读写器编号、公司名称、部门名称、使用者姓名、日期、时间等各种信息。
具体运用参见函数:
写备注区:
swr_eeprom()
读备注区:
srd_eeprom()
卡片操作
自动测卡
对插入读写器的卡进行卡型测试,仅限于ATMEL和SIEMENS列表中的卡型,SSF1101卡放在ATMEL类。
具体运用参见函数chk_card()。
卡片操作
选定卡型后,即可进入该卡的操作界面,分为存储器卡和CPU卡。
C语言接口函数库
我公司提供的C语言库函数可在BorlandC、MicrosoftC和WatcomC中使用,共包括六种模式库,提供文件如下:
C.LIB\MWIC.HC语言库函数头文件
\MWICT.LIBC微模式(TINY)函数库
\MWICS.LIBC小模式(SMALL)函数库
\MWICM.LIBC中模式(MEDIUM)函数库
\MWICC.LIBC紧凑模式(COMPACT)函数库
\MWICL.LIBC大模式(LARGE)函数库
\MWICH.LIBC巨模式(HUGE)函数库
C语言调用库函数的方法
(1)建立工程文件;
(2)在工程文件中加入所用模式的库;
(3)将头文件MWIC.H包含在程序中;
(4)在程序中调用库中函数。
注意事项
编译时应注意编译模式要与所选库的模式相同。
各种函数的使用方法请参见库函数详细说明。
SLE4404卡特性简介
SLE4404卡为416位加密卡,存在读数据、写数据、密码及熔断操作。
电气性能
416位容量
208位应用区
整区擦除特性
温度范围:
-35℃~80℃
至少10,000次循环擦写
至少10年数据保存期
触点结构和串行接口符合ISO7816同步协议
保密特性
SLE4404卡的保密特性主要是由用户密码、擦除密码及熔断操作来决定的,熔丝熔断前和熔断后的保密特性有所不同,现说明如下:
注:
以下的写表示置‘0’,擦表示置‘1’,编程操作时必须先擦后写。
(1)存储区名称:
厂商代码
字节地址:
0~1
字节长度:
2
熔断前特性:
出厂时已固化,只能读,不能更改
熔断后特性:
同熔丝前
(2)存储区名称:
发行商代码
字节地址:
2~7
字节长度:
6
熔断前特性:
用户密码核对正确后,可反复擦写
熔断后特性:
固化,不可更改
(3)存储区名称:
用户密码
字节地址:
8~9
字节长度:
2
熔断前特性:
用户密码核对正确后,可读,可更改
熔断后特性:
核对正确后不可读,但可更改
(4)存储区名称:
密码错误计数器
字节地址:
10
字节长度:
1
熔断前特性:
初始值为4,用户密码核对出错1次减1,连续4次出错,则卡片自动锁死,若其中有一次正确,则计数器恢复为初始值
熔断后特性:
同熔丝前
(5)存储区名称:
备注区
字节地址:
11~13
字节长度:
3
熔断前特性:
用户密码核对正确后,可读,可擦,可写,用户可在其中标注信息
熔断后特性:
同熔丝前
(6)存储区名称:
应用区
(首字节的第1位为写属性控制位,第2位为读属性控制位)
字节地址:
14~39
字节长度:
26
熔断前特性:
读:
当RD置为‘1’时,任何情况下可读;
当RD置为‘0’时,用户密码核对正确后,可读;
写:
用户密码核对正确后,可写;
擦:
用户密码核对正确后,且擦除密码核对正确,则整区擦除
熔断后特性:
读:
特性同熔丝前;
写:
当PR置为‘1’,用户密码校对正确后,可写;
当PR置为‘0’,任何情况下不可写;
擦:
同熔丝前
(7)存储区名称:
擦除密码
字节地址:
40~43
字节长度:
4
熔断前特性:
用户密码核对正确后,可读,可更改
熔断后特性:
任何情况下不可读,不可更改
(8)存储区名称:
擦除计数器
字节地址:
44~51
字节长度:
8
熔断前特性:
不起作用
熔断后特性:
每校验一次擦除密码,不论对错,擦除计数器减1,应用区共可擦64次
提供操作函数(见范例)
读操作函数:
srd_4404()
写操作函数:
swr_4404()
效验用户密码函数:
csc_4404()
更改用户密码函数:
wsc_4404()
读取用户密码函数:
rsc_4404()
读取密码错误计数:
rsct_4404()
效验擦除密码函数:
cesc_4404()
更改擦除密码函数:
wesc_4404()
读取擦除密码函数:
resc_4404()
读取擦除计数函数:
resct_4404()
擦除数据操作函数:
ser_4404()
模拟个人化函数:
fakefus_4404()
个人化操作函数:
psnl_4404()
清除写保护位函数:
clrpr_4404()
清除读保护位函数:
clrrd_4404()
测卡型函数:
chk_4404()
AT24CXX卡特性简介
AT24CXX卡(XX为01A、02、04、08、16、32、64)是XX位的非加密存储器卡,只存在读、写两种操作。
电气性能
低电压和标准电压操作
5.0(Vcc=4.5V~5.5V)
2.7(Vcc=2.7V~5.5V)
2.5(Vcc=2.5V~5.5V)
1.8(Vcc=1.8V~5.5V)
两线串行接口
双向数据传输协议
(1.8V,2.5V,2.7V)电压时100KHz时钟频率,(5V)电压时400KHz时钟频率
XX=01~02时按8字节页写方式,XX=04~16时按16字节页写方式,XX=32~64时按32字节页写方式
自定时写时间:
最大10ms
循环擦写:
1,000,000次
数据保存期:
100年
提供操作函数(见范例)
写操作函数:
swr_24c01a()
读操作函数:
srd_24c01a()
测卡型函数:
chk_24c01a()
CPU卡
CPU卡的内部结构由CPU及加密逻辑、ROM、RAM、EEPROM及I/O几部分组成,构成一个完整的安全体系。
读写器支持的CPU卡包括T=0/T=1模式,T=1协议的传输基本组成如下:
开始字段信息字段结尾字段
NADPCBLENINFEDC
其中,NAD长1字节,PCB长1字节,LEN长1字节,INF长0~254字节,EDC长1字节;LEN表示INF的数据长度,EDC为开始字段和信息字段的出错校验码。
CPU卡操作范例
该范例对CPU卡进行产生随机数操作。
#include"stdio.h"
#include"string.h"
#include"mem.h"
externintic_init(intport,longbaud);
externintcpu_reset(inticdev,unsignedchar*receive_data);
externintcpu_protocol(inticdev,intlen,unsignedchar*send_data,unsignedchar*receive_data);
main()
{
inticdev,st,port;
unsignedcharicRead[200],icWrite[200];
longbaud;
port=1;
baud=9600;
if((icdev=ic_init(port,baud))<0)
{
printf("ic_initERR%d\n",icdev);
return
(1);
}
memset(icRead,0xff,200);
if(cpu_reset(icdev,icRead)!
=0)
{
printf("cpu_reseterr\n");
}
printf("\n\nReset:
");
for(st=0;st<200;st++)
{
if((icRead[st]==0xff)&&(icRead[st+1]==0xff)&&(icRead[st+2]==0xff))
break;
printf("%02X",icRead[st]);
}
printf("\n\n");
icWrite[0]=0x00;//nad
icWrite[1]=0x40;//pcb
icWrite[2]=5;//len
icWrite[3]=0x00;//getrandom
icWrite[4]=0x84;
icWrite[5]=0x00;
icWrite[6]=0x00;
icWrite[7]=0x08;
icWrite[8]=0x00;//initbcc
for(st=0;st<8;st++)
icWrite[8]=icWrite[8]^icWrite[st];
if(cpu_protocol(icdev,9,icWrite,icRead)!
=0)
{
printf("transfererr/n");
return
(1);
}
printf("nad:
%02X\n",icRead[0]);
printf("pcb:
%02X\n",icRead[1]);
printf("len:
%d\n",icRead[2]);
printf("SW1SW2:
%02X%02X\n",icRead[icRead[2]+1],icRead[icRead[2]+2]);
printf("Data:
");
for(st=0;st printf("%02X",icRead[st+3]); printf("\n"); return (1); } 设备特性 RF系列非接触式IC卡读写器是深圳明华公司研制的非接触卡读写设备,它由主机、天线、串行接口等组成,通过RS232串行接口能实现同PC机的连接。 随机提供的接口函数库可满足用户二次开发的需要;其完善、可靠的接口函数,支持访问射频卡的全部功能。 目前该设备已广泛地应用于门禁、考勤及高速公路、油站、停车场、公交等收费系统中。 V3.0以上的RF读写器比以往版本进行了如下增改: ●● 八位数码管显示 ●● 显示方式可为日期、时间、整数、小数 ●● 提供384个字节的EEPROM供用户存贮一些数据信息 技术指标 ●● 支持Mifare标准 ——发射频率: 13.56MHz ——访问卡速率: 106Kbit/s ●● 接口功能: RS232串行接口,RS485接口 ●● 波特率: 9600~115200bit/s,自动侦测 ●● 工作电源: RF-25、RF-100分别是DC5V±5%、DC12V±5% ●● 读写距离: RF-25、RF-100分别是25mm、100mm ●● 最大功耗: RF-25、RF-100分别是200mW、300mW ●● 环境温度: 0℃~50℃ ●● 相对湿度: 30%~95% ●● 重量: RF-25约200克;RF-100约600克(不包括天线) 设备操作 端口设置 可选串口1~4,通讯速率为9600~115200BPS。 读写器在通讯成功后,如要更换串口或波特率,请先断开连接,然后选择新的串口和波特率再重新连接即可,如果连接失败,请关掉读写器电源再打开。 参考函数: rf_init() 产品信息 包括软件版本号、硬件版本号和产品序列号。 进入系统后,自动显示演示软件版本号,并在连接成功后,读出硬件版本号和产品序列号。 参考函数: rf_get_status() rf_srd_snr() 蜂鸣器控制 读写器按输入值鸣响一段时间。 参考函数: rf_beep() 读写器端口 RF读写器有5个I/O端口,可控制信号的输入/输出。 控制字低5位(D4D3D2D1D0)的每一位控制一个端口,高3位(D7D6D5)无效,对应端口位置如下所示(读写器的正面向前,天线接口在左边): D0D1D2D3D4 天线●●●●●●●●●●开关 参考函数: rf_getport() rf_setport() 显示方式控制 显示方式分为计算机控制和读写器控制两种。 由计算机控制时,控制数据中每个字节的最高位(D7)取值决定该位数字后的小数点是否显示。 由读写器控制时,显示模式又分为日期模式和时间模式。 日期显示格式为“年-月-日”,时间显示格式为“时-分-秒”。 数码管的显示亮度可调节,有效范围为0~15。 参考函数: rf_ctl_mode() rf_disp_mode() rf_setbright() 备注操作 读写器提供384字节的EEPROM区,用户可写入任意数据。 参考函数: rf_srd_eeprom() rf_swr_eeprom() 参数设置 设置读写器和卡片通信的配置参数。 参考函数: rf_clr_control_bit()rf_clr_control_bit rf_clr_control_bit() rf_config() 装载密码 该功能将密码写入读写器中。 对于M1卡,每个扇区有三套密码,每套密码包括A密码和B密码,可以从组合框中选择一种认证模式。 对于ML卡,也有三套密码,每套密码包括A密码和B密码。 参考函数: rf_load_key() 数据操作 M1卡 每次读出4个扇区的内容,如有不能读出的块,则提示“部分扇区不能读取”,且相应扇区不显示任何内容;能读出的扇区,以十六进制显示卡中数据。 如果要修改卡片的数据,请先修改用户界面上的数据,然后按下<写入数据>,将用户输入的数据写入卡中。 ML卡 按下<读出数据>读出卡中所有单元的数据,如果要修改数据,直接在界面上修改,然后按下<写入数据>。 值操作 M1卡 可进行读值、初始化值、减值、加值操作。 参考函数: rf_initval() rf_readval() rf_increment() rf_decrement() ML卡 可进行读值、初始化值、减值操作。 参考函数: rf_initval_ml() rf_readval_ml() rf_decrement_ml() rf_decrement_transfer() 读写测试 将射频卡放在天线有效范围内,指定读/写地址,点击<开始操作>,系统对该卡进行连续的读/写操作,直至用户点取<终止操作>按钮为止。 同时将每个操作步骤调用的函数、操作结果及读出/写入的数据显示在列表框中。 VC调用16位或32位动态库的方法 (1)在.CPP中包含“MWRF**.H”头文件; (2)在工程文件中加入MWRF**.LIB文件。 WINDOWS16/32位动态库 我公司提供WINDOWS平台下的WINDOWS16位动态库和WINDOWS32动态库,文件名称如下: MWRF16\MWRF16.DLLWINDOWS16位动态库 \MWRF16.H16位动态库的头文件 \MWRF16.LIB16位动态库的输入库 MWRF32\MWRF32.DLLWINDOWS32位动态库 \MWRF32.H32位动态库的头文件 \MWRF32.LIB32位动态库的输入库 调用WINDOWS动态库的方法 基于WINDOWS平台的各种开发工具调用动态库的方法各不相同,详见如何调用动态库function_call。 WINDOWS16位和32位动态库与C语言函数库格式基本相同,它们的区别如下: 函数库 rf_initrf_init 返回值icdev 参数int C语言库 intrf_init( intport, longbaud); baud9600~115200 int int 16位库 intrf_init( intport, longbaud); baud9600~115200 int int 32位库 HANDLErf_init( _int16port, longbaud); baud9600~115200 HANDLE _int16 Mifarel卡特性简介 M1卡为8K位的非接触式IC卡。 电气特性 ●● 容量为8K位EEPrOM ●● 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位 ●● 每个扇区有独立的一组密码及访问控制 ●● 每张卡有唯一序列号,为32位 ●● 具有防冲突机制,支持多卡操作 ●● 无电源,自带天线,内含加密控制逻辑和通讯逻辑电路 ●● 工作温度: -20℃~50℃ ●● 工作频率: 13.56MHZ ●● 通信速率: 106KBPS ●● 读写距离: 10mm以内(与读写器有关) ●● 数据保存期为10年,可改写10万次,读不限次 存储结构 M1卡分为16个扇区,每个扇区4块(块0~3),共64块,按块号编址为0~63。 第0扇区的块0(即绝对地址0块)用于存放厂商代码,已经固化,不可更改。 其他各扇区的块0、块1、块2为数据块,用于存贮数据;块3为控制块,存放密码A、存取控制、密码B,其结构如下: A0A1A2A3A4A5FF078069B0B1B2B3B4B5 密码A(6字节)存取控制(4字节)密码B(6字节) 控制属性 每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。 在存取控制中每个块都有相应的三个控制位,定义如下: 块0: C10C20C30 块1: C11C21C31 块2: C12C22C32 块3: C13C23C33 三个控制位以正和反两种形式存在于存取控制字节中,决定了该块的访问权限(如进行减值操作必须验证KEYA,进行加值操作必须验证KEYB,等等)。 三个控制位在存取控制字节中的位置如下(字节9为备用字节,默认值为0x69): bit7 6
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能卡 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)