首页 > 其他分享 >4.操作卡片和OBU的指令以及流程

4.操作卡片和OBU的指令以及流程

时间:2023-09-25 22:46:34浏览次数:33  
标签:文件 字节 卡片 IC卡 信息 指令 随机数 OBU

 用户卡认证命令流

1、获取随机数:0084000004
 
2、进入1001目录:00A40000021001
 
3、读15文件:00B095002B
 
4、计算mac:00880201 + 10(1字节数据长度) + 16字节摘要码

操作IC卡片(读15文件,卡基本信息)

1、选1001:00A4 000002 1001
 
2、读15文件:00B095002B

操作IC卡片(写15文件,卡基本信息) 

1、选3F00:00A40000023F00
 
2、选1001目录:00A40000021001
 
3、取随机数:0084000004(04代表去4字节随机数) 
 
4、写15文件:"04D69500"+len+data+Mac2 
 
        04D6:写文件命令头
 
        95:文件短文件标识符
 
        00:起始地址
 
        len:后面数据长度(data+mac的长度)
    
        data:写入数据内容
 
        Mac2:
 
注:Mac2的计算:调用getMAC2()方法计算 --- Mac的计算和数据的加密的方法都在DesMac

操作IC卡片(读16文件,持卡人信息) 

1、选3F00:00A40000023F00
 
2、读16文件:00B0960037

操作IC卡片(写16文件,持卡人信息)

1、选3F00:00A40000023F00
 
2、取随机数:0084000004(04代表去4字节随机数) 
 
3、写16文件:"04D69600"+len+data+Mac
 
        04D6:写文件命令头
 
        96:文件短文件标识符
 
        00:起始地址
 
        len:后面数据长度(data+mac的长度)
 
        data:写入数据内容
    
        Mac:4字节
 
注:Mac2的计算:调用getMAC2()方法计算。

操作IC卡片(圈存)

1、选1001:00A40000021001
 
2、读15文件:00B095002B
 
3、验PIN码:00200000+PIN码的len+PIN码 (例如:0020000003888888、0020000006313233343536)
 
4、圈存初始化(获取MAC1):805000+交易类型("01"或"02")+0B(后面数据长度)+秘钥索引(1字节)
                        +交易金额(4字节)+终端机编号(6字节)
 
    交易类型:ED:电子存折(01)
 
             EP:电子钱包(02)
 
    圈存初始化响应报文如表30
 
5、计算MAC2(4字节):调用CalCreditForLoadCheckMac1AndMac2()方法计算MAC2
 
6、圈存写卡:805200000B+交易日期(4字节)+交易时间(3字节)+MAC2(4字节)

操作IC卡片(消费)

1、选1001:00A40000021001
 
2、读15文件: 00B095002B
 
3、读19文件:00B201CC2B
 
4、消费初始化:805001+交易类型("01"或"02")+0B(后面数据长度)+秘钥索引(1字节)
                +交易金额(4字节)+终端机编号(6字节)
 
    交易类型:ED:电子存折(01)
 
             EP:电子钱包(02)
 
    消费初始化响应报文如表34
 
5、计算MAC2(4字节):调用CalConsumptionForLoadCheckMac1AndMac2()方法计算MAC1
 
6、消费写卡:805401000F+终端交易序号(4字节)+交易日期(4字节)+交易时间(3字节)+MAC1(4字节)

操作IC卡片(读18文件,终端交易记录文件)

1、选1001:00A40000021001
 
2、验PIN:00200000+PIN码的len+PIN码 (例如 0020000003888888)
 
3、读18文件的第一条:00B201C417

操作IC卡片读(19文件,复合消费文件)

1、选1001:00A40000021001
 
2、读19文件的第一条:00B201CC2B

操作IC卡片(读余额)

1、选1001:00A40000021001
 
2、读余额:805C000204

操作OBU(读系统该信息)

1、选3F00:00A40000023F00
 
2、读EF01文件:00B081001B --- 返回27字节系统信息

操作OBU(写OBU的系统信息)

1、选3F00:00A40000023F00
 
2、读 EF01文件:00B081001B --- 返回27字节系统信息
 
3、取随机数:0084000004(04代表去4字节随机数) 
 
4、写OBU的系统信息文件:04D681120D+9字节系统信息+4字节Mac
 
        eg:04D681120D + 202101212031012101 + 33DCB68D
 
        04D6:写文件命令头
 
        81:文件短文件标识符
 
        12:偏移量(10进制的18)
 
        0D:后面数据长度
 
注:4字节MAC的计算:调用getMAC2()方法计算,或者使用psam发送指令计算

操作OBU(读OBU车辆信息)

1、选3F00:00A40000023F00
 
2、读EF01文件:00B081001B --- 返回27字节系统信息
 
3、选DF01目录:00A4000002DF01
 
4、取随机数:0084000008(08代表取8字节随机数) 
 
5、读车辆信息:00B400000A+8字节随机数+3B(读取车辆文件长度=59字节) +00(密钥版本:00--非国密,41--国密)
    
   注:返回读车辆信息文件是密文
 
6、调用“解密OBU车辆信息接口”将密文传给后台解密即可

操作OBU(写OBU车辆信息)

1、选3F00:00A40000023F00
 
2、读EF01文件:00B081001B --- 返回27字节系统信息
 
3、选DF01目录:00A4000002DF01
 
4、取随机数:0084000004(04代表取4字节随机数) 
 
5、写OBU的车辆信息文件:04D681003F + 59字节车辆信息 + 4字节Mac
 
eg:04D681003F + BEA94A4C39353237000000000000010100140F0F040203E8000004000000000000000000000000000000010000000000000000000000000000000B + A50E2242
 
        04D6:写文件命令头
    
        81:文件短文件标识符
 
        00:起始地址
 
        3F:后面数据长度
 
注:4字节MAC的计算:调用getMAC2()方法计算

操作OBU(激活OBU)

1、选3F00:00A40000023F00。
 
2、读EF01文件:00B081001B --- 返回27字节系统信息
 
3、取随机数:0084000004(04代表去4字节随机数,随机数即广西接口中的初始化向量)
 
4、调用getMAC2()方法
 
5、写OBU:04D6811A05+01(系统信息的第27字节为拆卸状态:01-已激活,00-未激活)+4字节Mac
 
        04D6:写文件命令头
 
        81:文件短文件标识符,标识EF01文件
 
        1A:起始地址,也可以叫偏移长度1A=26,也就是从第27字节开始写
 
        05:后面数据长度

操作PSAM卡(PSAM卡认证命令流)

1、选DF02目录:00A4000002DF02
 
2、秘钥分散:801A280208 + 8字节卡序列号
 
3、计算mac:80FA0500 + 20(1字节数据长度) + 0000000000000000 + 16字节摘要码 + 8000000000000000
    
    注:数据长度必须是8的倍数

 

标签:文件,字节,卡片,IC卡,信息,指令,随机数,OBU
From: https://www.cnblogs.com/icaowu/p/17729042.html

相关文章

  • 1、OBU-ESAM文件相关
       系统信息MF-EF01 车辆信息(客车)DF01-EF01  车辆信息(货车) DF01-EF01 04D6/00D6写二进制文件 (写系统信息)写系统信息的前提是进了EF01目录04D6811A050153D4A58B04D6命令字81P1通过SFI方式访问1AP2文件起始地址(第26字节)05长度......
  • 论关于命令行窗口“cmd”常用指令&&指令大全
    时间:2023-09-25CMD全称“command”,即命令提示符,是内置在windows图形操作系统内的磁盘操作系统,通过CMD可以方便用户查询比较复杂的信息或快速查找实现某些功能等,比如说打开文件、系统设置等操作,如果可以熟练使用的话,能够大大的提高使用电脑的效率。命令行窗口,又称......
  • 19-内置指令
    目前为止,我们学过的指令:v-bind:单向绑定解析表达式,可以简写为 :xxxv-model:双向数据绑定v-for:遍历数组/对象/字符串v-on:绑定事件监听,可以简写为@v-if:条件渲染(动态控制节点是否存在)v-else:条件渲染(动态控制节点是否存在)v-show:条件渲染(动态控制节点是否展示) v-text指......
  • Vue3 基础 – 快速上手 & 常用指令
    1.在HTML网页中使用vue3的3个基本步骤a.通过 script 标签的 src 属性,在当前网页中全局引入vue3的脚本文件:<scriptsrc="https://unpkg.com/vue@3/dist/vue.global.js"></script>b.创建vue3的单页面应用程序实例://2.1从Vue对象中解构出createApp函数const{cre......
  • 学习服务卡片事件能力
    【本文正在参加2023「盲盒」+码有奖征文活动】,活动链接https://ost.51cto.com/posts/25284简要介绍ArkTS卡片内部和提供方应用间的交互,可以通过在卡片一端调用postCardAction来实现,当前支持router、message和call三种类型的事件。我们根据实际应用分别从五个方面简单学习一下......
  • Gitlab 提交指令
    提交代码:将拉取的代码修改后,将修改部分的代码先推到自己的仓库,然后推到远程分支上面。常用指令gitstatus查看仓库当前的状态,显示有变更的文件。gitadd+文件名添加文件到暂存区。gitcommit-s提交暂存区到本地仓库。//需要添加解释“对HSE兼容调试做解释”(第一次执行时,......
  • gdb的基本指令
    1、gdb的简介​ GDB全称"GNUsymbolicdebugger",它诞生于GNU计划(gcc也同样诞生于该计划),是Linux下常用的程序调试器,其通常以gdb命令的形式在终端中使用。2、启用GDB调试​ 在使用GDB调试某个程序之前,需要对程序进行编译,并且需要在编译时加上编译选项-g,否则程序是不包含调试信......
  • 3D打印进阶之230个3D打印Gcode指令以及释义 + 在开发工具VScode中配置Gcode指令提示
    Gcode指令以及释义"G0":"快速移动,用于快速移动到指定位置,在使用该命令之前,要考虑其移动的直线路径上是否有障碍物","G1":"运动。F:喷嘴最大移动速度,单位为mm/min;E:控制挤出机给丝量,即输入丝材的长度,单位mm,也可控制回抽。与M82(绝对挤出)/M83(相对)命令配合",......
  • Elasticsearch 常用指令
    Elasticsearch常用指令查询所有节点$curl'http://127.0.0.1:9200/_cat/nodes'192.168.31.127496102.162.112.03dilmrt*node-1查询集群状态$curl-k'http://127.0.0.1:9200/_cluster/health?pretty'{"cluster_name":"docker-clus......
  • MySQL 基础指令
    MySQL基础指令参考文档:MySQL官网MySQL::MySQL8.0参考手册数据结构可视化创建数据库CREATEDATABASE<数据库名>;切换数据库USE<数据库名>;创建表CREATETABLEIFNOTEXISTS`request_record_info`( `id`BIGINTAUTO_INCREMENT......