注意:我了解反向工程二进制文件的技术和法律含义。

我有一个Netgear WGR614v7路由器的固件,它以.chk文件的形式来自Netgear本身,我希望解压缩文件。我的理解是,固件.chk文件是TRX映像之前的头,并且我尝试取消对我没有头文件或带有头文件的文件的解压缩。还是binwalk均未成功。在文件开头附近看到了两个有用的字符串:


AH00I8
U12H064T00_NETGEAR

在十六进制编辑器中检查文件,我m无法找到TRX文件签名(我正在寻找ASCII HDR0)。我也找不到任何形式的压缩魔术值,除了在文件中很远的地方,它们不太可能表示我要查找的实际内容的开始。

我在寻找错误的文件类型吗?

编辑:该固件已从Netgear的站点下载。我尝试切断各种长度,但是找不到合理位置的压缩或TRX标头。还不存在用作防止重复引导固件的方法的IMG图像的特征ff ff ff ff

编辑2:我自己进行了一些搜索,找到了一个解压实用程序。当我将文件切成第一个字符sqz时,该实用程序似乎找到了有效的霍夫曼结构,但大小不匹配。解压缩的结果产生11个字节,而程序警告我:


损坏的数据可能会被霍夫曼部分读取,这给了我奇怪的结果,如此处所示。

评论

可能是文件格式的新旧版本。您可以张贴样品吗?

@nneonneo我用该信息编辑了帖子,

您发现的SQZ实用程序似乎不适用于同一类型的SQZ文件。文件格式似乎完全不同。

#1 楼

文件开始于:

0000000: 4148 3030 4938 e66c 000e aa28 9835 0589  AH00I8.l...(.5..
0000010: 3004 125a 1b39 65ff 47e4 b95c 0001 0014  0..Z.9e.G..\....
0000020: 5531 3248 3036 3454 3030 5f4e 4554 4745  U12H064T00_NETGE
0000030: 4152 0000                                AR..


选择此大小的原因将很快变得清楚。

前四个字节(AH00)可能是文件魔法。只需搜索该字符串即可显示该页面,该页面详细介绍了具有类似结构的其他固件文件。

链接的页面未描述接下来的四个字节。但是,将它们读取为32位大端值(BE32),您会得到0x4938e66c = 1228465772,这似乎是最近的UNIX时间戳(通常值为800,000,000至1,500,000,000)。实际上,它会解码为Fri Dec 5 08:29:32 2008 GMT,这可能是硬件的构建日期(而且我注意到链接的文章具有0x481ac265 = Fri May 2 07:27:33 2008 GMT,这似乎也很合理)。 BE32值给出961064。总文件大小为961116字节,因此这可能是有效负载大小,标头保留了52个字节(从而解释了为什么我选择在此处显示前52个字节)。接下来的32个字节是链接页面所指示的有效负载的MD5和。我删除了前52个字节,然后MD5对结果进行了总结:未知。

接下来的两个字节是0x0014,它是后面字符串的长度(包括两个填充NUL)。虽然我对Netgear路由器不熟悉,但我猜想这是硬件目标的型号/修订版号。 br />
983505893004125a1b3965ff47e4b95c  /tmp/fw.sqz



在原始链接的页面中,有效负载是纯ELF文件。不幸的是,在您的固件中,有效载荷是其他类型的文件,带有神奇的.chk(“压缩”?)。它显然已压缩,但是我无法确定它的压缩方式。目前,这将是一个不完整的答案,直到有人弄清楚压缩格式是什么。

评论


我戳了一下sqz格式,请您看看编辑内容吗?\

– Nanofarad
2014年6月9日22:25