1.第一步:清除卡片的目录和文件 (白卡一张)
// 清除卡片
00A4 000002 3F00//选择主目录3F00 默认的目录就是 3F00
0084 000004 //获取随机数
0082 000008 2BB6CF0B4E32DBB2 //外部认证 密钥= FFFFFFFFFFFFFFFF, 源数据= 随机数+00000000, des加密后结果 848BB566915C1F00
800E 000000 //擦除卡片 清空根目录里面所有目录和文件
2. 写文件(发卡流程) 创建目录和创建文件,写数据到文件中
00A4 000002 3F00//选择主目录3F00
80E0 0000 07 3F 00B0 01F0 FFFF //建立主目录3F00下密钥文件
80D4 01000D F9F0 F0 AA 88 FFFFFFFFFFFFFFFF//写入主目录3F00下外部认证密钥
80E0 3F010D 380FFF F0FA95FFFF 4144463031//创建ADF文件
00A4 000002 3F01 //选择应用目录3F01 或者用另一种方式点名 00A4 040005 4144463031
80E0 000007 3F01 0095FAFFFF //建立ADF3F01目录下密钥文件:
80D4 01000D F9F0 F0 AA 88 FFFFFFFFFFFFFFFF//写入3F00目录下外部认证密钥
80E0 000307 28 0400 FA FA FFFF//建立应用目录下二进制文件
00D6 000002 01e0 // 写入480字节数据
00D6 0002f06964223A32392C2265736E223A2237313830303530353330222C226361726454797065223A2231222C2262617463684E6F223A2231363235343439323135383838222C22636F6465223A2247313431303237313937363033313431363332222C226E616D65223A22E4BBBBE6988EE8AF9A222C22736578436F6465223A2231222C22696454797065223A2231222C2269644E6F223A22313431303237313937363033313431363332222C227363686F6F6C4E616D65223A22E6ADA6E6B189E5B882E7ACACE58D81E59B9BE4B8ADE5ADA6222C227363686F6F6C436F6465223A2233343432303030303930222C22656475
00d600f2F0537461727454696D65223A22323032312D30372D30352030303A30303A3030222C22656475456E6454696D65223A22323032372D30372D30342030303A30303A3030222C226E6574776F726B537461727454696D65223A22323032312D30372D30352030303A30303A3030222C226E6574776F726B456E6454696D65223A22323032372D30372D30342030303A30303A3030222C227369676E43657274223A224D494943426A43434161756741774942416749464151434B4F774577444159494B6F45637A31554267335546414441644D517377435159445651514745774A44546A454F4D4177474131554541777746
3. 读取文件内容(读卡)
00A4 000002 3F01//选择应用目录3F01
0084 000004 //获取随机数
0082 000008 6CDB72D3FDCDB2B7//外部认证
00B0 830002 // 读取文件内容的总长度
00B0 8302f0 // 从第2个字节 开始读取 240字节的长度
00B0 83F2f0 // 从第242个字节 开始读取 240字节的长度
说明:100 高位 00011 低位
10000011 转为 16进制 83
83 转为 二进制 10000011 //选择二进制文件03 文件标识在 0000-1111 1-31
// 如果创建 的二进制是 80E0 000407 28 0400 FA FA FFFF//建立应用目录下二进制文件 FA 读写都是这个权限
// 那么就用 84 来读取 内容 00B0 840002 其他按递增来读取
流程就完毕了, 现在来解说一下上面的指令
- 创建密钥文件命令: 80E0 000007 3F00 0100FAFFFF
| 指令 | 说明 |
|---|---|
| 80E0 | 指令类别和指令码 |
| 0000 | 文件标识 |
| 07 | 长度 |
| 3F | 文件类型, 为密钥文件 |
| 00B0 | 文件空间大小 |
| 01F0 | 01 读权限 F0 写权限 |
后续状态
这就需要密钥来验证啦,只要密钥验证通过后就会改变安全状态值,好像是有点道 理,那么问题又来了,我这个安全状态值在哪里写入啊?答案是你在装载密钥时写入 的,有一个述语叫做“后续状态”的就是了,意思就是你在验证密钥通过后的安全状 态,简称后续状态。
1.写入密钥 后续状态是AA
80D4 01000D F9F0 F0 AA 88 FFFFFFFFFFFFFFFF
2.创建文件的读写权限 是 FA
80E0 000307 28 0400 FA FA FFFF
那么验证外部认证后 后续状态 A, 然后去读写文件,发现 后续状态是 A,那么就验证通过。