【免费】RFID之linux下利用PN532对M1卡(饭卡,公交卡,水卡,门禁卡等)破解教程

2013-05-17 00:39:21 96 60642
不知道为什么不能在编辑器里面上传图片,可能是禁止了吧,那我就用外部链接吧。

大家好,我是Wenien。
今天,纪念下我的卡片破解之教程,写下我的第一篇文章。
我的座右铭是:既然目标是地平线,留给世界的只能是背影。

————————————————————声明,我们只是技术交流,请遵守法律法规—————————————————————
下面开始吧。
这篇文章主要是讲 linux下的对IC卡(M1卡)的无线hack技术。

设备:硬件方面,PC机一台,PN532开发板一套。软件方面:mfoc,mfcuk。

本文用不到mfcuk的,我还是给大家科普下吧。
原理这些我不讲啦,讲应用吧。
mfoc,知道卡的一个密码,以超短时间破解其他所有密码。
mfcuk,通过随机数,暴力破解密码(别认为是随机数充当密码),一般30分钟内能破解,不能破解的话说明你运气不够,换个时间。

忍不住还是说说M1卡吧。
M1卡,一般国内喜欢用1K卡,1K卡里面有16个扇区,每个扇区有4个块,每个块有16个字节。第0块,第1块,第2块都是数据区域。第3块是keyA,控制段,keyB的存储区域,分别是6个字节,4个字节,6个字节。特别的,第0个扇区的第0个块是比较特殊的,里面是只读的,不可改的,存储的是厂家的一些信息。(有些卡就是通过这个区域产生随机密码然后让普通的M1空白卡不能复制,因为要复制只能复制除第0扇区第0块的东西啊。除非有神一般的第0扇区,第0块可写的M1卡,楼主有一张哦。)

因为这个无线破解楼主已经在很长一段时间搞了,所以一些软件的编译截图我没有,在下面先把代码贴出来吧。

1.因为楼主用的PC和PN532开发板要相连,而PN532用的是UART的串口,所以我用了一个USB转UART的板子,把两个东西连起来了。然后装些必要的驱动。

安装:libpcsclite-dev 和 libusb-dev
apt-get install libpcsclite-dev libusb-dev
安装:libccid 和 pcscd
apt-get install libusb-0.1-4 libpcsclite1 libccid pcscd
到googlecode里面下载libnfc-1.6.0-rc1.tar.gz
然后一条条执行下面命令,搞个sh也可以。下面这些指令不懂的话补补基础吧。
tar xzvf libnfc-1.6.0-rc1.tar.gz
cd libnfc-1.6.0-rc1/
autoreconf -vis
./configure --with-drivers=pn532_uart --enable-serial-autoprobe
make clean
make
make install
ldconfig
然后执行下 libnfc 里面的 nfc-list 试试看(要把卡放在设备上面哦。)


看上面,成功安装好了。下面装mfoc-0.10.3,先到googlecode下个源码吧,然后执行如下命令。
tar xzvf mfoc-0.10.3.tar.gz
cd mfoc-0.10.3
./configure
make
看看成功没,如下图:



下面开始破解.执行命令
./mfoc -K -O test.file
看见没,上面一部分的密码已经 FOUND了,因为卡里面有一些没用到的区域用了默认密码.
这个卡的一个默认密码是 ffffffffffff (所以大家也可用 ./mfoc -k ffffffffffff -O test.file  这个命令,感兴趣的朋友可以google一下).很多卡都有这个默认密码.下面在用探针探索中,很快就有结果了.



结果出来了.





有了结果我们可以怎样?有两种行径.第一,复制卡;第二,修改卡.
复制卡是最简单的,因为一般的 M1卡都不检索第0扇区第0块的数据.所以复制可行.如果你有一张10元的水卡,校园卡,工卡,或者门禁卡其他七七八八的卡(反正国内就那样都基本是1K的M1卡),你复制到另一张卡里面可以,你自己把数据导出来(有密码不就可以导出了吗...),用完10块,再把数据写进卡里面就可以了...当然这种是最没有技术含量的...我们是要数据分析的.

所以我们来到了第二种方式:数据分析,修改数据.
如果你们玩过单击游戏,用过修改器,作弊器,你们就会知道,我们分析数据大概的原理,就是看看哪里变了,刷刷卡,看看哪里变了.就大概可以了.只能说大概,变的数据不一定是我们的有用数据啊,因为做卡的厂家哪会这么笨啊,肯定会加点冗余数据来校验的啊.当然一般这些校验的数据都是通过有用的数据的 加 与 或 非 异或 形成的,CRC貌似比较少.然后有些是固定冗余,不用理.

对于上面那个图.我发现了数据段,那个有密码的那个扇区的控制块我就不说了,那个控制块的4个字节说明了整个扇区有keyA控制.要理解更多东西,大家还是要懂M1的原理的啊.可以看下M1的文档哈.

上面那个图的红色画圈圈的区域是数据段
我们可以通过修改数据段改变卡的金额值.楼主确实是成功了....从10几块数据变成了99块.当然,一切都是测试,不要干坏事哈.(楼主用的什么卡大家就不要猜了.)

下面是数据的导入:

命令是
nfc-mfclassic w a test.file test.file
注意,前面那个 test.file 是代表你的含有密钥的文件,可以认为是 mfoc 导出来的文件.后面那个test.file 是你要写入的文件.两个文件是一样的,不过代表的意义不同.
下面是导入成功的图片.(get20是我修改后的导出来的文件,相当于text.file修改后的文件)



破解到这里结束吧.
下面给个安装mfcuk的方法吧.
tar xzvf mfcuk
cd mfcuk
autoreconf -is
./configure
make
ps:make前修改src/Makefile,将LIBNFC_LIBS的值复制到LIBS后面


忘了提醒大家,那个googlecode因为是开源的,所以很多 mfoc 和 mfcuk 代码都不完全正确,我记得最新版的mfoc和mfcuk(建立在libnfc 1.7 平台的) 好像是在某个 c文件里面漏了个 & 的,就是指针出错了,导致编译不成功.

(linux下的mtPaint工具还是不错的,图片处理助手啊.)
最后,谢谢大家看我的文章哈.              
                                                                                                                       All by Wenien

关于作者

Wenien31篇文章370篇回复

评论96次

要评论?请先  登录  或  注册