Eu sou capaz de fazer telnet em um roteador que está executando um firmware Linux personalizado. Foi compilado usando 'buildroot'.
Consegui descobrir algumas especificações do roteador. Pretendo clonar o firmware do roteador para um estudo mais aprofundado. 'dd' não está disponível, então tentei usar o cat para jogar todo o conteúdo da unidade flash (mtdblock0) no meu pc usando o netcat:
Roteador:
cat /dev/mtdblock0 | nc ip port
PC:
nc -lp port > routerFirmware
Então, 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 eu acho é que 'cat' e 'nc' não são capazes de clonar todo o flash como pretendo. Estou preso aqui. Qualquer ajuda seria apreciada!
Acontece que a etapa de 'clonagem' não era o problema. Meu fornecedor de roteador usou um 'número mágico' não padrão para criar o sistema squashfs. Fui aconselhado a dar uma chance ao sasquatch . Felizmente, o sasquatch leu e entendeu corretamente a compactação do arquivo e outros detalhes, que o unsquash não relatou corretamente.
Resultado: tenho uma réplica do firmware do meu roteador no meu PC que posso estudar e analisar, como eu queria. Parece bom até agora.