提取固件BIN文件

逆向工程 固件 二进制
2021-06-20 21:40:05

我正在尝试提取此固件以检查其中的内容,但找不到如何处理此文件。我只能提取和读取 PNG 图像。

Binwalk扫描:

DECIMAL     HEX         DESCRIPTION
-------------------------------------------------------------------------------------------------------
199536      0x30B70     LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 392072 bytes
348272      0x55070     LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 10362880 bytes
994916      0xF2E64     LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 10211328 bytes
3911705     0x3BB019    LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 220534 bytes
4078426     0x3E3B5A    LZMA compressed data, properties: 0x03, dictionary size: 65536 bytes, uncompressed size: 1 bytes
4078457     0x3E3B79    LZMA compressed data, properties: 0x03, dictionary size: 65536 bytes, uncompressed size: 1 bytes
4092314     0x3E719A    LZMA compressed data, properties: 0x40, dictionary size: 4194304 bytes, uncompressed size: 16384 bytes
4098794     0x3E8AEA    LZMA compressed data, properties: 0x40, dictionary size: 4194304 bytes, uncompressed size: 16384 bytes
4100954     0x3E935A    LZMA compressed data, properties: 0x40, dictionary size: 4194304 bytes, uncompressed size: 16384 bytes
4103114     0x3E9BCA    LZMA compressed data, properties: 0x40, dictionary size: 4194304 bytes, uncompressed size: 16384 bytes
4105274     0x3EA43A    LZMA compressed data, properties: 0x40, dictionary size: 4194304 bytes, uncompressed size: 16384 bytes
4121895     0x3EE527    LZMA compressed data, properties: 0x0C, dictionary size: 4194304 bytes, uncompressed size: 50 bytes
4141086     0x3F301E    TIFF image data, big-endian
4141279     0x3F30DF    LZMA compressed data, properties: 0x04, dictionary size: 16777216 bytes, uncompressed size: 196608 bytes
4141359     0x3F312F    LZMA compressed data, properties: 0x04, dictionary size: 16777216 bytes, uncompressed size: 520683520 bytes
4145070     0x3F3FAE    LZMA compressed data, properties: 0x0C, dictionary size: 16777216 bytes, uncompressed size: 61503 bytes
4263936     0x411000    PNG image, 924 x 520, 8-bit/color RGBA, non-interlaced

如何处理这个二进制文件?甚至有可能从中获得一切吗?

固件文件在这里,如果有人想尝试的话。

1个回答

Binwalk 在这个固件文件中做了很好的工作,但是发现了太多的部分。值得一提的是,Binwalk 基于魔法 ID 和其他一些属性来识别类型。在典型的固件中,部分以压缩形式存储,并且可能以加密形式存储。这意味着,有一些高熵部分,可能不包含任何已知的文件类型魔术 ID。

如果您使用十六进制编辑器查看固件文件,您可能会看到它包含不同的部分(由大量 00 或 FF 字节分隔):

0x1000-0x55000: Seems to be a bootloader started with an executable part, which was followed by a compressed part from 0x8000.
0x55000-0x3B984F: Main program
0x3B99EC: Various data parts

通常固件部分以标题开头,所以让我们看看主程序的标题:

固件中的主程序头

我用蓝色标记了零件名称,用绿色标记了零件的大小,用黄色标记了 LZMA 标头。如您所见,LZMA 标头包含解压缩大小 ( 0x9e2000= 10362880),但不包含压缩大小。因此,在不了解标头的情况下,您无法确定压缩数据的结尾,而只能猜测(例如根据熵)。

我们找到了主程序部分,但是Binwalk给出了更多的结果,所以让我们检查其他LZMA部分是否有效(我更改了原始结果中的描述)。

DECIMAL     HEX         DESCRIPTION
-------------------------------------------------------------------------------------------------------
199536      0x30B70     Valid LZMA compressed data containing part of the bootloader or OTA loader
348272      0x55070     Valid LZMA compressed data containing part of the main program
994916      0xF2E64     Valid LZMA compressed data containing other part of the main program
3911705     0x3BB019    Valid LZMA compressed data
4078426     0x3E3B5A    Not LZMA compressed data
4078457     0x3E3B79    Not LZMA compressed data
4092314     0x3E719A    Not LZMA compressed data
4098794     0x3E8AEA    Not LZMA compressed data
4100954     0x3E935A    Not LZMA compressed data
4103114     0x3E9BCA    Not LZMA compressed data
4105274     0x3EA43A    Not LZMA compressed data
4121895     0x3EE527    Not LZMA compressed data
4141086     0x3F301E    TIFF image data, big-endian
4141279     0x3F30DF    Not LZMA compressed data
4141359     0x3F312F    Not LZMA compressed data
4145070     0x3F3FAE    Not LZMA compressed data
4263936     0x411000    PNG image, 924 x 520, 8-bit/color RGBA, non-interlaced

所以,Binwalk 正确识别了前四个 LZMA 压缩部分,我认为它也正确提取了。其他标有 LZMA 压缩数据的部分是误报,因为它是未压缩的数据区,其中包含低熵数据,有时类似于 LZMA 头。

我想提请您注意从 开始的部分0xf2e64正如我之前所说,这个区域应该是基于标题分析的主要部分。但是,在第一个压缩图像之后有一个单独的压缩部分。如果再次检查标题,则第二部分的偏移量为0x55028因此,主图像似乎至少包含两个独立的部分。