9000 正常 成功执行
6200 警告 信息未提供
6281 警告 回送数据可能出错
6282 警告 文件长度小于Le
6283 警告 选中的文件无效
6284 警告 FCI格式与P2指定的不符
6300 警告 认证失败
63Cx 警告 PIN校验失败(X表示允许重试次数)
6400 出错 状态标志位没有变
6581 出错 内存失败
6700 出错 Lc错误
6881 出错 不支持逻辑通道
6882 出错 不支持安全报文
6884 出错 不支持命令链
6901 出错 (命令不接受)无效状态(如卡已锁定,MF未建立)
6981 出错 命令与文件结构不相容,当前文件非所需文件
6982 出错 操作条件(AC)不满足,没有校验PIN
6983 出错 认证方法锁定,PIN被锁定
6984 出错 随机数无效,引用的数据无效
6985 出错 使用条件不满足
6986 出错 不满足命令执行条件(不允许的命令,INS有错)
6987 出错 MAC丢失
6988 出错 MAC不正确
698D 保留
6A80 出错 数据域参数不正确
6A81 出错 功能不支持;创建不允许;目录无效;应用锁定
6A82 出错 该文件未找到
6A83 出错 该记录未找到
6A84 出错 文件预留空间不足
6A86 出错 P1或P2不正确
6A88 出错 引用数据未找到
6B00 出错 参数错误
6Cxx 出错 Le长度错误,实际长度是xx
6E00 出错 不支持的类:CLA有错
6F00 出错 数据无效
6D00 出错 不支持的指令代码
9301 出错 资金不足
9302 出错 MAC无效
9303 出错 应用被永久锁定
9401 出错 交易金额不足
9402 出错 交易计数器达到最大值
9403 出错 密钥索引不支持
9406 出错 所需MAC不可用
6900 出错 不能处理
6901 出错 命令不接受(无效状态)
61xx 正常 需发GET RESPONSE命令
6600 出错 接收通讯超时
6601 出错 接收字符奇偶错
6602 出错 校验和不对
6603 警告 当前DF文件无FCI
6604 警告 当前DF下无SF或KF
---------------------
APDU= ApplicationProtocol data unit, 是智能卡与智能卡读卡器之间传送的信息单元, (给智能卡发送的命令)指令(ISO 7816-4规范有定义) CLA INS P1 P2 Lc Data Le
其中CLA为指令类别;INS为指令码;P1、P2为参数;Lc为Data的长度;Le为希望响应时回答的数据字节数,0表最大可能长度。
00A4040000:发送一个空的选择命令,获取卡和主安全域的信息。00A40400是select选择对应的CLA,INS,P1和P2,后面2位是发送的文件名的长度。此命令使用文件名或应用标示符来选择IC卡内DF(专用文件)或EF(基本文件)。
80此命令创建卡片文件系统,80CA9F7F00:获取CPLC信息。8050XXXXX: 双向认证并建立会话密钥。
非接触CPU卡应该支持以下与应用无关的常用指令命令:
编号
指令
指令类别
指令码
功能描述
APPLICATION UNBLOCK
84
18
应用解锁
APPLICATION BLOCK
84
1E
应用锁定
CARD BLOCK
84
16
卡片锁定
EXTERNAL AUTHENTICATE
00
82
外部认证
GET CHALLENGE
00
84
取随机数
INTERNAL AUTHENTICATE
00
88
内部认证
PIN UNBLOCK
84
24
个人密码解锁
READ BINARY
00
B0
读二进制文件内容
READ RECORD
00
B2
读记录文件指定内容
SELECT
00
A4
选择文件
UPDATE BINARY
00/04
D6
写二进制文件
UPDATE RECORD
00/04
DC
写记录文件
VERIFY
00
20
验证口令
编号
指令
指令类别
指令码
功能描述
CHANGE/PIN RELOAD
80
5E
重装/修改个人密码
CREDIT FOR LOAD
80
52
圈存
DEBIT FOR PURCHASE/
CASE WITHDRAW/UNLOAD
80
54
消费/取现/圈提
GET BALANCE
80
5C
读余额
GET TRANSCATION PROVE
80
5A
取交易认证
INITIALIZE FOR XXX
80
50
初始化XXX交易
UNBLOCK
80
2C
解锁被锁住的口令
UPDATE OVERDRAW LIMIT
80
58
修改透支限额
外部认证这块还是记一下吧。
1、选择IC卡MF目录 00A4 0000 02 3F00 00
2、给IC卡发送命令取随机数 0084000008 获取8位随机数1
3、选择PSAM卡MF目录 00A4000002 3F00 00
4、选择PSAM卡应用目录 00A4000002 1001 00
5、PSAM卡初始化DES加密 801A 27 01 08 8位IC卡序列号
6、PSAM卡DES加密 80FA 00 00 08 8位随机数1
7、IC卡外部认证 0082 0001 08 8位随机数1
这是之前刷卡设备的认证步骤,卡的结构已经建立好了,现在用的是FM1216空卡,
而且我在数据手册上也未找到SAM卡的DES加密指令,这就尴尬了,怎么进行外部认证?
幸好是用的C#做PC端开发,有DES加密接口,空卡默认密钥是8个0xFF,那么直接用程序计算吧。。。
结果竟然认证通过了。。。
下面说下步骤
1、选择IC卡MF目录
2、给IC卡发送取8字节随机数命令
3、使用8个0xFF做密钥,8字节随机数做加密源用C#的系统API进行DES加密
4、将加密后的8字节随机数使用外部认证命令发送到IC卡,验证通过。
这里要说下C#里面DES加密是不允许弱密钥的,8个字节的0xFF会被视为弱密钥报警编译不通过,通过上网查找可通过反射进行强行加密解密
---------------------
1、选择IC卡MF目录 00A4 0000 02 3F00 00
2、选择IC卡应用目录
3、读取IC卡公共信息基本文件
4、获取IC卡的应用序列号
3、给IC卡发送命令取随机数 0084000008 获取8位随机数1
4、选择PSAM卡MF目录 00A4000002 3F00 00
5、选择PSAM卡应用目录 00A4000002 1001 00
6、PSAM卡初始化DES加密 801A 27 01 08 8位IC卡序列号(这个序号根据更应用不同定制不同,我这里用的是序列号做散数,看IC卡怎么来计算了,最终其实就是跟IC卡得出来的数比较一下就是了)
7、PSAM卡DES加密 80FA 00 00 08 8位随机数1 这时候会返回8位数据,叫DA吧
8、IC卡外部认证 0082 0001 08 8位数据DA,到此外部认证完成。