Depois de ler um artigo interessante sobre como recuperar informação do nosso telefone quando, por exemplo, o sdcard é apagado ao fazer o unlock do bootloader, por acidente ou até porque o sistema de ficheiros ficou corrompido, decidi contactar o autor e relatar algumas modificações ( #37, #39, #41, #42 ) que fiz ao método que apresentou.
Assim aqui fica a combinação dos dois procedimentos que podem ser muito úteis quando surge um imprevisto e a informação do sdcard é apagada ou fica indisponível por falha do sistema de ficheiros.
Requisitos:
TWRP – Team Win Recovery Project
Cygwin – pv, util-linux
Netcat
Android SDK
Photorec
Instalação dos requisitos em Windows:
Cygwin:
A instalação do Cygwin é linear, apenas há que ter o cuidado de instalar os utilitários pv e util-linux dos repositórios.
Para facilidade de utilização vamos definir a instalação do Cygwin em c:\cygwin.
Netcat:
Extrair o conteúdo da pasta bin do ficheiro Netcat para a pasta c:\cygwin\bin.
Android SDK:
A instalação do Android SDK em ambiente Windows pode ser consultada neste tópico.
Instalação dos requisitos em Linux ( ubuntu ):
Instalação de utilitários:
A instalação dos utilitários pv, util-linux e netcat pode ser feita com o seguinte comando:
- sudo apt-get install pv util-linux netcat-openbsd
Android SDK:
A instalação do Android SDK em ambiente Linux pode ser consultada neste tópico.
O procedimento:
Logo que surge um imprevisto dos que falamos anteriormente, quanto mais rápido pararmos o sistema, maior são as probabilidades de recuperar a informação. Assim o telefone deve ser de imediato desligado. Por esse motivo vamos usar TWRP porque possibilita o acesso necessário sem que o sistema esteja a ser executado e possa rescrever ficheiros por cima dos dados que desejamos recuperar.
A partição correspondente ao sdcard ( userdata ) é a partição /dev/block/mmcblk0p12, no entanto vamos fazer o dump de toda a memória interna do equipamento, ou seja, do dispositivo /dev/block/mmcblk0.
Para referencia, fica abaixo a lista de todas as partições disponíveis no nosso equipamento:
xloader -> /dev/block/mmcblk0p1 sbl -> /dev/block/mmcblk0p2 efs -> /dev/block/mmcblk0p3 param -> /dev/block/mmcblk0p4 misc -> /dev/block/mmcblk0p5 dgs -> /dev/block/mmcblk0p6 boot -> /dev/block/mmcblk0p7 recovery -> /dev/block/mmcblk0p8 radio -> /dev/block/mmcblk0p9 system -> /dev/block/mmcblk0p10 cache -> /dev/block/mmcblk0p11 userdata -> /dev/block/mmcblk0p12 metadata -> /dev/block/mmcblk0p13
O primeiro passo é colocar o equipamento em modo fastboot, pressionando as teclas VolumeUP+VolumeDown+Power.
De seguida executar a TWRP no equipamento com o comando:
- fastboot boot openrecovery-twrp-2.3.2.1-maguro.img
Depois temos que estabelecer a ligação adb com o equipamento. Com o recurso a uma linha de comando ( em windows é necessário usar o Terminal Cygwin ).
- adb forward tcp:5555 tcp:5555
- adb shell
- busybox nc -l -p 5555 -e busybox dd if=/dev/block/mmcblk0 bs=512
Numa outra linha de comando, executamos os seguintes comandos:
- adb forward tcp:5555 tcp:5555
- nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.img
Esta sequência de comandos inicia a transferência do dispositivo /dev/block/mmcblk0, correspondente a toda a memória interna do equipamento e mostra o progresso da mesma. Este procedimento é um processo demorado e que varia mediante a capacidade do equipamento ( 16GB ou 32GB ). No meu caso particular, Galaxy Nexus de 16GB, demorou aproximadamente 01h05m e gerou um ficheiro de 14.7GB.
Depois de terminado o procedimento anterior é altura de utilizar os utilitários Photorec e Testdisk. O download deve ser efectuado de acordo com o ambiente usado. Em Linux ( ubuntu ), os respectivos utilitários podem ser instalados com o comando:
- sudo apt-get install testdisk
Utilitário testdisk:
O utilitário testdisk serve, entre muitas outras coisas, para fazer undelete de ficheiros apagados.
Depois de executar o comando:
- testdisk mmcblk0.img ou ./testdisk mmcblk0.img
Seguir o exemplo dado pela documentação do utilitário testdisk.
Deixo também aqui um exemplo pessoal da imagem do meu equipamento
Os ficheiros ou pastas a vermelho representam os ficheiros ou pastas apagadas.
Utilitário photorec:
O utilitário photorec serve, entre muitas outras coisas, para procurar no espaço livre, ou em toda, a partição ficheiros que foram apagados.
Se apenas se pretende recuperar todos os ficheiros que foram apagados devemos, quando solicitado, escolher procurar no espaço livre. Se por outro lado, a partição foi formatada ou ficou corrompida, devemos escolher procurar em toda a partição.
Depois de executar o comando:
- photorec mmcblk0.img ou ./photorec mmcblk0.img
Seguir o exemplo dado pela documentação do utilitário photorec.
A titulo de exemplo, em menos de um minuto foram recuperado 490 ficheiros da imagem efectuada a partir do meu equipamento. Atenção que irão apareceu muitos ficheiros que não terão interesse algum. Terminado o procedimento ainda fica a faltar o processo moroso de escolher os ficheiros de interesse.
Faço votos que este tutorial nunca vós faça falta, mas se fizer boa sorte para todo o procedimento.
Agradecimentos:
- Wartickler- [GUIDE] Internal Memory Data Recovery - Yes We Can!
- scandiun- [GUIDE] How to make a nandroid backup directly to your computer without using sdcard
Editado por on.one, 28 November 2012 - 09:18.