发现MFRC522其实支持底层操作,很有潜力
之前用MFRC522测试过最基本的认证、读写等操作。最近稍有点空闲继续摸索这个芯片,验证了两点功能:
(1)支持手动认证操作的数据收发;
(2)支持手动实现校验位操作。
其实上面第一点并不意外,认证操作就是一系列的数据收发。普通数据能收发,认证数据自然也可以。
第二点就不那么理所当然了。因为实际应用中芯片替上位机完成了校验,因此正常的使用中总是自动发送正确的校验位就可以了,没有必要让上位机单独控制校验(来造成错误的校验位)。
实际上,Mifare Classic系列(就是使用Crypto-1密码系统,被打脸的系列)在认证中必须需要读卡器支持校验位控制。
因为在MifareClassic系列的认证过程中,第二步和第三步读卡器、卡片之间传送的数据是加密的,但是校验位是对应明文的校验。
如果处于自动校验状态,那么校验位肯定就是所收发的数据(密文)的校验而不是明文的校验。所以不支持控制校验就不支持手动认证。
---- ---- ---- ---- 分割线 ---- ---- ---- ----
那么大家会问了,验证上面两点的用处何在?
用处在于了解MFRC522的潜力。
(1)对其他芯片的支持。
网上现有的MFRC522驱动代码,只有对Mifare Classic系列卡片的支持,没有其他,比如采用AES认证、或DESFire系列卡片认证的支持。
上述两点表明在正确的驱动程序及相关加密库、认证引擎的支持下,MFRC522芯片可以支持更多的ISO14443A卡片。
(2)可以实现Darkside Attack。
这个是我摸索的目的。
懂的人自然懂,就不多说了。
看不太懂,不过顶楼主 确认mfrc522可以实现darkside attack darkside是哪种……?不需要部分未加密的? 之前看rc522就觉得可能有这个功能,然而没啥动力……后来入手了一块pn532,又编译成功了libnfc,这事就放下了
佩服lz的行动力 fnems 发表于 2016-8-13 23:52
确认mfrc522可以实现darkside attack
请问如何实现? 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与读卡器通讯。 fnems 发表于 2016-9-5 13:55
是的。这个名字来自发布者的论文,2009年 The Dark Side of Security by Obscurity and Cloning MiFare C ...
嗯,libnfc我有自己编译的。
那我的印象是对的。不过从来没用过这个……
一般都是mfoc runapp 发表于 2016-9-5 19:35
嗯,libnfc我有自己编译的。
那我的印象是对的。不过从来没用过这个……
一般都是mfoc ...
点头点头,有了libnfc来抽象底层就方便多了~
其实,我开贴验证的说白了就是在STM32架构上实现了libnfc的(一些比较偏低层的)功能~ 34480016 发表于 2016-8-21 18:39
请问如何实现?
关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;
使用mfrc522这个特定接口实现高层攻击,关键就是实现接口的认证transaction以及为了实现认证而进行的校验位控制。
认证transaction,就是普通的transaction。
校验位控制,有寄存器位来开启。开启之后数据流就不再是字节流,而是将字节流转换为比特流之后,每8位按字节后面人为插入校验位,如此构成的比特流,再以字节流的形式发送给接口芯片。 fnems 发表于 2016-9-5 23:43
关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;
使用mfrc522这个特定接口实 ...
rc522可能就是一些依赖于时间的攻击(不知道叫啥,最一开始发现的两种)不太能行,别的应该都可以。
话说模拟14443b有什么方法吗?电路或者成品卡都行…… fnems 发表于 2016-9-5 23:36
点头点头,有了libnfc来抽象底层就方便多了~
其实,我开贴验证的说白了就是在STM32架构上实现了libnfc ...
stm32啊……就直接把libnfc源码扔到mdk之类的里边去编译得到的吗?
感觉当时在win上移植很麻烦啊 runapp 发表于 2016-9-6 00:29
stm32啊……就直接把libnfc源码扔到mdk之类的里边去编译得到的吗?
感觉当时在win上移植很麻烦啊 ...
windows下编译很简单,用tdm64-gcc-5.1.0-2.exe编译libnfc源码成libnfc.dll,
然后用 VC2013(VS2013) 编译里面的例程即可. fnems 发表于 2016-9-5 23:43
关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;
使用mfrc522这个特定接口实 ...
好牛叉, 看不懂,先学习。 fnems 发表于 2016-9-5 23:43
关于darkside attack的高层实现,网上很多资源,Google这个关键词就能找到;
使用mfrc522这个特定接口实 ...
好牛叉,不懂,先学习. runapp 发表于 2016-9-6 00:29
rc522可能就是一些依赖于时间的攻击(不知道叫啥,最一开始发现的两种)不太能行,别的应该都可以。
话说 ...
关于时间依赖:在接口上,STM32环境更容易精确控制。但是RC522的天线开启速度不太清楚,手册里也没找到。实际用起来……感觉还行,误差是蛮大的,不过总有几个nT (tag nonce)能够重复出现。
关于ISO 14443B:一些升级版的芯片就可以啊~ 比如RC523就可以啊~ 好不好买到就不清楚了 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或者串口来操作设备? 本帖最后由 fnems 于 2016-9-6 11:45 编辑
runapp 发表于 2016-9-6 00:29
stm32啊……就直接把libnfc源码扔到mdk之类的里边去编译得到的吗?
感觉当时在win上移植很麻烦啊 ...
不是的~ 我只是关注darkside attack的实现,所以直接根据mfcuk改写的。做了蛮大的改动。
在接口上,mfcuk对libnfc的调用很少。我都改成自己写的底层调用了。
当然啦,自己只做了改写,原理上还是参考论文,以及这两个开源库 34480016 发表于 2016-9-6 08:20
好牛叉, 看不懂,先学习。
其实不牛,自己只是做代码改写,原理都是别人的。
开贴的目的就是报告一下。代码就不发了。
这样如果有网友想自己实现一些底层的东西,一方面可以放心开发因为这条路已经走通了;另一方面开发过程中遇到问题可以找我讨论。 34480016 发表于 2016-9-6 08:19
windows下编译很简单,用tdm64-gcc-5.1.0-2.exe编译libnfc源码成libnfc.dll,
然后用 VC2013(VS2013) 编 ...
反正我编译的时候感觉好多坑…… fnems 发表于 2016-9-6 11:40
tdm64-gcc-5.1.0-2.exe,没接触过…… 是mingw开发环境吗?
libnfc我只读过部分代码。
对,现在比较活跃的mingw 64位版本 fnems 发表于 2016-9-6 11:38
关于时间依赖:在接口上,STM32环境更容易精确控制。但是RC522的天线开启速度不太清楚,手册里也没找到。 ...
买到还行,主要rc532肯定不能模拟。
反正一提到模拟的话感觉比较困难啊…… runapp 发表于 2016-9-6 12:56
反正我编译的时候感觉好多坑……
是的, VC2013版本以下对C99支持不好, 所以要改很多地方。
我现在做法就是用gcc去编译libnfc, 然后用VC2013调试。 runapp 发表于 2016-9-6 12:57
买到还行,主要rc532肯定不能模拟。
反正一提到模拟的话感觉比较困难啊…… ...
没注意还要模拟……
模拟……感觉好难哦……
好像有开源项目,OpenPCD是可以做模拟的,你去看看?
好像Proxmarks3也行……没用过 34480016 发表于 2016-9-6 12:58
是的, VC2013版本以下对C99支持不好, 所以要改很多地方。
我现在做法就是用gcc去编译libnfc, 然后用VC20 ...
我也觉得,VC对很多开源软件支持不好。另外好多也需要configure才能生成makefile文件嘛。
所以很多库我也是默默用mingw编译起,然后拿来到处用。 34480016 发表于 2016-9-6 12:58
是的, VC2013版本以下对C99支持不好, 所以要改很多地方。
我现在做法就是用gcc去编译libnfc, 然后用VC20 ...
问题是mingw也一堆坑……不提了…… fnems 发表于 2016-9-6 14:11
我也觉得,VC对很多开源软件支持不好。另外好多也需要configure才能生成makefile文件嘛。
所以很多库我 ...
据说13之后是基本没问题了
configure嘛……无解 fnems 发表于 2016-9-6 14:10
没注意还要模拟……
模拟……感觉好难哦……
哇,多谢,差点忘了这个项目
仔细一看是pn532的,嘿嘿
tb上pn532已经便宜到了一定程度了……就那个红色方形的就不错,据说原版是坛友做的…… runapp 发表于 2016-9-7 00:40
哇,多谢,差点忘了这个项目
仔细一看是pn532的,嘿嘿
tb上pn532已经便宜到了一定程度了……就那个红色方 ...
pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。 34480016 发表于 2016-9-7 08:42
pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。
不是吧,难道是线圈设计不行? 34480016 发表于 2016-9-7 08:42
pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。
还真是,蓝的也不行 34480016 发表于 2016-9-7 08:42
pn532 红色方形的板子读不到身份证UID
白色的长方形板子可以。
天线是大点好还是小点好?莫非跟天线面积有关系…… 持续关注此贴 楼主,方便的话帮忙推荐几个帖子或程序,想学习MFRC522,读卡,设置密码,改写内容,这些基本功能,即可。
页:
[1]