搜索
bottom↓
回复: 34

发现MFRC522其实支持底层操作,很有潜力

[复制链接]

出0入0汤圆

发表于 2016-8-3 20:11:33 | 显示全部楼层 |阅读模式
之前用MFRC522测试过最基本的认证、读写等操作。

最近稍有点空闲继续摸索这个芯片,验证了两点功能:
(1)支持手动认证操作的数据收发;
(2)支持手动实现校验位操作。

其实上面第一点并不意外,认证操作就是一系列的数据收发。普通数据能收发,认证数据自然也可以。

第二点就不那么理所当然了。因为实际应用中芯片替上位机完成了校验,因此正常的使用中总是自动发送正确的校验位就可以了,没有必要让上位机单独控制校验(来造成错误的校验位)。

实际上,Mifare Classic系列(就是使用Crypto-1密码系统,被打脸的系列)在认证中必须需要读卡器支持校验位控制。
因为在MifareClassic系列的认证过程中,第二步和第三步读卡器、卡片之间传送的数据是加密的,但是校验位是对应明文的校验。
如果处于自动校验状态,那么校验位肯定就是所收发的数据(密文)的校验而不是明文的校验。所以不支持控制校验就不支持手动认证。

---- ---- ---- ---- 分割线 ---- ---- ---- ----

那么大家会问了,验证上面两点的用处何在?

用处在于了解MFRC522的潜力。
(1)对其他芯片的支持。
网上现有的MFRC522驱动代码,只有对Mifare Classic系列卡片的支持,没有其他,比如采用AES认证、或DESFire系列卡片认证的支持。
上述两点表明在正确的驱动程序及相关加密库、认证引擎的支持下,MFRC522芯片可以支持更多的ISO14443A卡片。

(2)可以实现Darkside Attack。
这个是我摸索的目的。
懂的人自然懂,就不多说了。

出85入85汤圆

发表于 2016-8-11 19:49:14 | 显示全部楼层
看不太懂,不过顶楼主

出0入0汤圆

 楼主| 发表于 2016-8-13 23:52:31 来自手机 | 显示全部楼层
确认mfrc522可以实现darkside attack

出0入0汤圆

发表于 2016-8-21 16:02:48 | 显示全部楼层
darkside是哪种……?不需要部分未加密的?

出0入0汤圆

发表于 2016-8-21 16:03:44 | 显示全部楼层
之前看rc522就觉得可能有这个功能,然而没啥动力……后来入手了一块pn532,又编译成功了libnfc,这事就放下了

出0入0汤圆

发表于 2016-8-21 16:05:10 | 显示全部楼层
佩服lz的行动力

出0入0汤圆

发表于 2016-8-21 18:39:29 来自手机 | 显示全部楼层
fnems 发表于 2016-8-13 23:52
确认mfrc522可以实现darkside attack

请问如何实现?

出0入0汤圆

 楼主| 发表于 2016-9-5 13:55:12 | 显示全部楼层
runapp 发表于 2016-8-21 16:02
darkside是哪种……?不需要部分未加密的?


是的。这个名字来自发布者的论文,2009年 The Dark Side of Security by Obscurity and Cloning MiFare Classic Rail and Building Passes, Anywhere, Anytime。后来网上有人根据这篇论文写出了开源库,mfcuk。

只不过mfcuk是建立在libnfc基础上的,libnfc主要跑在pc机上,通过usb与读卡器通讯。

出0入0汤圆

发表于 2016-9-5 19:35:25 | 显示全部楼层
fnems 发表于 2016-9-5 13:55
是的。这个名字来自发布者的论文,2009年 The Dark Side of Security by Obscurity and Cloning MiFare C ...

嗯,libnfc我有自己编译的。
那我的印象是对的。不过从来没用过这个……
一般都是mfoc

出0入0汤圆

 楼主| 发表于 2016-9-5 23:36:37 来自手机 | 显示全部楼层
runapp 发表于 2016-9-5 19:35
嗯,libnfc我有自己编译的。
那我的印象是对的。不过从来没用过这个……
一般都是mfoc ...

点头点头,有了libnfc来抽象底层就方便多了~

其实,我开贴验证的说白了就是在STM32架构上实现了libnfc的(一些比较偏低层的)功能~

出0入0汤圆

 楼主| 发表于 2016-9-5 23:43:43 来自手机 | 显示全部楼层
34480016 发表于 2016-8-21 18:39
请问如何实现?

关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;

使用mfrc522这个特定接口实现高层攻击,关键就是实现接口的认证transaction以及为了实现认证而进行的校验位控制。

认证transaction,就是普通的transaction。

校验位控制,有寄存器位来开启。开启之后数据流就不再是字节流,而是将字节流转换为比特流之后,每8位按字节后面人为插入校验位,如此构成的比特流,再以字节流的形式发送给接口芯片。

出0入0汤圆

发表于 2016-9-6 00:29:08 | 显示全部楼层
fnems 发表于 2016-9-5 23:43
关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;

使用mfrc522这个特定接口实 ...

rc522可能就是一些依赖于时间的攻击(不知道叫啥,最一开始发现的两种)不太能行,别的应该都可以。
话说模拟14443b有什么方法吗?电路或者成品卡都行……

出0入0汤圆

发表于 2016-9-6 00:29:56 | 显示全部楼层
fnems 发表于 2016-9-5 23:36
点头点头,有了libnfc来抽象底层就方便多了~

其实,我开贴验证的说白了就是在STM32架构上实现了libnfc ...

stm32啊……就直接把libnfc源码扔到mdk之类的里边去编译得到的吗?
感觉当时在win上移植很麻烦啊

出0入0汤圆

发表于 2016-9-6 08:19:57 | 显示全部楼层
runapp 发表于 2016-9-6 00:29
stm32啊……就直接把libnfc源码扔到mdk之类的里边去编译得到的吗?
感觉当时在win上移植很麻烦啊 ...

windows下编译很简单,  用tdm64-gcc-5.1.0-2.exe编译libnfc源码成libnfc.dll,
然后用 VC2013(VS2013) 编译里面的例程即可.

出0入0汤圆

发表于 2016-9-6 08:20:58 | 显示全部楼层
fnems 发表于 2016-9-5 23:43
关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;

使用mfrc522这个特定接口实 ...

好牛叉, 看不懂,先学习。

出0入0汤圆

发表于 2016-9-6 08:21:46 | 显示全部楼层
fnems 发表于 2016-9-5 23:43
关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;

使用mfrc522这个特定接口实 ...

好牛叉,不懂,先学习.

出0入0汤圆

 楼主| 发表于 2016-9-6 11:38:37 | 显示全部楼层
runapp 发表于 2016-9-6 00:29
rc522可能就是一些依赖于时间的攻击(不知道叫啥,最一开始发现的两种)不太能行,别的应该都可以。
话说 ...

关于时间依赖:在接口上,STM32环境更容易精确控制。但是RC522的天线开启速度不太清楚,手册里也没找到。实际用起来……感觉还行,误差是蛮大的,不过总有几个nT (tag nonce)能够重复出现。

关于ISO 14443B:一些升级版的芯片就可以啊~ 比如RC523就可以啊~ 好不好买到就不清楚了

出0入0汤圆

 楼主| 发表于 2016-9-6 11:40:57 | 显示全部楼层
34480016 发表于 2016-9-6 08:19
windows下编译很简单,  用tdm64-gcc-5.1.0-2.exe编译libnfc源码成libnfc.dll,
然后用 VC2013(VS2013) 编 ...

tdm64-gcc-5.1.0-2.exe,没接触过…… 是mingw开发环境吗?

libnfc我只读过部分代码。
是不是这个库只是支持一些常用的读卡器芯片,而且通过usb或者串口来操作设备?

出0入0汤圆

 楼主| 发表于 2016-9-6 11:42:33 | 显示全部楼层
本帖最后由 fnems 于 2016-9-6 11:45 编辑
runapp 发表于 2016-9-6 00:29
stm32啊……就直接把libnfc源码扔到mdk之类的里边去编译得到的吗?
感觉当时在win上移植很麻烦啊 ...


不是的~ 我只是关注darkside attack的实现,所以直接根据mfcuk改写的。做了蛮大的改动。

在接口上,mfcuk对libnfc的调用很少。我都改成自己写的底层调用了。

当然啦,自己只做了改写,原理上还是参考论文,以及这两个开源库

出0入0汤圆

 楼主| 发表于 2016-9-6 11:47:37 | 显示全部楼层
34480016 发表于 2016-9-6 08:20
好牛叉, 看不懂,先学习。

其实不牛,自己只是做代码改写,原理都是别人的。

开贴的目的就是报告一下。代码就不发了。
这样如果有网友想自己实现一些底层的东西,一方面可以放心开发因为这条路已经走通了;另一方面开发过程中遇到问题可以找我讨论。

出0入0汤圆

发表于 2016-9-6 12:56:27 | 显示全部楼层
34480016 发表于 2016-9-6 08:19
windows下编译很简单,  用tdm64-gcc-5.1.0-2.exe编译libnfc源码成libnfc.dll,
然后用 VC2013(VS2013) 编 ...

反正我编译的时候感觉好多坑……

出0入0汤圆

发表于 2016-9-6 12:56:59 | 显示全部楼层
fnems 发表于 2016-9-6 11:40
tdm64-gcc-5.1.0-2.exe,没接触过…… 是mingw开发环境吗?

libnfc我只读过部分代码。

对,现在比较活跃的mingw 64位版本

出0入0汤圆

发表于 2016-9-6 12:57:59 | 显示全部楼层
fnems 发表于 2016-9-6 11:38
关于时间依赖:在接口上,STM32环境更容易精确控制。但是RC522的天线开启速度不太清楚,手册里也没找到。 ...

买到还行,主要rc532肯定不能模拟。
反正一提到模拟的话感觉比较困难啊……

出0入0汤圆

发表于 2016-9-6 12:58:59 | 显示全部楼层
runapp 发表于 2016-9-6 12:56
反正我编译的时候感觉好多坑……

是的, VC2013版本以下对C99支持不好, 所以要改很多地方。
我现在做法就是用gcc去编译libnfc, 然后用VC2013调试。

出0入0汤圆

 楼主| 发表于 2016-9-6 14:10:13 | 显示全部楼层
runapp 发表于 2016-9-6 12:57
买到还行,主要rc532肯定不能模拟。
反正一提到模拟的话感觉比较困难啊…… ...


没注意还要模拟……

模拟……感觉好难哦……

好像有开源项目,OpenPCD是可以做模拟的,你去看看?

好像Proxmarks3也行……没用过

出0入0汤圆

 楼主| 发表于 2016-9-6 14:11:41 | 显示全部楼层
34480016 发表于 2016-9-6 12:58
是的, VC2013版本以下对C99支持不好, 所以要改很多地方。
我现在做法就是用gcc去编译libnfc, 然后用VC20 ...


我也觉得,VC对很多开源软件支持不好。另外好多也需要configure才能生成makefile文件嘛。
所以很多库我也是默默用mingw编译起,然后拿来到处用。

出0入0汤圆

发表于 2016-9-7 00:24:24 | 显示全部楼层
34480016 发表于 2016-9-6 12:58
是的, VC2013版本以下对C99支持不好, 所以要改很多地方。
我现在做法就是用gcc去编译libnfc, 然后用VC20 ...

问题是mingw也一堆坑……不提了……

出0入0汤圆

发表于 2016-9-7 00:34:43 | 显示全部楼层
fnems 发表于 2016-9-6 14:11
我也觉得,VC对很多开源软件支持不好。另外好多也需要configure才能生成makefile文件嘛。
所以很多库我 ...

据说13之后是基本没问题了
configure嘛……无解

出0入0汤圆

发表于 2016-9-7 00:40:55 | 显示全部楼层
fnems 发表于 2016-9-6 14:10
没注意还要模拟……

模拟……感觉好难哦……

哇,多谢,差点忘了这个项目
仔细一看是pn532的,嘿嘿
tb上pn532已经便宜到了一定程度了……就那个红色方形的就不错,据说原版是坛友做的……

出0入0汤圆

发表于 2016-9-7 08:42:24 | 显示全部楼层
runapp 发表于 2016-9-7 00:40
哇,多谢,差点忘了这个项目
仔细一看是pn532的,嘿嘿
tb上pn532已经便宜到了一定程度了……就那个红色方 ...

pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。

出0入0汤圆

发表于 2016-9-7 12:23:02 | 显示全部楼层
34480016 发表于 2016-9-7 08:42
pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。

不是吧,难道是线圈设计不行?

出0入0汤圆

发表于 2016-9-7 12:24:56 | 显示全部楼层
34480016 发表于 2016-9-7 08:42
pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。

还真是,蓝的也不行

出0入0汤圆

发表于 2016-9-7 12:29:59 | 显示全部楼层
34480016 发表于 2016-9-7 08:42
pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。

天线是大点好还是小点好?莫非跟天线面积有关系……

出0入0汤圆

发表于 2016-9-7 12:36:48 | 显示全部楼层
持续关注此贴

出0入0汤圆

发表于 2016-9-8 23:12:19 | 显示全部楼层
楼主,方便的话帮忙推荐几个帖子或程序,想学习MFRC522,读卡,设置密码,改写内容,这些基本功能,即可。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-10 18:06

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表