CPU卡的一个发卡详细过程

9 篇文章 1 订阅

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\xF0\x11\x55\x6D\x57\xAB\xAE\x5B\xFE\x1C\xBA\x76\x4E\xD3\x02\x9E\x9E

\xDF\xF7

9.建立005文件并选择005
建立二进制文件0005
memcpy(sendbuff, “\x80\xE0\x00\x05\x07\x28\x00\x20\xF0\x11\xFF\xFF”, clen);
//空间大小
sendbuff[6] = (Len >> 8);
sendbuff[7] = Len;

选择二进制文件0005 \x00\xA4\x00\x00\x02\x00\x05

10.写数据到卡
Pack = (Len / 0xb0);
Surplus = (Len % 0xb0);
for(i = 0; i < Pack; i++)
{
memset(sendbuff, ‘\0’, sizeof(sendbuff));
memcpy(sendbuff, “\x00\xD6\x00\x00\xb0”, clen);
//偏移位置
Pos = (0xb0 * i);
sendbuff[2] = (unsigned char)(Pos >> 8);
sendbuff[3] = (unsigned char)Pos;
memcpy(&sendbuff[clen], &Temp[i * 0xb0], 0xb0);
clen += 0xb0;
}
if(Surplus != 0)
{
memcpy(sendbuff, “\x00\xD6\x00\x00\xFF”, clen);
sendbuff[4] = (unsigned char)Surplus;
//偏移位置
Pos = (0xb0 * i);
sendbuff[2] = (unsigned char)(Pos >> 8);
sendbuff[3] = (unsigned char)Pos;
memcpy(&sendbuff[clen], &Temp[i * 0xb0], Surplus);
clen += 0xb0;
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值