关注我们

Defcon China 1.0 胸卡破解笔记

kercerkercer 极客有趣 2019-06-04 576312 0

写在前面

不会IOT, 不会逆向,  也没去听破解胸卡的 workshop, 本菜鸡在 @hook 师傅指引下完成了这次”破解“,在此记录一下,供大家看个热闹。

正文

胸卡正面的样子是一棵树,有树根和树叶,背面有一个重置的按钮,按一下之后,胸卡上的所有灯会全亮,5秒之后,再熄灭,然后根据你当前的进度进行亮灯(有些 Village过了之后他们可以给你点亮)。树根的位置是红色的灯,树叶的位置是绿灯。

Defcon China 1.0 胸卡破解笔记

先看一下我这边弄完之后的样子, 树根和树叶随机跑马灯走你

Defcon China 1.0 胸卡破解笔记

关于这个胸牌的破解,不同人有不同的理解。比如 4hou.com 的小编破解之后的是不停的闪闪闪 (这个才是官方破解的效果,我不管,我觉得我那个比官方的好看)

Defcon China 1.0 胸卡破解笔记

破解过程

能看到有一个 microUSB 的串口(Serial), 找根microUSB <=> USB 的线(一般你的安卓手机)插上,然后连接串口

$ ls -al /dev/cu.usbserial-*
$ screen -L /dev/cu.usbserial-DC0626IH 15900 –L

Defcon China 1.0 胸卡破解笔记

Defcon China 1.0 胸卡破解笔记

然后按 h , 可以看到几个菜单

> h

L: Toggle LED state [Normal, All On, All Off]
M: Toggle motion sensing [Low, Medium, High, Off]
A: Read accelerometer
U: Display unique ID
F: Display game flags
H: Display available commands
Ctrl-C: System reset

L 是切换LED灯,每按一下LED灯的样子就会在 全亮、全灭、当前你闯关进度 这三个之间切换。

刚开始,打开全亮开关还以为我已经达到了目的,拔了 USB 之后,发现这都是幻觉,串口下的操作,只是让你调试用的,拔了线之后,又重置回去了。

我们选退出来,分别按下 ctrl A K 三个键之后,从 screen 里面退出来。

这个时候 Hook 师傅给我说有源码,直接刷固件

http://www.grandideastudio.com/defcon-china-2019-badge/

Defcon China 1.0 胸卡破解笔记

把源码包下载下来,解压

Defcon China 1.0 胸卡破解笔记

.ino 工程, 需要 Arduino IDE,去 Arduino 官网下载一个 IDE 下来,打开 DEFCON_China_Badge_2019.ino

1.设置端口为 usbserial

点 工具->端口->找到对应的usbserial

Defcon China 1.0 胸卡破解笔记

2. 开发板选择 Arduino Fio

Defcon China 1.0 胸卡破解笔记

别问我为什么选这个,我一个一个试的,流下了没技术的眼泪

3. 导入 library

把压缩包里的 libraries 里的内容复制到 ~/Documents/Arduino/libraries 目录下

Defcon China 1.0 胸卡破解笔记

 这里的路径是 Arduino 的项目目录下的 libraries 目录,取决于你的首选项中的配置

Defcon China 1.0 胸卡破解笔记

如果你不想这么加,你也可以点 项目-> 加载库 -> 添加 .zip 库,然后把这些包一个一个手动加进去

Defcon China 1.0 胸卡破解笔记

4. 测试写入固件

我们注意到串口进去的时候,会打印 Welcome to the DEFCON China 1.0 Official Badge 这样的字符串,搜索一下,然后在前面加上一个自己的标记。加完保存,然后点「上传」按钮

Defcon China 1.0 胸卡破解笔记

Defcon China 1.0 胸卡破解笔记

写入成功,然后点右上角那个放大镜,打开串口监视器

Defcon China 1.0 胸卡破解笔记

看到写成去了,接下来,我们就可以随便改里面的代码了

5. 开始改代码破解

也懒得分析里面的矩阵了,看到 setup 函数里面,注释掉了一段在 DEBUG 模式下才有的代码, setGameFlags

Defcon China 1.0 胸卡破解笔记

跟过去看一下,原来只有在 Debug  下才能直接改  Flag 的内容

Defcon China 1.0 胸卡破解笔记

这时候问题来了,我们的目的是要 LED 灯像跑马灯一样跑,看这玩意儿干啥,直接去找 LED 相关的代码不就完了?

这是全亮的代码:

Defcon China 1.0 胸卡破解笔记

然后是游戏模式下的LED显示代码:

Defcon China 1.0 胸卡破解笔记

drawPixel 第一个参数是 x 坐标,第二个是 y ,第三个是显示的颜色

原来,branches 上的绿灯像跑马灯一样,是用了 random...

那我们直接粗暴一点,把 root 的LED灯也随机了得了

matrix->drawPixel(random(0,4), random(0, 4), random(16));

改代码改代码:

Defcon China 1.0 胸卡破解笔记

现在我们只要进这个 if 就行了,当然你也可以直接把整个函数都改了,我们需要用到上面 debug 模式的 setGameFlags 函数

我们把 DEBUG 的宏定义注释

Defcon China 1.0 胸卡破解笔记

然后在 setup 里面,强行调用 setGameFlags(0xFF, 0xFF), 把 flag 修改了,好暴力。。。

Defcon China 1.0 胸卡破解笔记

接下来就是熟悉的三连操作: 保存,上传,收工,一气呵成

Defcon China 1.0 胸卡破解笔记

最后

这次因为有源码,所以我这种门外汉也能玩上一玩,用的方法太暴力,有些无脑。如果你有时间可以详细的分析一下源码。

当然了,就像我上面提到的,你也可以根据自己的想法,去随意改代码,然后打造属于你自己的 Defcon China 1.0 胸牌。

原文由微信公众号:ChaMd5安全团队

版权声明

本文仅代表作者观点,不代表黑白网立场。
如文章侵犯了您的权利,请通过邮箱联系我们删除。
详情查看:版权纠纷
E-Mail:server@heibai.org

喜欢0发布评论

评论列表

发表评论

  • 昵称(必填)
  • 邮箱
  • 网址