小区RFID电卡的那些事儿

2015-07-30 +12 678763人围观 ,发现 34 个不明物体 极客终端安全

炎炎夏日,很快发现每天骑车出去电动车电卡的消费惊人呀( ▼-▼ )…

环境及工具

Win xp pro sp3
M1卡破解工具
NFCGUI-Pro.exe
HexCmp.exe

先来看看我们的主角

起初刚办卡的时候,办卡阿姨说办一次卡充一次钱,不提供续充!果断不淡定了啊!用M1卡破解工具成功破解key,源数据dump下来一份。 之后就没管了,想着先用着,没有了再说!就在昨天充电的时候发现刷不上卡了,想着是没钱了,回来dump下数据发现真的是没钱了。

没办法,还要充电呢( ▼-▼ )。首先想到的是重放,这个最简单省事(不过也可能不成功)。还记得最初办卡时,dump下来的源数据吧,原封不动再写进卡里( ̄▽ ̄)"


上图中,10 27是十六进制显示的,还有数据的存放到卡里是倒序写入,所以正确的数据是0×2710即10000(十进制),再加上保留2位小数,那就是100.00正好是办卡时的钱数。中间的EF D8是校验位这个下面在修改任意金额时会分析。

写入工具用的是RadioWar出品的NFCGUI-Pro1.5

注意几点:

1.一定要选择Key B写入
2.两个文件都是选择的源dump的数据
3.看到最下面显示Done 64 of 64 blocks write.说明写入成功了

既然写入成功了,怀着激动的心情跑到刷卡机上测试,yeah,重放成功!( ̄▽ ̄)"

既然重放可以,那再来试试修改任意金额。想修改任意金额必须要搞定它的校验位,要想分析校验位就需要大量的数据来支持。下面是几组数据对比。

100块:

99.5块:

先搞定这两组数据,(外面实在是太热了37度~~~T_T)

上面的两组数据整理如下:


看到上面的数据是不是觉得这校验位弱爆了,可它就是这么弱~~~为了方便我总结出一个公式:

((65535-55535)/T)*0.5=100。

有了公式下面修改任意金额就方便多了,就先修改为500元吧

然后就是C32修改数据,这就不截图了,很简单。

接着我们把修改好的数据包再写入到卡里,同样是用NFCGUI-Pro1.5。

成功测试图:

 

总结  

1 关于rfid的文章很多,特别是freebuf上有很多,想学习的可以多看看技术文章。‍‍
2‍‍ 说下校验位和金额位,有些卡中是要先异或然后取反,再倒序存入卡中。更有变态的是加密后存入。‍‍
3‍‍ ‍‍‍‍‍‍‍‍‍‍分析校验位是个细活要慢慢来急不得,记得上次分析某学校饭卡时,搞了几十组数据分析了一天也没搞定,最后, 还是晚上静下来才分析完成。

(本文仅供技术参考,测试风险自负!)

*本文作者:banish,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

相关推荐

这些评论亮了

  • ccav4 (1级) 回复
    好了,基本已经知道了。 要是联网你看看还能刷不。
    数据copy下来》 用完》copy回去。
    这是一个简单的过程,写的很高端,我差点就看不懂了。
    其实我是来吐槽的。赞我吧。
    )13( 亮了
  • a.tm.k (4级) 亚拉那一卡 回复
    楼主用啥写的卡? 可以给个某宝不?
    )11( 亮了
  • 曾老师 (1级) FreeBuf 首席清洁工 回复
    我家的电表老是跑快,每个月都被房东坑,有办法不?
    )8( 亮了
  • banish (6级) 天地不仁 万物刍狗 回复
    @ 曾老师  :wink: 下班约房东到天台就okay
    )7( 亮了
  • 拾光 (1级) 回复
    算法应该是 金额 + 校验 = 65535 也就是 金额倒序 + 校验倒序 = FFFF
    但是我算了一下你那个500的应该是 C350 +3CAF =FFFF 写入金额应该是50C3 校验应该是 AF3C
    按照你的那个反算得到的结果为65532
    不知道是你错了 还是我理解错了。。。。。。。。
    )6( 亮了
发表评论

已有 34 条评论

取消
Loading...

文章目录

    特别推荐

    推荐关注

    官方公众号

    聚焦企业安全

    填写个人信息

    姓名
    电话
    邮箱
    公司
    行业
    职位
    css.php