1.CPU卡发卡流程
2.dc_request 响应
3.dc_anticoll 防冲突
4.dc_select 选择
5.dc_pro_resethex 复位
6.数据加密码 利用复位返回的数据,加密要写到卡里面的数据
key memcpy(&Key[0], &recbuff[0], 8); memcpy(&Key[8], &recbuff[24], 8);
加密key获得ExpKey ExpandKey((unsigned char*)Key, ExpKey);
把要写到卡里面的数据按照每16字节,用ExpKey 进行加密,计算得到要加密后的数据
7.3DES并进行外部认证
获取随机数 \x00\x84\x00\x00\x08 返回8字节随机数
软件3DES 加密随机数 获取8字节加密数据 加密密钥16字节 \xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
\xFF\xFF\xFF\xFF\xFF
外部认证 \x00\x82\x00\x00\x08 + 8字节加密后的随机数
删除MF \x80\x0E\x00\x00\x00
选择主文件MF \x00\xA4\x00\x00\x02\x3F\0x00
8.创建密码文件并注入密码
建立key文件 \x80\xE0\x00\x00\x07\x3F\x00\x80\x00\xF0\xFF\xFF
写入00号主控密码 \x80\xD4\x01\x00\x15\x39\xF0\xF0\xAA\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF
\xFF\xFF
写入01号主控密码 \x80\xD4\x01\x01\x15\x39\xF0\xF