我有一个Netgear WGR614v7路由器的固件,它以.chk文件的形式来自Netgear本身,我希望解压缩文件。我的理解是,固件.chk文件是TRX映像之前的头,并且我尝试取消对我没有头文件或带有头文件的文件的解压缩。还是
binwalk
均未成功。在文件开头附近看到了两个有用的字符串:AH00I8
U12H064T00_NETGEAR
在十六进制编辑器中检查文件,我m无法找到TRX文件签名(我正在寻找ASCII
HDR0
)。我也找不到任何形式的压缩魔术值,除了在文件中很远的地方,它们不太可能表示我要查找的实际内容的开始。 我在寻找错误的文件类型吗?
编辑:该固件已从Netgear的站点下载。我尝试切断各种长度,但是找不到合理位置的压缩或TRX标头。还不存在用作防止重复引导固件的方法的IMG图像的特征
ff ff ff ff
。编辑2:我自己进行了一些搜索,找到了一个解压实用程序。当我将文件切成第一个字符
sqz
时,该实用程序似乎找到了有效的霍夫曼结构,但大小不匹配。解压缩的结果产生11个字节,而程序警告我:损坏的数据可能会被霍夫曼部分读取,这给了我奇怪的结果,如此处所示。
#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
评论
可能是文件格式的新旧版本。您可以张贴样品吗?@nneonneo我用该信息编辑了帖子,
您发现的SQZ实用程序似乎不适用于同一类型的SQZ文件。文件格式似乎完全不同。