解压清点.bin固件更新

逆向工程 linux 二元分析 开箱 固件
2021-06-28 09:29:34

我正在尝试打开一个清晰的固件更新包

可以在 我使用 fwtools 解压固件的供应商下载页面上找到我尝试反转的固件,如本页所述

完成此操作后,我设法获得了“kernel.bin”和“rootfs.bin”。现在我想在这个调制解调器中包含一个新的/额外的证书,并在这个调制解调器(一个 Wimax 一个)中的管理员页面上进行一些编辑。

所以我使用该file工具检查了 rootfs 文件我得到了以下输出:

rootfs.bin: Linux Compressed ROM File System data, little endian size 4280320 version #2 sorted_dirs CRC 0xbf224100, edition 16777728, 268441607 blocks, 1325400384 files

这没什么帮助,所以我尝试了 binwalk 并得到了这个:

  DECIMAL         HEX             DESCRIPTION
-------------------------------------------------------------------------------------------------------
0               0x0             CramFS filesystem, little endian size 4280320 version #2 sorted_dirs CRC 0xbf224100, edition 16777728, 268441607 blocks, 1325400384 files
8               0x8             Squashfs filesystem, big endian, version 2.1, size: 4276396 bytes, 1028 inodes, blocksize: 65536 bytes, created: Fri Jun 22 23:02:36 2012

但是为了完成整个固件文件,我得到了以下输出。

    root@bt:/pentest/reverse-engineering/binwalk# ./binwalk -m /pentest/reverse-engineering/binwalk/magic.binwalk /root/fwtools_20100826c/bin.linux/imw.bin

DECIMAL         HEX             DESCRIPTION
-------------------------------------------------------------------------------------------------------
855032          0xD0BF8         CramFS filesystem, little endian size 4280320 version #2 sorted_dirs CRC 0xbf224100, edition 16777728, 268441607 blocks, 1325400384 files
855040          0xD0C00         Squashfs filesystem, big endian, version 2.1, size: 4276396 bytes, 1028 inodes, blocksize: 65536 bytes, created: Fri Jun 22 23:02:36 20

由于这确实让我感到奇怪,所以我没有继续。我不知道如何解压固件。我想我已经尝试了我知道你可以手动完成的所有事情,固件 mod fit,fwtools,等等!

有人可以阐明我的问题并告诉我如何继续吗?

3个回答

您可以使用十六进制编辑器或dd.

要安装它们,您可以:

  • mount -t cramfs -o loop /firmware/cramfs /mnt/cramfs/
  • mount -t squashfs /firmware/squashfs /mnt/squashfs

CramFS 图像是误报;我怀疑一个 5MB 的固件映像中会有超过 10 亿个文件。

看起来你的 binwalk 签名有点旧;这是我的输出(从主干运行最新的):

DECIMAL     HEX         DESCRIPTION
------------------------------------------------------------------------------------------------------------------- 
14944       0x3A60      LZMA compressed data, properties: 0x6D, dictionary size: 8388608 bytes, uncompressed size: -1 bytes 
855040      0xD0C00     Squashfs filesystem, big endian, version 2.1, size: 4276396 bytes, 1028 inodes, blocksize: 65536 bytes, created: Fri Jun 22 23:02:36 2012

LZMA 映像是 Linux 内核,可以使用 p7zip 或类似实用程序进行解压缩:

$ p7zip -d 3A60.7z

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,1 CPU)

Processing archive: 3A60.7z

Extracting  3A60

Everything is Ok

Size:       3072188
Compressed: 5120472

您将无法挂载 SquashFS 映像,它是非标准的,很可能“被黑”以支持 LZMA 压缩。不幸的是,我无法快速找到可以提取图像的 unsquashfs 版本;最好的办法是向公司提出 GPL 请求(我在他们的下载页面上没有看到任何 GPL 信息),或者找到具有 GPL 代码版本的类似固件。

对于那些无法使用已经建议的答案的人,请按照 Igor Skochinsky 在评论中所说的那样尝试,因为这是唯一对我有用的方法。

或者只是使用 cramfsck/unsquashfs 来提取图像。或 7 拉链

我使用 7z e file.cramfs 并完美地提取了所有文件。