使用AI对天猫精灵IoT模块进行逆向分析
前言
自从AI强大起来后,我就很少写文章了,因为现在干活的都是AI,我变成了一个指挥者,这样就很难产出让我自己满意的文章。另外,以前我的博客经常记录我遇到了某个难点,我是如何解决的。现在,我遇到难点,然后让AI给我解决,这样根本无法像以前一样输出这类文章。
AI不仅在软件上拿捏了我,还在硬件对我有更大的帮助。这篇文章的起源是因为我家的智能窗帘,当初装窗帘的时候,找的是一个外地的窗帘厂家,但是电机说用的杜亚,我一想,是大牌子,就让窗帘厂家全包了。装好后我才发现,这个杜亚使用的是天猫精灵,而我家全是小爱同学。这个时候也没法换了,窗帘厂家还是外地的,也不方便线下battle,就只能这样了。控制窗帘只能手机上使用天猫精灵APP或者使用遥控器。
前期研究
因此,我一直有一个想法,希望能让小爱同学控制我的杜亚窗帘。经过我的初期调研,我能尝试的方案有:
- 逆向分析天猫精灵APP,产出一个类似micli的工具。然后接入HA,和小爱同学进行对接。
- 搞一个能接入小爱同学的遥控器。
但是尝试后发现:
- 天猫精灵APP的逆向难度还是很大的,我一个只会基础安卓逆向的,搞起来难度大,花时间。
- 有很大缺陷,每个有窗帘的房间都要配一个遥控器,另外原装遥控器使用的是
单通道滚码发射器,折腾起来也非常复杂。
以上是我几年前的经历,因为难度大,我平常事多时间少,因此一直搁置着。
从维修到更换wifi芯片
但是,最近由于我家的杜亚窗帘坏了,我开始使用AI来协助我进行维修。(维修还没成功,暂时不提)
下面是我的杜亚窗帘电机,这是个垃圾玩意,被窗帘店坑了。我一共有4个这个电机,已经坏了2个了,我怀疑是电路板设计上有缺陷。

拆开以后,发现这个电机有两块电路板,电路板1如下所示:

这个板子的作用是220V交流电转24V直流电。
电路板2如下所示:

这个板子就是电机的核心版,通过wifi模块和天猫精灵进行通信,然后操控电机。其中紫色的板子就是wifi模块,紫色的是我自己在嘉里创EDA设计,然后打出来的。原装的如下所示:

这块紫色板子是我在维修时产出的副产物。我在使用AI维修的时候,突然想到我遗留很久的问题,就问了一下AI,然后我得到一个新方案:
窗帘电机主板是通过uart串口和wifi芯片进行通信,从而和天猫精灵进行通信。我尝试连接wifi模块的uart口。首先让AI检测出串口的波特率为9600,对我来说,不管哪个波特率,我看到的都是乱码。但是对于AI,在波特率为9600的情况下AI看到的是类似55 aa 05 01 02 0a 60 90的数据,在AI的数据库中0x55 0xAA是一种非常常见的串口帧同步头(frame header/preamble),广泛用于各类嵌入式设备的自定义串口通信协议中。
接下来,我就成为了AI的助手,我通过操作天猫精灵,还有切换RX/TX,让AI依次逆向窗帘MCU发送的数据,和WIFI发送给窗帘的数据。成功帮我逆向出了部分有用的协议格式,如下所示:

逆向出协议后,我就能使用ESP32-C3芯片,自己设计一块大小一致的板子,替换上去。因为嘉里创支持AI,所以我们可以使用claude code来帮我们在嘉里创EDA上画板子,然后每月可以免费打印两次。板子到了以后自己焊接好元件,让AI帮我们开发ESP的固件代码,如下所示:

最终,我的方案为:
- 在家里内网搭建一个mqtt服务器。
- esp芯片和mqtt服务器进行通信。
- HA和mqtt进行通信。
- 小爱同学通过中枢网关的事件和HA进行通信。
流程:小爱同学 -> 中枢网关 -> HA -> mqtt -> ESP芯片
现在我家还没坏的两个杜亚窗帘已经能用小爱同学进行控制了。
AI分析wifi芯片
接下来,我又想着尝试对嵌入式芯片的固件进行逆向分析经过我的肉眼检查,原装的wifi模块连线如下所示:

最下端的是和窗帘MCU进行通信的串口,右边是wifi模块的下载串口,经过研究波特率为921600。这款芯片从外壳的信息是找不到相关信息的,但是通过串口数据,这是一款封装了TG7100C芯片的wifi模块:

接下来我需要尝试dump这个芯片的flash固件,在AI的指导下,找EN/RST和GPIO8引脚,最初怀疑左边的插口就是。但是一直失败,无法进入下载模式。AI指导先找EN/RST模块,但是我所有引脚都试过,没成功。
使用万用表测试,wifi芯片左边前4个引脚的电压是0V。后面两个是3.3V。按照芯片手册,应该是需要拉高EN/RST, GPIO8引脚。另外,根据AI的指导,也不用找EN/RST 引脚,只要拉高GPIO8引脚,再通电,也可以进入下载模式。经过我多次测试,GPIO8引脚是左边的第三个引脚,把该引脚接入VCC后,再通电,板子就不会正常启动,这个时候就可以用厂商的SDK工具尝试读取flash。
厂商的SDK工具我也是让AI直接安装的:帮我初始化Bouffalo Lab的开发环境
随后使用SDK命令dump flash:
1 | ./BLFlashCommand-macos \ |
接下来就是让AI对bin进行分区,然后分析固件部分的代码。最终的输出报告不方便放出来,下面就放几份图片:






使用AI对天猫精灵IoT模块进行逆向分析

