随着酷骑单车倒闭,街上的单车随处放着,觉得可惜。本着共享精神,就想如何能破解车锁,做到真正共享。于是决定研究一下,看看有没有什么办法
首先想到的是破解手机APP,但是发现APP用360加密,脱壳比较费劲,而且服务器肯定也没了,估计破解了也找不到Token。
于是想从硬件入手,先从网上查资料,看到这个帖子
http://bbs.mydigit.cn/read.php?tid=2087019蓝牙模块用的CC2541,网上资料很多,而且看板子上好像有调试接口,初步考虑能否下载固件,反编译后找到token。
但是下载固件必须有工具CCDebug,只好淘了一个,花费50RMB
等快递过程中,先去拆了几个车锁,发现有4个版本
1.0版,蓝牙ID: BL2A,绿壳,有调试接口,排针是自己焊的
1.3版,ID: CoolQi,黑壳,没有调试接口
1.4版,ID: CoolQi,黑壳,有调试接口,排针是自己焊的
估计是最早版,结构最简单,无调试接口,黑壳
CCDebuger到了
连上电脑,用SmartRF Flash Programma,读取固件失败,原来是加密了,只能再想办法了
再到网上查找CC2541资料,发现它可以空中升级(OAD)
于是用手机软件TTC-BLE连接蓝牙,发现1.0和1.4版的有OAD功能
看来还有希望,于是开始学习蓝牙硬件编程
先分析硬件,主要是蓝牙CC2541模块,驱动一个减速电机,两个按键确定电机的位置,一个蜂鸣器提示声音
电机驱动芯片实在太小,看不清编号,好在板子上留着测量接口:in1,in2
给in1,in2单独接VCC,电机即可转动,说明只要找到IO口,控制GPIO输出即可。
1.0版的IO口是P0_3,4,1.4版的IO口是P1_1,2
思路很简单,实践起来总有各种问题,不过最后总算成功了
编程生成用于OAD的ImgA,B的bin文件
通过手机软件TTC-BLE的OAD功能,烧入写好的文件
选择需要的img文件,一般是A,点击开始
大约1分多钟完成,就听见“咔”一声,锁开了!!!
这个方法有个缺点,烧入后电机一直处于运行状态,无法锁车,而且电池坚持不了多长时间,无法重复使用
再学习蓝牙通信,改进程序,使程序烧入后,电机只运行2.6秒,够开锁。
然后通过蓝牙通信,随便写入一个数据,电机再运行2.6秒(2.6秒正好一圈)
还是在OAD状态,选我们的从机
选择id是fff1的
点write new value,随便输入一个数
电机就再运行一次,车锁再次打开,实现车锁的重复使用。
但是由于学的不精,程序还是有些问题,目前只能用在1.0版,即绿色的车锁,id是BL2A的车
1.4版的OAD升级到3%的时候自动取消了,目前还不清楚什么原因。