为啥会用到这玩意儿,要从一个荒诞的需求开始。想在市面上找一款特别低空飞行的监控,而且不想它一直开着监控,最好是我在外面远程指挥它起飞,飞去厨房,飞去洗手间,甚至飞去阳台,查看水龙头情况啊,煤气情况之类的。
然后找了一圈,发现市面上没有。于是心生一计,找到了一个玩具飞行器。妄图拆解它,了解到它的协议,以及数据形式,然后直接接一条数据线,拿个python脚本,写下对应上下左右拍照这类动作按钮的命令,对飞行器进行控制。当然初步拆解完,就知道对于这种2.4Ghz交互的东西,还是别用这个昏招,挺蠢的。我也看到有人用replay attack这种办法,说实在的,可能也比我这个好,至少方便一些,装备也少一些。
且看本人分析过程中的庞大阵仗,
说白了就是用电线去焊接芯片的脚,比较累,当中糊了几次,主要容易锡给多,然后针脚容易糊一起,拆它们也花很久时间。
完事儿之后开机看了看读到的data针脚,真的想哭。先前咋就没有一点常识,它们匹配完之后,天线其实一直在发报,确保飞行器接受到信号。
对于这个案例里面,大概的响应包的16进制命令如下(板子上MOSI内容),就是不停循环发给XN297LBW。而且我重新配了几次,匹配上之后反正基本都是这个。
0xFD/0x00 0x00/0x00 0x61/0x00 0x02/0x00 0x00/0x00 0x00/0x00 0x02/0x00 0x02/0x00 0x00/0x00 0x00/0x00 0x00/0x00 0x00/0x00 0x00/0x00 0x27/0x00 0x62/0x00 0xE2/0x00 0x00/0x00
0xFC/0x00 0x00/0x00 0x20/0x00 0x8E/0x00 0xFD/0x00 0x00/0x00 0x27/0x00 0x62/0x00 0xE1/0x00 0x00/0x00
0xA0/0x00 0x00/0x00 0x00/0x00 0x40/0x00 0x80/0x00 0x20/0x00 0x20/0x00 0x20/0x00 0x00/0x00 0x40/0x00 0x00/0x00 0xAA/0x00 0xAA/0x00 0x07/0x00 0x62/0x00 0x27/0x00 0x62/0x00 0xE1/0x00 0x00/0x00 0x25/0x00 0x4C/0x00 0xFC/0x00 0x00/0x00 0x20/0x00 0x8F/0x00
细致一点做的话,应该是有机会用这个方式hack掉这架玩具无人机的游戏柄控制。且看我后期有木有这个胃口。在这里,主要是高兴自己开始对于逻辑分析仪有点概念了,希望以后会用的场合更多一些。