周末在家里用PCSC读卡器写了一个M1卡的工具,把M1卡的指令封装了一下,拿写字楼食堂的饭卡测了一下。
首先用强大的mfoc穷举了一下卡的密钥,没想到秒破,直接dump出卡内数据,dump过程就不多说了,直接分析一下数据吧。
卡片分别在3次消费后,dump了数据,每次dump卡内的全部4k的数据,发现这张食堂M1饭卡只使用了卡片第1扇区的4块和5块。
下面是3次dump出来的卡内数据的第0和第1扇区的数据,其中第0扇区的第0块的前4字节是卡的UID。第3块数据的前6字节FFFFFFFFFFFF是第0扇区的密钥A,后6字节的值FFFFFFFFFFFF是0扇区的密钥B,中间的FF07 8069是控制字。
发现每次消费后第4块或者第5块数据都会发生变化,第4,5块数据在第1扇区,密钥写在第7块中,密钥A是个巨简单的数,为了我大厦的安全,还是把密钥给隐去了,密钥B还是6字节FF。
下面把几次消费后的数据单独列出来,分下一下,可以看出来第4块或者第5块的第1,2字节是金额,后面第3,4两字节是日期,其他的数据没有分析出来。
可以看出来,每次消费的时候,终端交替读写两块数据,每块的数据中应该有标志位或者校验吧,改天再采集点数据再分析一下。
8B50 2400 1119 0006 1000 0926 0000 0000 ED00 1200 1119 0018 6000 1304 0000 0000 12.00 11月19日中午消费
8B50 2400 1119 0006 1000 0926 0000 0000 6F60 3000 1118 0017 6000 1250 0000 0000 24.50 11月19日上午消费
AD10 4200 1118 0006 1000 0918 0000 0000 6F60 3000 1118 0017 6000 1250 0000 0000 30.60 11月18日中午消费
AD10 4200 1118 0006 1000 0918 0000 0000 9720 4800 1117 0020 1000 1250 0000 0000 42.10 11月18日上午消费