内容简介:Mifare Classic card 提供 1k-4k 的容量,我们经常见到的是 Mifare Classic 1k(S50),也就是所谓的 M1 卡。M1 卡有从 0 到 15 共 16 个扇区,每个扇区配备了从 0 到 3 共块个段,每个段分为 b0 到 b15 共 16 个区块,并且可以保存 16 字节的内容。每个扇区的第 4 段呢是用来保存 KeyA,KeyB 和控制位的,每张卡的 0 扇区还有一个唯一标识的 UID 号。这种卡类的攻击方式大概分为这么几种:
初学 RFID
1. 前情提要
Mifare Classic card 提供 1k-4k 的容量,我们经常见到的是 Mifare Classic 1k(S50),也就是所谓的 M1 卡。M1 卡有从 0 到 15 共 16 个扇区,每个扇区配备了从 0 到 3 共块个段,每个段分为 b0 到 b15 共 16 个区块,并且可以保存 16 字节的内容。
每个扇区的第 4 段呢是用来保存 KeyA,KeyB 和控制位的,每张卡的 0 扇区还有一个唯一标识的 UID 号。
2.破解原理
这种卡类的攻击方式大概分为这么几种:
1)暴力破解
爆破对于 M1 卡的破解来说比较有效,因为 M1 卡是被动卡,需要读卡器来供能,切断供能后卡的临时数据就丢失了,也就是说不会存在输入过多错误密码后造成的锁死之类的情况
FFFFFFFFFFFF、A0B0C0D0E0F0 等等都是 M1 白卡的默认密码,所以当我们使用 acr122u 的配套软件 M1 卡服务程序这样的 工具 来爆破的时候基本上都是用这些默认密码来填充剩余扇区的密码。
2)克隆卡片(卡复制)
M1 卡的扇区可以保存数据,所以大部分的卡片会选择加密扇区后保存数据,我们可以用 uid 卡来进行复制,每张 M1 卡在 0 扇区第 1 段都有一个唯一标识,而且是保护无法修改的,uid 卡就是没有设定 0 扇区保护的卡,所以你可以随意的修改你想要的 uid,这样我们就可以克隆出一张连 uid 都相同的卡片了。
3)嗅探攻击
在卡和机器数据交换的时候嗅探数据,并计算出校验即可。后期可在安卓端用 app:M Tools 进行数据的嗅探。
已经有很多篇文章讲过了原理部分,直接讲一下阶段
3. 所需工具:
硬件: ACR122u(最常见的 rfid 设备,本质就是 pn532,但是有个足够强的上位机,比 pn532 容易上手。没买 pm3 是因为感觉贵,没啥必要。。。)
软件:m1 卡程序,fixdump,sublime Text3,UID 写卡程序
以及安卓端:mifare classical tools, M Tools(神器)
mifare classical tools 是一款让人又爱又恨的软件,但是远远不如 M Tools 强大得多。。。
4 . 实际操作:
1. 首先把 acr122u 的驱动叽里呱啦的安装好。
2. 把水卡放置道读卡上,正确识别之后灯会变为黄色。
3. 打开 m1 服务软件,正确识别机器之后,点击开始破解。
破解完成当即获得一个 1kb dump 文件,现在可以直接拖进 sublime text3,即可看出扇区密钥。
为了容易看出金额差别,用手机端 app:mifare 打开 m1 卡,
会发现没有 3 号 4 号扇区的 key,
用 sublime 打开 dumpfile1.dump
每个扇区的第 4 块区域,前半部为 keyA 后半为 keyB
直接导入 mifare 工具,手机端图形界面好观察一些。
直接可以看到改扇区的信息了。先把现在的这份数据保存一下,然后再去机器那里刷一下机器,然后就可以看出数据变化位了,后就可以确定数据位和校验位了。
随即就发现了一些端倪。这几个数值出现了变化,
E4 12 DC 90 E8 12 DB 93
把前两部分导进进制转换器
刚好是金额位,那么剩下的就是。。。。校验位。
这都 8102 年了,之前经常逛酷安,知道一款神器,M Tools
这是一款酷安基佬开发的 app,最神奇的是作者录制了视频教程,但是地址确是在油管,并附有中式英语进行讲解。现在还有一款 app 是 M Keys 也是该作者的作品,这两款 app 现在也都支持外置 ACR122U 了,so 没有 nfc 的手机也可以外置进行操作。
这个 app 也需要提前把密钥导进去,然后就可以对扇区数据进行操作
这货可以预置常用的算法,什么十六进制倒序,倍数转换啊,直接一点即可。
然后就找到之前发现的金额位数据,直接就可以转换成 47.40,然后下一不是选择校验位的算法,but 真的看不出有何端倪,直接先跳过了。然后来到这个 app 的核心功能,嗅探校验位算法。于是,在刷卡机器旁边,冲冲放放这样来了十几个来回,嗅探到了一下数据。
目前已知的校验位计算方法有这么几种:
反正就是加减乘除,异或取反,各种操作挨个试。看了好久没看出来,就去翻着去看了几篇教程,发现了一些端倪。
但就是这个 b12 部分一直啥都看不出来,真的是毫无规律可循。但其他部分应该还是很好知道规律的
such as:第 2 块与第 1 块做对比,金额位 b0 差-4,b1 没有差别,b12 差+1, b15 差-3,刚好钱差 0.04
同理第 3 与第 4 块的做对比,金额位 b0 差-8,b1 没有差别,b12 差+1, b15 差-7,刚好钱差 0.08
那么可知,凑一下:
b0 + b1 + b12-b15 = 某定值 (-4)+(0) +(+1)-(-3)
的话总值是没有变化的没有变化。
把这些数换到 10 进制计算出这个某定值为:
88(hex)+12(hex)+8(hex)-60(hex) = 66(十进制)
所以 b15 的公式就是:b15=b0+b1+b12-66
把公式填进 M Tools,直接成功完成验证:
但是这个 b12 什么鬼,什么规律都没有。。。。。。。。
但后来经过自己观察,这个可能是随机的,从图上可知每刷一次都递增一下,从 00 开始,such as:08.09.0A。。。。。。
5. 修改数据:
到了修改数据的地方,这都 8102 年了,提供一个更快的思路,直接用 M Tools。再充值的地方,长按有个定额的选项,直接填入即可。
然后就修改成功了,改个奇数位试试,
终语
这算是遇到一个贼拉简单的校验,甚至连异或检验都没有。经过多次的计算校验,感觉计算校验就一条总结:羊毛出在羊身上。
1. 用好 winhex,逆向计算器 2. 最重要的,校验的奥义:羊毛出在羊身上。就是说,校验位在哪里,你可以通过多看几个数据的变化来看出。而校验的产生,总是遵循金额位的变化,校验不管咋变,都是金额位数值通过各种公式组合加计算出来的。
M Tools 的优点在于优秀的 gui 界面方便进行看出校验方式,填入计算公式,直接就可以就行数据修改。
*本文作者:devil0x,转载请注明来自FreeBuf.COM
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- vue实战 - 车牌号校验和银行校验
- 更加灵活的参数校验,Spring-boot自定义参数校验注解
- 一坨一坨的 if/else 参数校验,终于被 Spring Boot 参数校验组件整干净了
- SpringMVC——数据校验
- gin请求数据校验
- Dojo 表单校验
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
代码本色:用编程模拟自然系统
Daniel Shiffman / 周晗彬 / 人民邮电出版社 / 2014-10 / 99.00元
本书介绍了用计算机模拟自然系统涉及的编程策略与技术,涵盖了基本的数学和物理概念,以及可视化地展示模拟结果所需的高级算法。读者将从构建基本的物理引擎开始,一步一步地学习如何创建智能移动的物体和复杂的系统,为进一步探索生成设计奠定基础。相关的知识点包括力、三角、分形、细胞自动机、自组织和遗传算法。本书的示例使用基于Java的开源语言及开发环境Processing编写。本书网站http://www.na......一起来看看 《代码本色:用编程模拟自然系统》 这本书的介绍吧!