<% dim ModuleName,InfoID,ChannelShortName,CorrelativeArticle,InstallDir,ChannelDir,Keyword,PageTitle,ArticleIntro,Articlecontent Keyword=stripHTML("Kali,M1卡,破解") PageTitle=stripHTML("Kali平台下的M1卡破解 实战篇") ArticleIntro=stripHTML("本文主讲在kali平台下,对M1卡进行破解和克隆。所需设备:电脑,ACR122u-a9读卡器,白卡。研究对象:学校洗澡卡主要使用软件:mfoc,  mfc-mfclassic") Articlecontent=stripHTML("本文主讲在kali平台下,对M1卡进行破解和克隆。  所需设备:电脑,ACR122u-a9读卡器,白卡。  研究对象:学校洗澡卡  主要使用软件:mfoc, m…") ModuleName = stripHTML("hack") InfoID = stripHTML("210527") ChannelShortName=stripHTML("Hack") InstallDir=stripHTML("http://www.77169.com/") ChannelDir=stripHTML("hack") %> Kali平台下的M1卡破解 实战篇 - 华盟网 - http://www.77169.com
您现在的位置: 华盟网 >> Hack >> 加密解密 >> 正文

[图文]Kali平台下的M1卡破解 实战篇

2015/9/7 作者:邪恶十六进制 来源: 邪恶十六进制
导读 <% if len(ArticleIntro)<3 then Response.Write Articlecontent 'Response.Write "Articlecontent" else Response.Write ArticleIntro 'Response.Write "ArticleIntro" end if %>

  本文主讲在kali平台下,对M1卡进行破解和克隆。

  所需设备:电脑,ACR122u-a9读卡器,白卡。

  研究对象:学校洗澡卡

  主要使用软件:mfoc, mfc-mfclassic

  本文主要使用系统为kali1.1,由于本人觉得电脑装windows和kali1.1双系统很麻烦,便把kali安装在了U盘里面,不是live CD,是正儿八经安装在了U盘,可以保存设置更新系统的那种,安装之后用easyBCD添加一个启动项即可。系统选择界面如下:

  1.使用mfoc破解并获取M1卡数据

  进入kali1.1系统,插上读卡器,指示灯亮:

 

  这里说明一点,网上很多破解M1卡都是在windows环境下完成,但是我认为在kali下更加方便稳定,因为kali本身就自带了读卡器驱动并且更加稳定,不需要我们自己安装,我在windows环境下操作的时候经常遇到读卡器死机的情况,而且Windows环境下使用的程序大都是Linux环境下移植过去加了个GUI。

  虚拟机装的kali对读卡器的驱动同样不稳定,其中原因我也不是很清楚,但是想想也对,毕竟人家堂堂正正的读卡器,偏偏要被一个虚拟机所驱动,人家自己心里也不好过(。﹏。) (。﹏。)。

  将洗澡卡放在读卡器上,滴~~~指示灯变绿。

  打开mfoc :

  Mfoc 使用方法如下:

  Mfoc [-h] [-k key] …[-p probnum] [-T tolerance] [-O output]

  命令说明如下:

  -h 帮助文档

  -K 自定义密匙

  -P 探测次数

  – T 探测延时

  -O 是大写的O(欧),不是0(零) 指定输出文件名

  这里我们输入命令:

  mfoc –O xizaoka.mfd

  过了几秒钟显示如下:

  在0-15这16个扇区中,除了扇区9没有找到密匙之外,其余扇区均使用了默认密匙。而且显然,扇区存的就是我们想要的数据,这里我们可以利用M1卡的验证漏洞来获得密匙,具体什么漏洞我将在之后的文章中详细讲解。mfoc正好能利用这个漏洞。

  程序开始破解

  成功找到扇区9的密匙A和密匙B,并开始dump出数据:

  Dump完成:

  我们以同样的方式对白卡也操作一次,先拿走洗澡卡:

  大家注意看,在拿走洗澡卡之后,读卡器指示灯并没有变红,但是并不影响使用,直接再把白卡放上去即可。这应该是U盘版kali的一个小bug:

  使用命令:

  mfoc –O baika.mfd

  对白卡dump完成之后,我们在根目录得到了两个文件 baika.mfd 和 xizaoka.mfd 每个均为4096 bytes,也就是4K,然而我们的洗澡卡容量明明只有1K为什么会dump出4K呢,这个我在以后文章中也会说明。

  2.在windows环境下手工修改dump文件格式

  上文说了我们的卡只能装1K的数据,那么我们必须要把这个4k的文件变成1K,我当时也不知道该怎么办,便将dump出来的文件复制出来,在windows下使用winhex打开想研究一下到底怎么回事儿,如下图:

  扇区0保存了UID

  扇区9保存了洗澡金额数据,我们这里不需要弄懂是怎么保存的:

  重点来了,过了16个扇区后,我发现后面还跟了3K大小的空白数据:

  心想,有卵用?删掉不正好是1K嘛,改完如下:

  Windows平台上好像也有一个名叫fixdump的小工具,能将4K的文件改为1K,我想原理应该就是和我的一样吧。(其实baika.mfd不需要修改)

  3.在kali环境下使用nfc-mfclassic复制卡片。

  进入kali,将修改好的文件复制到根目录,打开nfc-mfclassic:

  命令格式如下:

  Nfc-mfclassic r|R|w|W < > [[f]]

  命令说明如下:

  r|R|w|W r标示读read,w表示写write,特别注意,当使用大写W时,软件将尝试覆写0扇区的UID

  a|A|b|B 选择使用密匙A或密匙B 大写时将忽略错误

  dump.mfd 我们将要写进卡里面的文件名,我们这里是xizaoka.mfd

  keys.mfd 之前dupm白卡产生的文件,主要作用就是保存了白卡的密匙。这里是baika.mfd

  f 当UID不匹配时,强制使用前面的key,我们不需要用到,当然这个参数加上去也没有影响。

  将白卡放在读器上。

  最终的命令为:

  Nfc-mfclassic w A xizaoka.mfd baika.mfd f

  之前我的命令是Nfc-mfclassic W a xizaoka.mfd baika.mfd f

  发现写入失败

  后来把W改成了小写w,写入成功。

  原来是淘宝老板坑我,给我送的卡不可以修改0扇区UID。

  到这里工作完成。最后放上两张效果图。

  之后还有修改数据等等的,那都是自由发挥的事情了。