2023年12月11日发(作者:)
深圳市明华智能设备有限公司
RD接触IC卡读写器
ActiveX控件函数说明文档
第2.0版
摘 要 本文对RD-EB接触IC卡读写器ActiveX控件函数使用进行了说明。
关键词 RD-EB;IC卡;读写器;ActiveX控件;WEB:windows平台
作 者 胡伟俊
部 门 客服部
生效日期:
版本号:
1
概述.................................................................................................................................................. 4
1.1
1.2
1.3
1.4
运行环境 ................................................................................................................................. 4
硬件环境 ................................................................................................................................. 4
ACTIVEX控件说明 ................................................................................................................. 4
安装调试ACTIVEX控件 ........................................................................................................ 4
1.4.1
1.4.2
1.4.3
2
在WEB网页中调用MWReader控件 ........................................................................... 5
本地调试 ......................................................................................................................... 6
通过WEB服务器进行调试 ........................................................................................... 6
安全建议.......................................................................................................................................... 6
2.1
2.2
密钥保护措施 ......................................................................................................................... 6
数据防篡改 ............................................................................................................................. 6
3
ACTIVEX控件函数说明 .............................................................................................................. 7
3.1
设备操作函数组 ..................................................................................................................... 7
所有函数最后返回值 ..................................................................................................... 7
3.1.2
打开读卡器(串口) .......................................................................................................... 8
3.1.3
关闭读卡器(串口) .......................................................................................................... 8
3.1.4
控制设备蜂鸣器 ............................................................................................................. 8
3.1.5
4428卡从指定地址读数据 ................................................................................................ 8
3.1.6
4428卡从指定地址带保护位读数据 ................................................................................ 9
3.1.7
4428卡向指定地址写数据并保护 .................................................................................... 9
3.1.8
4428卡保护指定地址的数据 ............................................................................................ 9
3.1.9
4428卡核对卡密码 .......................................................................................................... 10
3.1.10
4428卡改写卡密码 ...................................................................................................... 10
3.1.11
4428读出卡密码 .......................................................................................................... 10
3.1.12
4428卡检查卡型是否正确 .......................................................................................... 10
3.1.13
4442
卡函数列表 ......................................................................................................... 10
3.1.14
加解密函数列表 ........................................................................................................... 11
3.1.15
24C系列函数列表 ....................................................................................................... 12
3.2
工具函数 ............................................................................................................................... 12
3.2.1
将16进制数转换为ASCII字符 ................................................................................. 12
3.2.2
将ASCII字符转换为16进制数 ................................................................................. 13
3.1.1
1 概述
1.1 运行环境
URD-EB接触IC卡读写器ActiveX控件()是针对我公司URD-EB接触IC卡读写器产品开发的ActiveX控件,为32位windows ActiveX控件,适用于Windows98/me/2000及 WindowsNT4.0以上平台,由基于WEB的二次开发者使用。
提供的文件有:
: MWReader控件文件
: WEB开发的DEMO程序
URD-EB通用读卡器ActiveX控件函数说明文档.doc:使用说明
: 简要说明
1.2 硬件环境
URD-EB接触IC卡读写器通过PC机USB接口与PC机通信,使用时根据读写器使用手册说明,将读写器与PC机USB接口连接。
1.3 ActiveX控件说明
ActiveX控件包含URD-EB接触IC读写器的设备操作函数、射频卡操作函数和智能卡函数组成,提供了WEB开发中的ActiveX控件函数接口,同时本文最后提供了用JavaScript脚本语言调用MWReader的方法,以及提供了常规读写器操作的示例。
MWREADER ActiveX控件的函数参数分为数字数据类型和字符串数据类型两种,由于WEB页面中脚本语言数据类型是弱类型,因此在调用之前需要转换为正确的数据类型后传递才可以使用。在向读取或者写射频卡的操作函数中,涉及到的16进制数据全部以待操作数据的16进制字符表现形式传递,在二次开发时需要将字符形式表示的16进制串转换为真正的二进制数据。大部分函数返回一个状态码(WEB中为字符串),状态码含义如下:
==0 正确;
<0 错误;
1.4 安装调试ActiveX控件
MWReader控件是自动安装并且自动注册的,在使用ActiveX控件之前首先设置IE浏览器的安全设置选项。打开IE浏览器,点菜单工具-Internet选项-安全-自定义级别,做以下设置:
“对没有标记为安全的ActiveX控件进行初始化和脚本运行”设置为“提示”;
“下载未签名的ActiveX控件”设置为“提示”;
如果没有设置上述两个选项,则IE采取高安全级别设置,会禁止MWReader下载运行。
1.4.1 在WEB网页中调用MWReader控件
参数: classid
Id
MWReader控件的CLASSID
8E06D862-4D98-11D7-A40B-5254AB51CC00 "
MWReader控件的实例变量,通过脚本语言访问
可以通过网页脚本语言JavaScript和VBScript引用变量id进行调用,执行MWReader控件的读卡器功能。
1.4.2 本地调试
在网页文件中放置标识后,会自动加载文件,并且自动进行注册。打开网页后,可能会经过IE的几个关于ActiveX控件的提示对话框,选择是即可。
如果在运行过程出现网页脚本语言错误,则说明控件没有注册成功,检查IE的安全设置后重新操作。
1.4.3 通过WEB服务器进行调试
当所有二次开发的WEB页面完成之后,将WEB页面程序放置到IIS服务器下,任何客户端机器都可以通过IE浏览器访问IIS服务器上的URD-EB读卡器的资源文件。客户端必须设置IE的安全选项,否则不能下载控件。客户端IE浏览器自动下载控件后,自动安装并且注册控件,便可以访问读卡器设备了。
2 安全建议
根据我公司多年从事IC卡行业项目经验,IC卡交易安全性是系统设计的重点;系统安全分为IC卡密钥保护和数据防篡改。系统基于WEB模式,所有的网页脚本和交易数据都是开放。建议密钥保护和数据安全管理方法。
2.1 密钥保护措施
在网页中用脚本调用控件方法计算IC卡密钥,把IC密钥明文暴露在网页中,非常危险。
基于IC卡密钥不能明文传递原则,网页脚本不能使用控件函数传递密钥。我公司设计密钥装载导入方法:
把PSAM卡计算IC卡密钥的流程,植入读写器主控制器中,算出的密钥值直接用于IC卡验证,不经过网页脚本导入设备,这样密钥不会被用户非法截获。
2.2 数据防篡改
数据在传输方式上有三种类型:明文方式、明文校验方式和密文校验方式。对以明文方式进行传输的数据由传输管理器直接送给命令处理模块。当数据以校验或密文校验方式传 输时需要加密运算器对数据做处理。
在网络上进行卡交易我们应采用明文校验方式或密文校验方式。用户在网页上输入交易数据ABC,先传送给服务器确认数据的合法性,服务器采用DES或3DES算法对数据增加校验码MAC后,回传终端,把数据ABC+MAC当作一个参数传递给控件校验,用Psam卡的密钥验证数据的合法性,再写入IC卡中。
服务器
ABC加密并增加校验码MAC
用户输入数据ABC
用户终端
ABC+MAC传递给控件,利用Psam卡密钥判断数据合法性,再写入IC卡
具体的实现方法要通过双方讨论实现,本文没有实现控件方法。
3 ActiveX控件函数说明
3.1 设备操作函数组
3.1.1 所有函数最后返回值
函数中的
BSTR databuff 参数说明;
ff 传入变量。
例.0xaf 数据应转化为字符串"AF"
0x12、0x13 0xed databuff数据应转化字符串"1213ed"
参数.应传入字符串长度。
3.变量传出。例.变量传出字符串1234fa 数据为0x12 0x34 0xfa
.传入的长度应为十六进制数据的长度。
属性:LastRet;
返回值:==0 正确。
<>0 错误。
3.1.2 打开读卡器(串口)
函数:MWic_init (short port, long baud)
参数:
port表示用于通信的PC机串口号,0到31分别代表串口1到32。
Baud 设备通讯波特率。
说明: 使用读写器前调用此函数打开串口并连接读写器,LastRet。
注:USB接口读写器,不关心port/Baud参数的设置。
3.1.3 关闭读卡器(串口)
函数: MWic_exit ()
返回值:LastRet;
说明: 该函数与打开读写器函数配套使用,用于关闭串口并断开读写器。
3.1.4 控制设备蜂鸣器
函数: MWdv_beep (short _msec)
参数: _msec: 蜂鸣时间,单位:毫秒
返回值:LastRet
3.1.5 4428卡从指定地址读数据
函数: BSTR * MWsrd_4428(short offset, short len);
参数: offset: 偏移地址,其值范围0~1023
len: 字符串长度,其值范围1~1024
return 读出字符串数据(ASCII)
<0 错误
3.1.6 4428卡从指定地址带保护位读数据
函数: BSTR* MWrdwpb_4428(short offset, short len, BSTR *databuff);
参数: offset: 偏移地址,其值范围0~1023
len: 字符串长度,其值范围1~1024
返回: databuff: 存放要读出的数据,其大小应为(2*len)*2
<0 错误
3.1.7 4428卡向指定地址写数据
函数: MWswr_4428 (short offset, short len, BSTR *databuff);
参数: offset: 偏移地址,范围0~1023
len: 字符串长度,范围1~1024
databuff: ASCII存放要写入的数据
返回: <0 错误
=0 正确
3.1.8 4428卡向指定地址写数据并保护
函数: MWwrwpb_4428(short offset, short len, BSTR *databuff);
参数: offset: 偏移地址,范围0~1023
len: 字符串长度,范围1~1024
databuff: ASCII存放要写入并加保护的数据
返回: <0 错误
=0 正确
3.1.9 4428卡保护指定地址的数据
函数: MWpwr_4428(short offset, short len, BSTR *databuff);
参数: offset: 偏移地址,其值范围0~1023
len: 字符串长度,其值范围1~1024
databuff: ASCII字符串保护数据,必须和卡中已存在的数据一致
返回: <0 错误
=0 正确
3.1.10 4428卡核对卡密码
函数: MWcsc_4428(short len, BSTR *databuff);
参数: len: 密码个数,其值为4
databuff: 密码字符串指针
返回: return 0;--ok
return <0;--error;
3.1.11 4428卡改写卡密码
函数: MWwsc_4428(short len, BSTR *databuff);
参数: len: 密码个数,其值为4
databuff: 新密码地址指针
返回: return <0;--error;
3.1.12 4428读出卡密码
函数: BSTR * MWrsc_4428(short len);
参数: len: 密码个数,其值为4
返回: 读出密码databuff(ASCII)
return <0;--error;
3.1.13 4428卡检查卡型是否正确
函数: MWchk_4428();
返回: return 0;--ok
return <0;--error;
3.1.14 4442 卡函数列表
1、从指定地址读数据
BSTR * MWsrd_4442(short offset, short len);
返回: return 0: --ok
return <>0:--error;
2、读保护位
BSTR *MWprd_4442(short offset, short len);
返回: return 0: --ok
return <>0:--error;
3、向指定地址写数据
MWswr_4442(short offset, short len, BSTR *databuff);
返回: return 0: --ok
return <>0:--error;
4、保护指定地址的数据
MWpwr_4442(short offset, short len, BSTR *databuff);
返回: return 0: --ok
return <>0:--error;
5、读出密码错误计数器值
MWcsc_4442(short *counter);
返回: return 0: --ok
return <>0:--error;
6、核对卡密码
MWcsc_4442(short len, BSTR *databuff);
参数: len: 密码个数,其值为6
databuff: 密码字符串指针
返回: return 0;--ok
return <0;--error;
7、改写卡密码
MWwsc_4442(short len, BSTR *databuff);
参数: len: 密码个数,其值为6
databuff: 密码字符串指针
返回: return 0;--ok
return <0;--error;
8、读出卡密码
BSTR *MWrsc_4442(short len);
返回: return 0: --ok
return <>0:--error;
9、检查卡型是否正确
MWchk_4442();
返回: return 0: --ok
return <>0:--error;
3.1.15 加解密函数列表
MWDES_Encrypt(BSTR *Key, short KeyLen, BSTR *Source, short SrcLen, BSTR *Result,short
*ResultLen)
return 0;
MWDES_Decrypt(BSTR *Key, short KeyLen, BSTR *Source, short SrcLen, BSTR *Result,short
*ResultLen)
return 0;
3.1.16 24C系列函数列表
_24c64()
return 0;--ok
return <0;--error;
_24c64(short offset, short len, BSTR *databuf)
return 0;--ok
return <0;--error;
_24c64(short offset, short len, BSTR *databuff)
return 0;--ok
return <0;--error;
3.2 工具函数
3.2.1 将16进制数转换为ASCII字符
BSTR* MWhex_asc(BSTR *hex, unsigned char hexlen, BSTR *asc)
功 能: 将16进制数转换为ASCII字符。
参 数:
hex: 16进制数
hexlen: 16进制数的长度
返 回: 转换后的字符串
LastRet <0 失败
例: unsigned char source[] = {0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};
char dest[17];
int st=0;
memset(dest, 0, 17);
dest= MWhex_asc (source, 8); // the dest value is “67788”.
3.2.2 将ASCII字符转换为16进制数
BSTR* MWasc_hex(BSTR *asc, unsigned char asclen)
功 能: 将ASCII字符转换为16进制数。
参 数:
asc : ASCII字符
ascLen: ASCII字符的长度
返 回: hex 转换后的十六进制
<0 失败
例: char source[] = {a,0,a,1,a,2,a,3,a,4,a,5};
unsigned char dest[7];
int st = 0;
memset(dest, 0, 7);
// the dest value is {0xa0,0xa1,0xa2,0xa3,0xa4,0xa5}.
dest= MWasc_hex (source, 12);


发布评论