durante unos días intenté extraer el sistema de archivos del firmware de un enrutador. Al revisar la imagen que proporciona el proveedor, puedo ver un indicador de SquashFS en ella:
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
52 0x34 uImage header, header size: 64 bytes, header CRC: 0x1A27096C, created: Tue Nov 27 06:52:32 2012, image size: 3448768 bytes, Data Address: 0x80000000, Entry Point: 0x8023A000, data CRC: 0x584BBD98, OS: Linux, CPU: MIPS, image type: OS Kernel Image, compression type: lzma, image name: "Linux Kernel Image"
116 0x74 LZMA compressed data, properties: 0x5D, dictionary size: 33554432 bytes, uncompressed size: 2445108 bytes
983092 0xF0034 Squashfs filesystem, little endian, non-standard signature, version 3.0, size: 2463170 bytes, 637 inodes, blocksize: 65536 bytes, created: Tue Nov 27 06:51:11 2012
Una vez extraído el archivo y revisándolo con hexdump, encontré el siguiente número mágico shsq :
00000000 73 68 73 71 7d 02 00 00 00 00 00 54 03 00 00 08 |shsq}......T....|
00000010 1c 71 b7 a0 12 71 b7 19 1f 73 00 18 03 00 00 00 |.q...q...s......|
00000020 38 72 10 00 c0 02 01 cf 54 b4 50 d4 0c 1f 10 00 |8r......T.P.....|
00000030 00 00 00 00 00 01 00 2c 00 00 00 02 00 a2 bf c2 |.......,........|
00000040 95 25 00 00 00 00 00 b6 95 25 00 00 00 00 00 be |.%.......%......|
Esta no es la primera vez que encuentro este encabezado, pero no pude encontrar una solución para extraerlo.
Cosas que probé hasta ahora:
- Todas las versiones de unsquashfs y firmware-mod-tools.
- Modifique el encabezado de uno conocido que la herramienta de eliminación de fallas pueda reconocer.
- Este parche enlace
Puede encontrar más información sobre este problema en este enlace pero sin solución:
¿Cómo lograr esto?