最近研究NFC的总结

    最近这两天在研究NFC,其实目前还是侷限在RFID部分,但收获很多。

    先说说硬件,是基于PN532的开发板,用的串口与PC通讯,实测pl2303和FT232都没遇到问题。

    首先是编译了最新的libnfc 1.6 ,这个没遇到什么困难,记得make install后 ldconfig一下更新lib的cache,否则提示 no refference。

   然后把 mfcuk 移植到了 libnfc 1.6下 ,并在-v 3选项下增加了显示 前两个最多的Nt 的tagNonce、num_of_appearances和num_of_appearances占auth的百分比,更有助于了解破解情况。修正了 -s 和-S 颠倒了的BUG。

根据目前读经验 diff Nt是越小、增长越慢越好,理想情况是0,因为用的攻击方法是基于固定Nt的,其次命中最多的tagNonce占auth总次数的百分比基本稳定在以上20%是比较有希望的,可以通过 -s 和 -S 调节找到一个diff Nt增长比较慢的睡眠时间,一般是比较大的值diff Nt增长慢,以下是两张卡用 -s默认 -S 200 破解出的密码,用时都在15min内。

Let me entertain you!
    uid: 8d******
   type: 18
    key: 000000000000
  block: 23
diff Nt: 164
  auths: 1465

Most Nt: D45AEDCD Times:213
Second Nt: 585F9F99 Times:65
-----------------------------------------------------

INFO: block 35 recovered KEY: 36**********

-------------------------------------------------------------------------------------------------------------------------
Let me entertain you!
    uid: 8c******
   type: 18
    key: 000000000000
  block: 27
diff Nt: 191
  auths: 1903

Most Nt: 5BFD4C3A Times:306 Present:16.08%
Second Nt: F74C336C Times:135 Present:07.09%
-----------------------------------------------------

INFO: block 39 recovered KEY: 78**********

得到一个密码后,其余的用mfoc就快了。注意,根据算法原理,有的Nt是可能破不出密码的,proxmark上的mfcuk有参数可以忽略指定Nt,PC上的没这个选项,等我有空了加上,如果mfcuk运行了2个小时以上基本是你的运气用光了,换个时间、换个Nt再试吧。

 最新版的mfoc已经支持 libnfc1.6 直接编译就行,我增加实现了 选择破解分区的功能 -s 和首先破解密码B -B的功能,用起来更灵活了,不用一次dump出全部密码,更省时间。

nfc-mfclassic也改了一下,指定读写的块,不用修改一个字节就全卡重写,延长了卡寿命也省时间。

这两天基本就是在改这些工具,顺手的才好用嘛。

下一步计划:

1、看看pboc2.0参考手机上的nfcard读取公交卡(比我想的要简单的多,公交卡是FM1208的,现在已经能查余额了)

2、移植PN532开发板到手机上,给自己手机加个NFC功能,哈哈。目前正在与同学往arm开发板上移植,过度一下,减小难度,顺便蹭他的arm板玩《最近研究NFC的总结》

3、完全搞定校园卡,写篇论文让学校换CPU卡! (然后又有的玩了《最近研究NFC的总结》)

点赞