Como posso montar este arquivo .img e navegar pelo seu conteúdo?

3

Estou interessado em montar uma imagem de firmware e navegar em seu conteúdo. Eu tentei isso com o comando mount , mas recebi alguns erros ("você deve especificar o tipo de sistema de arquivos"). No entanto, acho que pode haver outras questões aqui. Acredito que as informações abaixo devem ser tudo o que preciso para conseguir isso, não tenho certeza do que fazer com essas informações.

Como posso montar esse arquivo .img e navegar em seu conteúdo?

executando file

/root/Downloads/FW_WRT1900AC_1.1.8.164461_prod.img: u-boot legacy uImage, Linux-3.2.40, Linux/ARM, OS Kernel Image (Not compressed), 3856080 bytes, Thu Nov 20 13:45:36 2014, Load Address: 0x00008000, Entry Point: 0x00008000, Header CRC: 0x5CAE7F84, Data CRC: 0xFCF78543

executando fdisk -l

Disk /root/Downloads/FW_WRT1900AC_1.1.8.164461_prod.img: 26 MB, 26345472 bytes
255 heads, 63 sectors/track, 3 cylinders, total 51456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x80811005

Disk /root/Downloads/FW_WRT1900AC_1.1.8.164461_prod.img doesn't contain a valid partition table
    
por KDEx 28.02.2015 / 06:17

1 resposta

3

Os primeiros 3856080 bytes deste arquivo são uma imagem do kernel. Depois disso, há uma imagem do sistema de arquivos. O sistema de arquivos está no offset 3932160 (3856080 arredondado para o próximo múltiplo de 128kB); Eu achei por inspeção, eu não sei onde as informações são armazenadas na imagem (pode estar relacionado ao tamanho do apagamento no dispositivo pretendido). O sistema de arquivos é JFFS2 , que é comum em tais dispositivos.

Sistemas de arquivos JFFS2 não podem ser montados diretamente no Linux, porque o driver do sistema de arquivos requer que o sistema de arquivos esteja no topo de um MTD dispositivo. Você pode usar um dispositivo MTD falso na RAM para contornar essa limitação. Você precisa extrair a imagem JFFS2 da imagem de inicialização; tem que ser um número inteiro de blocos de apagamento. Em poucas palavras:

modprobe mtdram total_size=32768 erase_size=128
modprobe mtdblock
<FW_WRT1900AC_1.1.8.164461_prod.img tail -c +3932161 | head -c 22413312 >/dev/mtdblock0
mount -t jffs2 /dev/mtdblock0 /mnt

Como alternativa, você pode usar os programas jffs2dump e jffs2reader dos MTD utilitários .

<FW_WRT1900AC_1.1.8.164461_prod.img tail -c +3932161 | head -c 22413312 >|FW_WRT1900AC_1.1.8.164461_prod.jffs2
jffs2reader FW_WRT1900AC_1.1.8.164461_prod.jffs2 >FW_WRT1900AC_1.1.8.164461_prod.contents
jffs2reader FW_WRT1900AC_1.1.8.164461_prod.jffs2 -d /
jffs2reader FW_WRT1900AC_1.1.8.164461_prod.jffs2 -f /etc/version
    
por 01.03.2015 / 02:53