使用 USB 控制黑匣子“交通灯”类型的设备

逆向工程 USB
2021-06-19 23:45:07

我有一个黑匣子设备,它有三个可以打开和关闭的 LED,还有一个黑匣子应用程序,它有六个按钮,可以打开和关闭每个单独的 LED。我不知道应用程序的源代码,也不知道“红绿灯”期望什么输入。

我真的很想知道输入被发送到设备,以便我可以自己控制它,最好不要拆卸有问题的设备:)

我尝试使用 USBPcap 安装 Wireshark,并设法捕获按下按钮时发生的情况,但日志令人困惑且不堪重负。有人可以推荐一个攻击方向吗?

1个回答

在我看来,你有三个选择:

  1. 调试和反汇编应用程序以找出哪个函数做什么,然后定位交换协议和数据包格式。希望您能够找到看起来像有效载荷/命令的东西。这将花费大量的时间和精力,尤其是在应用程序已经过编译器优化或混淆的情况下。
  2. 嗅出 USB 流量 - 您已经这样做了 - 并在确定哪些数据字段属于 USB 传输协议而哪些不属于后反转有效负载格式。链接提供您需要了解的有关 USB 协议的所有信息。
  3. 投资逻辑分析仪这是一台神奇的机器,可以帮助逆转几乎任何协议。如果您查看价格范围,对于非常高效和专业的机器(例如)来说,这是相当高的,但是您可以使用Arduino构建自己的机器甚至可以使用基于软件的机器。您还有OpenVizsla,它是一个基于开源 FPGA 的 USB 逻辑分析器/嗅探器。或者,您可以购买Beagle USB,价格昂贵但值得。

如果您采用解决方案 2,则必须及时分离信号。我的意思是:

  • 在 t0 :重置设备
  • 在 t1 :将灯设置为红色并嗅探
  • 在 t2 :重置设备
  • 在 t3 处:将灯设置为绿色并嗅闻等等......

通过这种方式,您可以获得带时间戳的数据,这可以帮助您删除冗余数据并仅保留核心值(有效负载)。

希望这可以帮助。