在 ISP 品牌的 WRE2205 上修改/安装库存固件

逆向工程 拆卸 反编译 linux 固件
2021-06-27 08:51:30

作为新促销活动的一部分,我们的 ISP MWeb 为我们提供了一个免费的路由器和 Wifi 扩展器 (WRE2205v2)。它们都根本不起作用(扩展器工作了大约一分钟,然后无缘无故地失败了)。根据评论,它应该是一个不错的中继器,但似乎 Mweb 已经完全搞砸了固件。

这篇博文展示了如何在设备上获得非常基本的 root 访问权限(它运行嵌入式 Linux)(安全性……很差)。到目前为止,我已经确定它是一个 MIPS 设备(file在可执行文件上运行ELF 32-bit MSB executable, MIPS, MIPS-I version 1 (SYSV)文件系统是 squash-fs,所以只读。我还可以使用 tftp 将文件复制到/从设备复制。

我还知道品牌固件和库存固件都使用名为 fw_upgrade 的二进制文件来刷新新固件。我尝试使用http://decompiler.fit.vutbr.cz/decompilation/反编译它们,但我在那里运气不佳。品牌的代码有更多的代码,我假设这些代码会检查有关新固件的内容并防止闪存固件。最后,我尝试将股票 fw_upgrade 复制到设备并运行它,但它失败了,没有错误消息。

我还能做些什么来运行库存固件?

2个回答

对这两个文件的粗略检查表明,两个二进制文件之间升级路径的主要区别在于标记的文件调用名为chkfwid. 如果我正确阅读代码,它会在第一个0x800字节中搜索四个 ASCII 字节1213如果找到,则函数成功,否则失败并终止升级。

我刚让它工作。原来我不需要修改二进制文件。从更新文件中提取 squash-fs 文件系统后,我设法使用 tftp 将 fw_update 复制到设备。运行那个二进制文件 ( /etc/fw_update upg fw.bin) 而不是 ISP 一个工作并刷新了股票固件。二进制文件需要复制到 /etc 或 /var,因为其余部分是只读的。