前面看了一个工程师硬改升降桌的视频,从中学习到了不少东西,当然也有自己的一些想法吧!
本来这款升降桌的只能用手按着开关让他到达一个你想要的高度,然后松开按键让其停止,但是这个工程师可能是经常要在俩个固定高度之间切换。
在了解完背景之后我简单分析一下这次逆向吧。
他首先拆机简单的查看了一下PCB的简单构造,看到主控是PIC的,3.3V的BUCK电路。
我推测是他可能不熟悉PIC主控,如果熟悉的话直接在PCB上硬改也是可以的。我就属于那种站着讲话不腰疼的那种,说的简单,但是真的要我做的时候可能漏洞百出。不过他的要求可能导致他使用Arduino开发。首先第一点,他需要有两个固定的高度,一个高一个低。然后还有停止。
开始找一些通信引脚
如果是我的话,在开发的时候,按键按下后执行一段程序,这个程序应该是控制电机转动的程序。而且是精确的控制步进电机或者伺服电机控制。但是控制他们转动的钥匙还是在那个按键上面,按键啥时候停止,脉冲信号什么时候停止。
但是看到视频上面他的控制方式却是通信,按键按一下,发射一个数据(RS232)并且,他在后面还将发射出来的数据与实际的高度数据进行了拟合,可以十分简单的使用EXCEL计算出来。可以使用最小二乘法,我在我的前前文章种也用到了这个算法。
既然这样的话,要达到他想实现的方式就很简单了,首先第一点在EEPROM种写入两个固定高度的数据,如果这个高度在你测试种没有获得,那你就可以使用前面使用最小二乘法计算出来的回归方程,带入计算出你想要的高度对应的数值。
在完成了高,低两个位置的确定之后就是欺骗了,为什么叫欺骗呢,我之前看过《无线电攻防》这本书,书的名字记得不太清楚了,是360独角兽写的。里面也用到了无线电方面的欺骗。我这里定义他为欺骗的主要原因是让电机转动的数据不是由PIC主控发出的,而是由Arduino主控发出的。他在这里应该是先读取当前位置的数据然后根据用户按键不同选择上升还是下降,最后与EEPROM中的数据进行对比。从而达到逆向了这个升降桌。让升降桌按下一次按键之后就可以到达指定位置,不用一直按着按钮了。
这个看起来感觉无关紧要,只是方便了一个工程师的日常工作罢了,但是你要是从安全的角度来考虑这个问题的话那就好玩了。
以下纯属猜测,也没做相关的调查,但是从理论上是可以实现的。
首先第一点,智能家居,物联网现在是越来越火了。这些设备里面MCU是不是和外设有通信,既然有通信那我们就可以欺骗。
假设:有一款NFC的门。现在绝大部分的人想开这个锁都是想办法克隆一份这个卡的数据重新写入。
但是如果一旦知道分析出这个NFC在识别到正确密钥时发射出去的信号,这里对于一些低速的通信协议可以使用淘宝上面几十块钱的逻辑分析仪进行分析。效果自己试试就好啦。在得到正确的信号之后,使用各种类型的MCU就可以实现正确信号的克隆。当然了也有通信时候的一点小插曲,就像现在很多模块都是3.3V,而想Arduino,51单片机来说输出的都是5V,0V,0V没问题,但是5V可能就不好了,这个时候你只要使用一个简单的三极管就好了。现在IIC也就两个数据线。非常好模拟。
一旦掌握正确的通信信号,那么同类型的设备全部被破。
附上我画的简图:
讲一个真实案例啊,大家知道就好不要学坏哦!
我之前住宾馆发现充电还得扫码,不是钱不钱的问题,是我手机没电关机啦!!!!!!气的LZ直接拆了那个联网的充电器,发现里面就一个三极管控制着。我当时用宾馆里面送的那种刀片式剃须刀把三极管的集极接到了电源指示灯的正极上面去了。结果就能充电了,大家要是再应急的情况下可以试一下,有可能我碰到的那种充电器里面结构比较简单吧。如果大家真的遇到特殊情况可以尝试一下。
我直接影响执行单元:
也上一张图吧:
我看的视频连接:FreeBuf对一些关键词屏蔽,我也没办法,如果大家想看的话就自己去找吧。相信你们找资源的能力的,加油,奥里给!!!
*本文原创作者:LEdge1,本文属于FreeBuf原创奖励计划,未经许可禁止转载