智能卡实验Word文档格式.docx
- 文档编号:6375488
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:28
- 大小:27.74KB
智能卡实验Word文档格式.docx
《智能卡实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《智能卡实验Word文档格式.docx(28页珍藏版)》请在冰点文库上搜索。
卡座类型
放置方式
RD通用读写器
串并两用
各种存储器卡
自弹式
推推式
推拨式
内置式
外置式
CPU卡专用读写器
CPU卡
存储器卡专用读写器
串并选一
用户定制卡型
MIX混合读写器
建立连接
初次运行系统时,系统按自动测试方式建立连接,并将成功连接的参数保存在系统文件中。
下次运行时系统将自动按保存的参数建立连接。
系统建立连接成功,则在提示信息中显示当前连接方式。
例如,“当前接口:
串口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
用户密码核对正确后,可读,可更改
核对正确后不可读,但可更改
(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及加密逻辑、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"
string.h"
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)
cpu_reseterr\n"
);
\n\nReset:
"
for(st=0;
st<
200;
st++)
if((icRead[st]==0xff)&
&
(icRead[st+1]==0xff)&
(icRead[st+2]==0xff))
break;
%02X"
icRead[st]);
\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
8;
icWrite[8]=icWrite[8]^icWrite[st];
if(cpu_protocol(icdev,9,icWrite,icRead)!
transfererr/n"
nad:
%02X\n"
icRead[0]);
pcb:
icRead[1]);
len:
%d\n"
icRead[2]);
SW1SW2:
%02X%02X\n"
icRead[icRead[2]+1],icRead[icRead[2]+2]);
Data:
icRead[2]-2;
icRead[st+3]);
\n"
设备特性
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卡
按下<
读出数据>
读出卡中所有单元的数据,如果要修改数据,直接在界面上修改,然后按下<
。
值操作
可进行读值、初始化值、减值、加值操作。
rf_initval()
rf_readval()
rf_increment()
rf_decrement()
可进行读值、初始化值、减值操作。
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
16位库
32位库
HANDLErf_init(
_int16port,
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文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能卡 实验