发卡行圈存脚本是如何生成的
如何 生成 脚本
2023-09-27 14:28:31 时间
转载请注明出处
http://blog.csdn.net/pony_maggie/article/details/39780825
作者:小马
1 圈存1000元
2 第一货币9F79
3 卡片子密钥:4F343BCB34859BD58FFED96EE0D09BA4
4 当笔交易的应用密文(tag 9F26):36C32B02876030D1
5 当笔交易的交易计数器(tag 9F36):0005
首先明确是put data命令,
这样一个不带MAC的脚本应该可以形成:
04DA9F790A000000100000XXXXXXXX
MAC如何计算呢?
第一步,得到MAC卡片子密钥:
4F343BCB34859BD58FFED96EE0D09BA4
如果得到的是发卡行主密钥MDK-MAC,需要联合卡号以及卡片序列号分散成卡片子密钥,具体步骤参见安全规范11.1.4部分。这里不再详述。
第二步,计算过程密钥
需要ATC值, 左补0得到左半部分输入数据:
ZL = 0000000000000005
与FFFF导或并左补0,得到右半部分输入数据:
ZR = 000000000000FFFA
用工具分散得到过程密钥:
2E4D818E14CAE2348FA5E820A8A5E65E
注意到上图,我并没有按照规范分别对左右部分8字节计算,也可以合成16字节一起算,但要注意一定要选择ECB模式。
第三步,组织脚本命令的输入数据, 下列数据按顺序排列得到一个数据块D:
——CLA、INS、P1、P2 和Lc(Lc 的长度包括MAC 的长度);
——ATC(对于发卡行脚本处理,此ATC 在请求中报文中上送);
——应用密文(对于发卡行脚本处理,此应用密文通常是ARQC,或AAC,在请求报文中上送);
——命令数据域中的明文或密文数据(如果存在)。
如果最终的数据不是8的整数倍,就补80 00 ...., 得到输入数据:
04DA9F790A000536C32B02876030D1000000100000800000
用工具计算MAC
得到最终下发的脚本命令:
04DA9F790A0000001000009C612F54
相关文章
- 我是如何对网站CSS进行架构的
- PHP如何生成大数组「考虑内存」
- Google Earth Engine(GEE)——如何替换掉GEE中函数默认给你生成的波段名称(regexpRename函数)
- 如何将单元测试、Linting 和持续集成集成到您的 Python 项目中(万字长文)
- 科技云报道:2022年,企业级科技将如何重塑世界新面貌?
- Allegro如何快速清除多余的规则设置操作指导
- Allegro如何实现交换functions操作详细指导
- 如何使用LibreOffice把DOCX,DOC,RTF,ODT转换成PDF
- 如何在 Ubuntu 上使用 Grafana 监控 Docker
- git如何生成单个文件的补丁
- Xamarin如何生成Android项目的APK
- android如何让service不被杀死
- 在 MacOS 上安装 Stable Diffusion ,如何免费生成 AI 图像的分步指南
- SwiftUI AI教程之 在 SwiftUI 应用程序中使用 RealityKit 生成 3D 文本,如何在您的增强现实应用程序中添加 3D 文本
- Python开发区块链之02如何生成private key 与 public key
- 如何在SQLServer中处理每天四亿三千万记录
- 【HMS Core】华为登录后返回错误码 8 、账号服务如何授权、推送服务端获取用户信息异常
- 使用华为应用签名服务后,如何生成SHA-1和MD5证书指纹
- 如何使用SVG生成超酷的页面预加载素描动画效果
- 一场百万级别的电子盛事是如何造就的?
- windows-如何生成转储(dmp)文件--工具篇