M1卡破解


使用ACR-122U积累了几个.dump文件后,尝试破译M1校验码。


原理

分别将几次消费后的数据 dump 出,统计金额和数据的变化规律,找到所有扇区的含义,修改金额字段的数据。

初期准备

使用软件dump出克隆卡的数据

开始破解

分析导出的Dump文件

将原卡数据与克隆卡消费后的数据进行对比

无明显规律性变化,于是使用在线进制转换化为10进制,发现3106正对应着余额125.50元。

确定金额已经正确分析出来,接下来需要破译校验码规则,在记事本中比对后续数据:

尝试十六进制加减运算等常规校验方式失败,姓名等信息通过字符编码转换亦无对应项,暂时搁置。

几天后,将200.dump、61.dump对比发现,仅3扇区数据发生变化,于是改为破译这6处数值变化。

同样使用记事本记录,未发现规律。

重新打开125.5.dump和147.5.dump,将4个文件第三扇区内容进行对比

1
2
3
4
0017D4FFE82B0001F406270000490169
004E20FFB1DF0001F4062700004A016A
003106FFCEF9001D1A041000004F059C
00399EFFC66100148204180000500605

发现规律

FF后两项数值即校验码,余额校验算法如图

末两项数值不知用处。

修改尝试

修改余额400.0,转换十六进制:9C 40

修改校验码:63 BF

修改末两项数值:4C 6C

刷卡成功,消费9元,dump刷卡后数据,对比原文件,新增10处改动。

0425为当天日期,0841应为消费时间,但未找出规律,其余数值则对正常使用无影响。

再次修改测试600、1000,均正常使用,至此完成余额校验位破解。


总结

一般数值会加密,善用十六进制计算器,有充分耐心。

卡中可能存有消费日期、上次消费金额、上次消费终端机编号等,不一定能解析出来。
本案例具有偶然性,仅供参考。