Clona um dispositivo de bloco usando 'cat'

4

Eu posso fazer telnet em um roteador que está executando um firmware Linux personalizado. Foi compilado usando 'buildroot'.

Eu consegui descobrir algumas especificações do roteador. Eu pretendo clonar o firmware do roteador para um estudo mais aprofundado. 'dd' não está disponível, então eu tentei usar cat para jogar todo o conteúdo da unidade flash (mtdblock0) para o meu pc usando o netcat:

Roteador:

cat /dev/mtdblock0 | nc ip port

PC:

nc -lp port > routerFirmware

Em seguida, no meu PC, usei 'binwalk' para examinar o arquivo baixado. O resultado é:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Squashfs filesystem, little endian, non-standard signature, version 4.0, compression:gzip, size: xxxxxxx bytes, xxx inodes, blocksize: xxxxxx bytes, created: xxxx-xx-xx xx:xx:xx

Parece bom até agora. Mas "# unsquash routerFlash" resulta em:

Can't find a SQUASHFS superblock on routerFlash

A razão mais provável é que 'cat' e 'nc' não são capazes de clonar o flash inteiro como pretendo. Eu estou preso aqui. Qualquer ajuda seria apreciada!

    
por Fulcrum 14.12.2017 / 14:59

1 resposta

2

Acontece que o passo de 'clonagem' não foi o problema. Meu fornecedor de roteadores havia usado 'número mágico' não padrão para criar o sistema squashfs. Fui aconselhado a dar uma chance a sasquatch . Felizmente, o sasquatch leu e entendeu corretamente a compactação de arquivos e outros detalhes, que não foram relatados corretamente.

Resultado: Eu tenho uma réplica do firmware do meu roteador no meu PC, que eu posso estudar e analisar, exatamente como eu queria. Parece bom até agora.

    
por 16.12.2017 / 12:17