Como reempacotar um arquivo img extraído de um firmware de dispositivo?

1

Então eu tenho um DVR e obviamente esqueci sua senha. Tentei fazer o telnet, obtive credenciais da internet (acho que são as mesmas para muitos revendedores, já que o fabricante provavelmente é o mesmo), senha do JTR. Mas isso despertou a minha curiosidade, e agora eu só quero mexer com firmware para a diversão. Eu tentei colocar um logotipo personalizado, já que é realmente estúpido, e possivelmente alterar idiomas dos menus para que outras pessoas da minha família também possam operá-lo.

O firmware é fornecido como um arquivo binário. Descompacte-o para 4 arquivos .img.

  • custom-x.cramfs.img
  • logo-x.cramfs.img
  • romfs-x.cramfs.img
  • user-x.cramfs.img

Eu não consegui montá-los, pois havia alguns bytes de cabeçalho adicionados a essas imagens por mkimage , como me disseram algumas postagens no blog.

Saída do comando

arquivo de uma dessas imagens (logotipo):

logo-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 40960 bytes, Fri Jul  4 06:04:30 2014, Load Address: 0x00770000, Entry Point: 0x00780000, Header CRC: 0xBC5511F0, Data CRC: 0xC6BFF7D1

Depois de extrair os 64 bytes de dados com dd , consigo montá-los e acessar os arquivos. Preso tentando adicionar alguns arquivos de lixo apenas para gerar um arquivo de imagem diferente. Como eu poderia proceder para reembalar o img montado depois de fazer alterações / adicionar arquivos? E como devo adicionar novamente os 64 bytes de dados que eu tirei?

Quaisquer pensamentos úteis são apreciados.

    
por Pedro 14.08.2015 / 23:35

1 resposta

0

Suponho que você queira criar squashfs images para flash SPI. Primeiro crie squashfs imagem do seu diretório que deseja:

mksquashfs yourdir romfs.squashfs -b 64K -comp xz

Em seguida, adicione o cabeçalho com os pontos de início e entrada corretos:

mkimage -A arm -O linux -C gzip -T kernel -a 0x50000 -e 0x430000 -n 'linux' -d romfs.squashfs romfs.squashfs.img 
    
por 14.09.2017 / 14:37