前几天,一位朋友找到了我,说是自己家里的门锁已经换成了指纹锁,出门不用带钥匙,非常方便;
美中一足的是,小区安装的对讲系统是老式的模拟对讲系统,只能通过刷卡开锁;
也没有远程联网的功能,不能通过手机APP开锁。
家里老人外出时经常会忘记带卡,进不了楼下的单元门,非常不方便。
说者无心,听者有意,作为有几十年工作经验的工程师,这点小事都解决不了,感觉面子上挂不住。
我的想法很简单,国内的楼宇对讲系统大多没有安全性可言,通信都不会经过加密;
而且基本上都采用标准的串口协议进行通信;
只需要简简单单几个步骤就能为朋友设计一个手机远程开锁工具。
1)拆开室内分机,用万用表等工作抄电路板,研究数据收发电路。
2)采用示波器、逻辑分析仪等工具进行通信抓包,分析串口参数,如波特率、数据位、超始位等;
3)进行正常的呼叫、摘机、开锁操作,用逻辑分析仪录下整个过程的数据,用其中的通信协议分析功能分析出其中的开锁命令;
4)根据抄板得到的电路图,手动焊接一块数据发送电路;
5)用我们的4G/WiF控制器连接云服务器,其串口连接到数据发送电路;
6)设计一个简单的网页,在网页上提供开锁按键;
当按键被按下时,通过云服务器发送命令给控制器;
控制器收到这后发送抓包得到的开锁命令给楼宇对讲的单元门口机,实现开锁;
说干就干,我让朋友把楼宇对讲分机拆了下来。
送来之后,我把外壳拆开,如下图:
1d931f1875754af39421cbe76dc28084~noop.image?_iz=58558&from=article.jpg
楼宇对讲分机电路板





然后,拿起万用表就着昏黄的灯光,遵照长期积累准备以后传儿不传女的抄板独家秘籍,一顿猛抄。
不多时就把数据收发部分的原理图还原出来,如下图:
af9b393a34e04e9d915a9a38f6a1f720~noop.image?_iz=58558&from=article.jpg
数据收发原理图





果然不用我所料,系统直接采用串口进行通信,只是通过PNP三极管做了电平变化;
将单片机输出的5V逻辑电平转变化12V电平,以实现串口信号的远距离传输;
在单片机收发电路之间通过光耦PC817进行电气隔离;
数据接收通过NPN三极管进行电平变换;
单片机采用了ST的8位处理器STM8S105S6。
抄完板后,把地和串口发送脚用导线引出来,再装好外壳接回到系统;
ecfd4c978cf141bbba68568164dc66e5~noop.image?_iz=58558&from=article.jpg
焊上引线的板子





把示波器接上,抓取单片机发送的数据的波形,
a66c74124ed046cbb5ad4d698cf48aaf~noop.image?_iz=58558&from=article.jpg
数据发送波形





很显然,串口采用了1200bps的波特率,1位停止位,8位数据位,无奇偶校验,1位停止位。
接下来,接上逻辑分析仪,打开电脑;
让朋友下楼按房号呼叫,再摘机、开锁,分析得到开锁命令,一气呵成。
0b86ff9f336540218bc4eda4f162b3ae~noop.image?_iz=58558&from=article.jpg
开锁命令


来源:物联网全栈开发