最近水卡余额只剩下4.00,然后突然想起来曾经见过一个大神分享用nexus复制IC卡的ID,达到用作小区门禁的目的,于是决定开始研究一下,在网上找安卓端的NFC工具,最开始用TagInf读卡,太难用,百度许久才知道了MCT,很多论坛都和谐了MCT下载分享,最终在google上找到了MCT,装上读卡,显示10区,11区加密,就是说MCT默认的Key无法匹配读不出数据,继续找资料知道了ACS122u,上马云家搜索基本要180RMB,然后一个小店卖价148RMB价格追踪显示原价188,不犹豫直接下单,外带两张UID白卡。
写在破解前的,建议各位有兴趣研究的人先读一读几个大神的文章:
RFID安全之某学校水卡破解:http://bbs.pediy.com/thread-182891.htm
用作电子钱包的Mifare1卡内部数据分析:http://www.freebuf.com/articles/wireless/70277.html
RFID安全:一次M1卡(洗澡卡、开水卡)破解历程:http://www.freebuf.com/articles/terminal/60908.html
RFID之M1卡数据分析:http://www.2cto.com/article/201410/342004.html
第一篇学习过程,他还有另一篇;第二篇深入了解;第三\四篇必须读几遍,好好领悟作者要表达的数据追踪比对方法。
需要准备的工具:ASC122u、电脑、NFC功能的手机(方便读卡)、010editor(读dump)、excel(分析数据)、计算器(win自带)、CheckTool(超级实用的工具)
到货装驱动爆破Key,把Key导入MCT,数据读出来,开始需找最简单的规律:因为只有10区0块变化,2块与0块完全一样,1块不同卡有几位不同。只对0块分析
将已知的余额转换为16进制后发现红色部分正好是余额倒置;
每刷一次金色部分增加一,为刷卡次数;粉色是金色的加和;
参考了第三篇文章中的思路知道了取反的概念,蓝色部分为互相取反;
红色+暗红色累加和=第一位蓝色。
这些规律我找了三天,然后还发现从第一位到十四位的异或和等于十五位,
但是首位,末位,暗红色位不知道代表什么,相互关系是什么。
后来发现了第四篇帖子,对我启发很大,然后根据他的思路我开始修改这几位,发现读卡机均报错,说明他们互相间有一个校验过程。然后把不同卡片的0块写入同一个个UID中发现不受影响,说明与UID和1块数据无关,只有0块数据控制运作。
然后开始长达四天的数据追踪。取用一个余额数据进行写入,每次以2进行消费
然后发现只有首位、末位、我认为的绿色校验位在变化,其余均一致,而且绿色位每天在下午某个时间点前刷会跟前一天一样,但是过了再刷就变了,就是说他是以天为周期在变化节点是在下午某个时间,然后大胆推翻之前的猜想,绿色位是一个月的某天,与我们的日历不同步,恰巧我测试是在机器的月末29、30、01、02、03,设定它为日期位;
然后变成第一位是它他后边十四位的异或和,末位和暗红位仍然不确定,横向对比末位发现他与日期有着一些关系,然后分析首位已经算是校验位了,末位应该跟首位没关系,然后尝试从第二位加到最后发现等于FF,用其他数据验证可行,然后末尾就通了,首位和末尾都是验证位一个是异或和,一个是累加和。
暗红色对比刷了十几次的数据发现每次都是在00-09之间变动,每次变都可以算出一个跟3的倍数有关的加和取末位,然后大量计算,并没有发现什么数列规律,黑框的两组是当时没有采集,我根据前后关系推算出的正确数据
基于以上猜想做了如下的关系图:
所以基于以上猜想自己设置了一组数据:
刷卡机识别正常,因此暗红位可以算作00-09的随机数,破解完成
最后说明一下:破解是需要大量数据跟踪对比得到规律的,我所展示的只是很少的一些带有特征的数据,但是实际上我采集了不下100组;校验通常都是异或和和累加和,要自己先判定那些数据是原始获得然后在确定他们怎么进行运算得到校验位。用不同颜色代表你所发现的意义有助于数据分析,画关系图用颜色区分也有助于分析。
有需要工具的回复一下,我看人多的话发百度云,不多的话留邮箱发邮箱。最后祝大家好运。仅供学习交流。我只学习了一个星期,不足的地方大神勿喷。