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