得到一张某大学的校园卡,研究一番。
经过初步分析,认定该卡为M1/S50的兼容产品。于是可以放心大胆的折腾了。
扫了一下,卡片的所有扇区均被加密,Key A/B不存在默认值或弱口令。
根据卡片提供者的自然情况,仔细想了一下:
这个卡应该是2009年或更早的时候生产的,那时候M1卡片的缺陷还没有引起足够的重视,或者说大多数人都不知道有这么回事。
所以这个卡的逻辑电路应该是没有经过任何的改良设计。(听说后期改良的卡片都可以杜绝card-only攻击了)
开始用mfocgui跑了一下,结果说找不到任何的默认key,不能继续。
于是用PM3跑darkside攻击。但是好像PM3一直都是用作嗅探设备,作为crack设备,反而表现得非常差劲。
反正我买的国内第一版复刻的PM3,darkside跑久了,整个系统就挂了。毫无反应。
改用电脑挂acr122u,用mfcuk跑darkside攻击。差不多过了一个多小时吧,扇区0的Key A终于被我跑出来了。然后又继续跑了2个扇区的Key A。
有了这些key,就开始用PM3跑nested攻击。别说,还比较有效,跑出了15组KeyA和11组KeyB。
剩下的几个Key是无论如何也跑不出来了。(写文章的时候,PM3已刷最新版)
mfocgui好像还不支持导入自定义的key。于是上网查了一下,得到答案。
mfocgui的目录下,有一个Keys的目录,里面放的是卡片的key文件。
文件的命名规则是:[A/B]+[卡片UID号].dump。比如UID为01234567的卡片,它的两个key文件就是:a01234567.dump和b01234567.dump。带a的就是keyA,带b的就是keyB。
可以把你通过其他渠道获得的密钥写进这个文件里。
不必关心文件的格式,找一个已经存在的key文件,用winhex打开就进行编辑,覆盖即可。密钥是以16进制的形式存在于文件中的,不是文本,这个要注意。
可以只要KeyA或者KeyB的文件。注意写key的时候不要写错,否则最后生成整卡的dump文件,会把错误的key写进去。
然后就可以开始攻击了。mfocgui的效率还是很高的,不出一会儿,全卡的key都出来了。
mfcuk的人机接口做的比较简单啦,看不到工作进度,总以为它死掉了,其实没有,还很稳定的。
一般都说30分钟之内能出结果,但也不一定。还是让它在后台跑着,你自己干点别的吧。你看我等了一个多小时才出第一个key,少安毋躁。
遇到没有默认key的卡,如果可以判断卡的年代,还是值得用darkside攻击试试看的。