Unsquashfs 失败

逆向工程 固件
2021-06-21 11:20:29

我正在尝试解压缩我用 binwalk 检索到的文件。

DECIMAL     HEX         DESCRIPTION
-------------------------------------------------------------------------------------------------------------------
43892       0xAB74      U-Boot boot loader reference
131072      0x20000     Squashfs filesystem, little endian, version 4.0, compression:gzip, size: 818155 bytes,  712 inodes, blocksize: 131072 bytes, created: Wed Jan  8 16:01:03 2014 
1242666     0x12F62A    uImage header, header size: 64 bytes, header CRC: 0xBFAA8D79, created: Wed Jan  8 12:41:47 2014, image size: 1457340 bytes, Data Address: 0x80002000, Entry Point: 0x80006F30, data CRC: 0x81C66D08, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "MIPS Linux-2.6.32"
1242730     0x12F66A    LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 4631160 bytes
2705410     0x294802    Squashfs filesystem, little endian, version 4.0, compression:gzip, size: 22862751 bytes,  1711 inodes, blocksize: 131072 bytes, created: Wed Jan  8 16:01:06 2014 
26285890    0x1911742   LZMA compressed data, properties: 0x5D, dictionary size: 8388608 bytes, uncompressed size: 1393 bytes
26287433    0x1911D49   gzip compressed data, from Unix, last modified: Thu Jan  9 11:32:52 2014

unsquash -s file.squashfs我得到:

Found a valid SQUASHFS 4:0 superblock on file.squashfs.
Creation or last append time Wed Jan  8 15:01:06 2014
Filesystem size 22326.91 Kbytes (21.80 Mbytes)
Compression gzip
Block size 131072
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Always_use_fragments option is not specified
Xattrs are compressed
Duplicates are removed
Number of fragments 133
Number of inodes 1711
Number of ids 1

但是当我尝试解压图像时:

root@kali:~# unsquashfs file.squashfs
Parallel unsquashfs: Using 3 processors
Lseek failed because Invalid argument
read_block: failed to read block @0x973e11cec35cd74d
read_uids_guids: failed to read id table block
FATAL ERROR aborting: failed to uid/gid table

所以我有点困惑为什么它不会解压。我也尝试过使用 squashfs 的最新工具。谁能给我一些关于如何继续这个问题并调试这个问题的方向?

1个回答

供应商因修改 SquashFS 而臭名昭著。从历史上看,他们这样做是为了修补 LZMA 支持,因为 SquashFS 直到 4.0 版才正式支持 gzip 压缩。尽管 SquashFS 4.0 现在正式支持 gzip 和 LZMA,但许多供应商仍然使用他们的“黑客”版本的 SquashFS。有些人甚至交换了 SquashFS 标头中的 gzip/LZMA 标志(例如,标头报告它实际上是 LZMA 时是 gzip 压缩的)。

试试固件模组工具包中的 unsquashfs 工具那里有大约 20 种不同的 unsquashfs 实用程序,其中一种可能有效(包含的 unsquashfs_all.sh 脚本是您的朋友)。如果它们都不起作用,最好的办法可能是从供应商处为您的设备或其他设备(供应商通常重用代码)寻找 GPL 版本,其中可能包含他们修补的 squashfs 实用程序。