确定固件是否可通过 USB 转储/写入?

逆向工程 固件 USB
2021-07-08 11:19:29

我正在寻找设备的固件是否可读和是否可写。该设备有一个 USB 端口,并且该制造商的其他设备已经进行了固件更新(通过 USB),因此这是可行的。

如何确定固件是否可通过 USB 端口访问?如果它有帮助,设备是Cloupor Mini

1个回答

用于固件升级的标准 USB 协议是DFULinux 有 2 个工具来处理 DFU 设备:

dfu-util 更高级,例如允许列出连接的 DFU 设备,例如在我的笔记本电脑上运行时:

# dfu-util -l
dfu-util 0.5

[...]
Found Runtime: [0a5c:21e6] devnum=0, cfg=1, intf=3, alt=0, name="UNDEFINED"

尽管在使用不同的设备及其特性时,这两种工具都可能很有用。

请注意:

  1. 相当多的供应商并没有特意使用 DFU,为此提供了标准的实现和工具。但当然,任何特定设备都可以使用专有升级协议。一种特殊情况是设备仅将 USB 用于异步串行协议 (UART/RS-232) 仿真。
  2. 虽然 DFU 提供了读取和写入固件的方法,但任何特定设备都可以阻止读取作为 IP 保护的基本方法。
  3. 至于写入固件,可能会受到校验码/签名的保护,因此可能无法写入任意固件。

如果您想升级和修改固件,请考虑只购买开放设备(使用社区资源发现它们),避免、忽略和警告其他用户非开放设备。