Depois de ler um artigo interessante sobre como recuperar informação do nosso telefone/tablet 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 ( grouper - Nexus 7 / tilapia - Nexus 7 3G )
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.
Adicionalmente é necessário editar o ficheiro /etc/udev/rules.d/51-android.rules
Ficheiro /etc/udev/rules.d/51-android.rules
# fastboot protocol on grouper (Nexus 7) TWRP & CWM SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="d001", MODE="0600", OWNER="username"Substituir username pelo username do utilizador
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 onde se encontra montado o sdcard ( UDA ) é a partição /dev/block/mmcblk0p10, 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:
APP -> /dev/block/mmcblk0p3 -> /system CAC -> /dev/block/mmcblk0p5 -> /cache LNX -> /dev/block/mmcblk0p2 MDA -> /dev/block/mmcblk0p9 MSC -> /dev/block/mmcblk0p6 PER -> /dev/block/mmcblk0p8 RDO -> /dev/block/mmcblk0p4 SOS -> /dev/block/mmcblk0p1 UDA -> /dev/block/mmcblk0p10 -> /data & /sdcard USP -> /dev/block/mmcblk0p7
O primeiro passo é colocar o equipamento em modo fastboot, pressionando as teclas VolumeDown+Power.
De seguida executar a TWRP no equipamento com o comando:
Nexus 7 ( grouper )
- # fastboot boot openrecovery-twrp-2.4.1.0-grouper.img
Nexus 7 3G ( tilapia )
- # fastboot boot openrecovery-twrp-2.4.1.0-tilapia.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=1024
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, Nexus 7 3G de 32 GB, o procedimento gerou um ficheiro de 31.3GB.
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, foram recuperados 26011 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, 03 February 2013 - 14:54.