|
本帖最后由 tommmmmy 于 2025-4-14 15:21 编辑
之前发过一个帖子,内容和这个帖子有关,有兴趣的可以去看看
链接:https://www.mydigit.cn/forum.php?mod=viewthread&tid=514495
接下来,会分享结合之前的破解过程,分享和总结一些个人的方法和见解。
本次所涉及到的微信小程序为启航再扬帆
蓝牙模块型号:MX-01P,有需要的话,可以自行某宝
CH340G通讯串口模块,有需要的话,可以自行某宝,连接模块需要注意的是,RX和TX的通道需要对调能可以,想了解的可以搜一下UART的原理
以及各类的调试软件,电脑端的:XCOM V2.7
手机端的:主要是LightBlue、nRF Connect
还有一个微信解包软件,VScode,详细可以翻看之前的链接
在本次的案例中,启航再扬帆的小程序是如何识别蓝牙模块
打开手机蓝牙后,小程序将会通过读取蓝牙模块的信息,
1、筛选模块--------------------------读取模块的名字,MAC,软件版本,硬件版本以及蓝牙广播包。
2、验证模块的合法性-----------------读取模块的UUID,包括读取、写入,通知的UUID和特性。
3、模块与控制器设备获得通讯--------校验控制器的ID
1、筛选模块。
这里将利用nRF Connect 去克隆原厂模块的部分信息,去验证一下
上面的图片,显示的是一台手机的名称,实际上这个app克隆的功能,只是单纯克隆了广播包,因为是用手机去克隆,所以MAC和名称都是无法修改,但是只要是广播包是对的,就能搜到
打开模块的详细信息,点击CLONE,转到ADVERTISER界面,点击修改,勾选可连接的属性,OK,最后开启广播。
进行到这一步,会发现小程序可以搜到克隆的蓝牙信号,尝试连接,提示蓝牙模块不合法,这里的克隆是用一台手机去克隆的,由于手机的特殊性,克隆只能做到克隆广播包,MAC和名称是无法修改,但一样能识别到模块,这恰恰能说明小程序只通过广播包去筛选模块。
这里总结一下方法,两台手机,一个克隆,一个测试连接,就能简单判断小程序的连接逻辑,当然,就我这个案例来说,是通过广播包去识别的,但不是说市面上全部程序都是这样识别,也可以通过模块名称、MAC等信息去识别,可能是因为修改名称或者MAC比较容易,所以只通过广播包去识别。
2、验证模块的合法性。
这一步的话,我这边就搞得比较费劲了,我是通过分析小程序的源代码,得出模块的UUID,包括读取、写入,通知的UUID和特性。
本人不会写代码,所以就把代码发给了我的朋友去分析,最后通过定位得知,拿到UUID,也得知了校验设备合法性的逻辑。
这里比较遗憾的是,还没有找到代码中广播包的定义,如果是没有原厂的模块,就无法知道广播包数据,所以比较遗憾,这里还要花时间继续分析找找。
操作这一步呢,推荐一个比较好用的软件,LightBlue,个人认为比nRF Connect好用一点,因为LightBlue在读取原厂模块的时候,直接把UUID读出来了,而nRF Connect显示有点不清晰,比较乱。
可以看看两款软件截图对比一下
LightBlue
关键点就是,UART-TX和UART-RX,里面的UUID,还有一个主服务的UUID.
主服务:0000FFE0-0000-1000-8000-00805F9B34FB
写服务:0000FFE1-0000-1000-8000-00805F9B34FB
通知服务:0000FFE2-0000-1000-8000-00805F9B34FB
有人就会问为什么UUID不是00010203-0405-0607-0809-0a0b0c0d1912,00010203-0405-0607-0809-0a0b0c0d2b12,0x2901,与上个帖子不同
这里我一开始也是被nRF Connect给误导了,显示的UUID也误导了我,因为这个UUID的规律太像是人为定义了
00010203-0405-0607-0809-0a0b0c0d1912
00010203-0405-0607-0809-0a0b0c0d2b12
太有规律了,导致我用MX-01P去克隆UUID,默认了就是这样的UUID,这里也希望有懂的大神解释一下,这两个特殊的UUID是用于什么服务的
看看nRF Connect显示的原厂模块的UUID
信息太少,不太准确,不过nRF Connect的克隆功能确实不错。
3、模块与控制器设备获得通讯
这里主要是模块的波特率设置的问题,这里其实我也是走了一点弯路的,原厂的模块应该是定制的,所以没有相关的AT指令,所以试了多个波特率,发了很多AT指令都无法与原厂的模块获得通讯。
个人的理解是,原厂模块的AT指令,应该也是特定的,或者需要特定的指令去打开AT模式,这里就确实没有办法去搞
把原厂模块的外壳打开后,发现主控芯片丝印为TLSR8208,求助万能的某宝,最终定位到了一款同主控的蓝牙模块GC2400-TC017,通过查询规格书,支持多种波特率,默认是115200。我猜是端口的波特率115200,就把MX-01P设置成115200,去尝试连接控制器,结果是无法与控制器获得连接。
最后就只能把笔记本电脑和CH340G模块带上,去测试到底是哪个波特率,现场调试第一次就设置了9600的波特率,一发入魂,就连上了,测试了功能,与原厂模块没有区别
总结一下,就是克隆蓝牙模块的关键点,广播包,UUID,以及UART端口的波特率,希望我分享的经验能够帮助到大家,能提供一些好的思路。
接下来也会继续找时间去分析一下代码中的广播包数据,万一没有原厂的模块也能得到广播包的数据。
最后放出原厂模块的信息。
raw数据,0x0201060502E0FFCOFFOC09584943482D3 537383339340512100020000EFF6E8601383 B2657839402000311
广播包:0EFF-6E8601383B26578394000311
名称:XICH-578394
MAC:38:3B:26:57:83:94
主服务:0000FFE0-0000-1000-8000-00805F9B34FB
写服务:0000FFE1-0000-1000-8000-00805F9B34FB
通知服务:0000FFE2-0000-1000-8000-00805F9B34FB
感兴趣的朋友,也可以自己克隆试试,用扬帆再启航小程序测试,如果能到达控制器验证失败这一步,说明模块是过小程序的合法性验证的。
补充内容 (2025-4-18 18:07):
后面又重新购入了新的模块,用于测试校验广播包,原厂广播包数据:6E8601383B2657839402000311,后面通过修改对比测试,6E8601 ************ 02 ******
补充内容 (2025-4-18 18:10):
发现星号位置可以随便修改,小程序可以显示这个模块,至于那几位不能改动的数据,目前没看出什么门道,可能是设备码?或者模块品牌序列号? |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|