防盗系统 rs485 键盘

逆向工程 串行通讯
2021-07-01 04:25:43


我正在尝试回收防盗系统键盘。
我的目标是将此键盘用作我的系统外围设备。
该键盘通过rs485总线与其主设备连接
为了利用这个键盘,第一步是了解这两个设备之间的通信,主机和它的键盘。
我的第一个想法是点击公共汽车并嗅探交通。
这样做时,我收集了这两个设备之间已建立的对话的一些转储,但是因为点击,我无法知道我记录的字节的方向。
所以我的第二步是玩中间人游戏。

我设置了一个设备来放置在主机和它的键盘之间,切断总线并使用两个收发器,一个面向主机,另一个面向键盘。
然后我编写了一个简单的程序来将所有内容从一个接口转发到另一个接口。
然而,在这种情况下,键盘似乎不会对其主机发送的消息做出反应,这些消息由我的设备广告接收到转发给它。
感觉传输中的某些东西可能是错误的,我的 USB 加密狗上的 rs485 芯片和键盘上的芯片不同(sipex sp485ec键盘 - st 485ecdr USB 加密狗),我尝试直接将逻辑分析仪连接到串行引脚上微控制器。这样做我验证了通过我的 usbdongle 发送字节我可以在 MCU 上的引脚上接收它们。


有人可以给我任何方向来推进我的项目吗?

2个回答

主设备很可能需要键盘在特定时间窗口内应答。添加中间人违反了这些条件。

要分析数据方向,您可以尝试在设备之间的线路中串联一个小值电阻器 (100 — 1k)。将示波器连接到线路。根据驱动线路的哪一侧,信号电压电平会略有不同。

正如经常发生的那样,解决方案比您想象的更简单。
但是在继续告诉大家是哪个问题之前,我想问大家一个简单的问题:
您知道吗,在串行通信中,如果停止位设置错误,您可以成功接收和解码流吗?
坦率地说,我不知道,这就是我将所有时间浪费在这样一个简单问题上的主要原因。
好吧,您也应该明白,根据我的经验,我从未需要更改停止位设置。
从来没有……直到现在。

正如您可能已经猜到的那样,问题在于“停止位”设置错误。
而不是经典的9600,8,n,1这个设置需要9600,8,n,2
你猜怎么着,我需要很长时间才能弄清楚。
我最终直接在 MCU 串行引脚 tx 和 rx 引脚上探测串行数据,因为我担心 rs485 驱动程序可能有问题。
最后,通过比较原始 MASTER 的嗅探波形和我生成的波形,我终于看到了差异。 波形比较 现在我可以成功地将字节传输到这条总线上的设备,并继续我的原始目标,即对协议进行逆向工程,以便在我的自定义防盗系统上使用这个硬件。