前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Defcon China 1.0 胸卡破解笔记

Defcon China 1.0 胸卡破解笔记

作者头像
ChaMd5安全团队
发布2019-06-11 17:41:48
1K0
发布2019-06-11 17:41:48
举报
文章被收录于专栏:ChaMd5安全团队ChaMd5安全团队

写在前面

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

正文

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

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

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

破解过程

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

代码语言:javascript
复制
$ ls -al /dev/cu.usbserial-*
$ screen -L /dev/cu.usbserial-DC0626IH 15900 –L

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

代码语言:javascript
复制
> 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/ (点阅读原文

把源码包下载下来,解压

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

1.设置端口为 usbserial

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

2. 开发板选择 Arduino Fio

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

3. 导入 library

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

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

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

4. 测试写入固件

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

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

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

5. 开始改代码破解

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

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

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

这是全亮的代码:

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

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

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

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

代码语言:javascript
复制
matrix->drawPixel(random(0,4), random(0, 4), random(16));

改代码改代码:

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

我们把 DEBUG 的宏定义注释

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

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

最后

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ChaMd5安全团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档