最近接了个奇怪的活儿, 有点儿偏门, 故事是这样的, 一个好哥们想破解一个无线的收发器, 我正好手上有个千年金刚钻:
一直在吃灰, 心想正好找机会玩玩.
于是让他们把东西发过来, 我瞅瞅先.
好家伙, 一上手让我心凉半截:
正面:
背面:
100%防破解的意思就是让人知难而退是么…
现在有两个方向, 一个打开包装, 看看里面什么情况, 一个是在外面抓包看看
首当其冲就是用我的hackrf one进行我臆想中的抓包, hacking…
结果我在433M, 315M搜索半天, 连个毛都抓不到, 搜索网络:
以下两个网站可能需要梯子.
https://github.com/merbanan/rtl_433
https://www.youtube.com/watch?v=Ms5r9o8P6N4&t=236s
发现个东西叫做电视棒, 配合rtl 433这个应用, 加上解码协议, 可以直接解码, 真可谓一步到位, 赶紧淘宝下单加美团跑腿, 在华强北买了个电视棒, 结果收到的时候, 是这样的…
我特么天线呢??? 后来一问卖家, 他说美团收货的时候打开检查了一下, 天线掉出来了, 他不知道, 后来在地上发现了…我操, 我还跑腿呢…白瞎了么不是…
不管了, 从外面先放一边, 先从里面, 两手都要抓, 两手都要硬…得到permission之后, 我拆开了这个简单的热塑封包装 ,里面其实就是一个mcu(下图红色圆圈), 一边点正面的断码屏, 一边驱动无线模块(黄色方框)
关键是这个黄色框的无线模块, 居然连丝印都不磨掉, 上面写300A
结合QFN16封装, 一通google, 发现是华普的CMT2300A这个收发器, 这个收发器居然支持的频率是213~960MHz的, 怪不得我在433附近找不到任何可能的信号呢.
通过查看datasheet, 我找到了无线收发的SPI的4个脚, 如上图, 拉好线, 插入我罗芬(逻辑分析仪), 我滴天…
这货没消停过啊…每20ms就有一次通讯.
接下来就结合华普的datasheet跟FIFO发射说明的文档(这些东西都是华普直接公开在官方网站上的)看看到底单片机跟2300A发了哪些指令, 做了哪些事.
先说明一下, 大约5年前, 在方案公司干的时候, 曾经接触过一个433防丢器的案子, 用的就是cmt的一个芯片, 具体是啥忘了, 但是一个是板载天线绕了一圈我印象很深, 才知道原来433的确可以板载, 一个就是它这个芯片可以脱离MCU使用, 只需要用他们的上位机软件写好寄存器即可, 还能对GPIO响应进行简单编程, 所以做一个防丢器, 甚至遥控车锁, 钥匙啥的, 是没问题的.
这个2300A是另一种情况, 由上位机通过SPI往芯片的寄存器直接写值, 具体的方法我研究了一整天, 总的来说有几点:
如果Node ID不存在, 而数据包为定长, 则数据长度为payload的值+1, payload的值是0x0F, 15+1 = 16
8. 但是兄弟们, 看到是16个字节的时候, 我的心就彻底凉了啊…用16个byte传输本来1个byte甚至4个bit就能传输完的数据, 这就没憋好屁啊…
接下来我怀着沉痛的心情, 把数据都收集起来, 用放到java里面对字符串进行了比对, 应证的以下几点:
最后学到的东西, 跟未解之谜: