很多人都有在使用手机时误删数据的经历,比方说和女朋友分手后把之前一起玩耍的影像资料删除了,结果没过几天又复合了,某天女朋友想和你一起回忆某个温馨时刻,这时候拿不出照片或视频来会非常尴尬。为了避免这类人(Xi)间(Wen)惨(Le)剧(Jian)发生,很有必要掌握一下数据恢复技术。
传统的数据恢复往往借助软件即可完成,例如Easy Recovery,Recuva之类。但这类软件对新的安卓系统手机往往无能为力了,因为从几年前开始,大部分手机生产厂商用“媒体设备”MTP模式替代了大容量USB存储模式,而传统数据恢复软件无法直接对MTP模式加载的手机存储空间进行数据恢复,如图所示。
因此有必要研究适合于目前安卓系统手机的数据恢复方法,本文中主要讨论手机内部存储空间的数据恢复,对于手机TF卡的数据恢复采用传统手段即可完成,本文不再讨论。
目前手机数据恢复的常见方法有三种:
第一种方法:
物理拆解芯片进行数据恢复。通过拆解并取出存储芯片后,借助硬件工具读取芯片的数据后进行数据恢复。这种方法的优点在于不会对存储芯片写入新的数据,能够较好的保护数据的原始状态。缺点也显而易见,这种方法对工具和动手能力要求较高,稍有不慎手机和芯片都有报废风险,普通用户较难独立完成这类操作。
第二种方法:
借助安装在PC端的第三方工具进行数据恢复。目前网络上名气较大的安卓数据恢复工具主要有Wondershare Dr.Fone,Tenorshare-android-data-recovery,7-Data Recovery Suite 等软件,但这类软件普遍存在的问题是,常常无法与手机建立连接,或者在连接后扫描时提示失败,可能是由于安卓系列手机系统定制化程度较高,每家手机制造商都对安卓系统做了或多或少修改的缘故,导致实际效果并不理想,相信很多朋友在用这类软件时也遇到了类似的问题。
第三种方法:
借助安装在手机上的安卓APP进行数据恢复。由于APP直接运行在手机上,因此不存在第二种方法中软件与手机连接失败的问题,这类软件恢复的效果好坏很大程度上取决于软件开发人员使用的数据恢复算法能力的优劣。这类软件有很多,以某数字清理大师为例,某数字清理大师的隐私粉碎功能能够扫描到用户之前删除的部分类型文件,并确实能够对这类文件进行恢复。但其缺点也有很多,主要有四点:一是能够恢复的文件类型有限,主要是针对照片、短信、通话记录等;二是照片时只能一张一张点开恢复,无法批量恢复,操作繁琐;三是数据恢复算法不够强,与传统数据恢复工具如R-Studio和EasyRecovery相比存在不小差距;四是数据只能恢复到手机内部存储空间中,无法选择恢复到SD卡,因此手机原数据存在被新恢复数据覆盖的风险。当然,这些缺点可能与这款软件的定位是隐私粉碎而非隐私恢复相关,这些缺点在很多同类软件上也同样存在,特别是数据恢复能力方面很多软件在这方面功能实在是过于孱弱,第三种方法由于存在诸多弊端同样不能让人满意。
0×01 正确恢复安卓手机数据的姿势
那么到底有没有效果更加理想的数据恢复方法,答案是肯定的。其实以上方法中最大的问题在于,这类软件要么根本不能用,要么恢复能力太弱。如果能借助传统的数据恢复工具的强大算法,那么这类问题自然迎刃而解。下面介绍一种解决方案,能够在很大程度上解决以上方法中的瓶颈。本文中以Nubia Z9 Max NX510J为例进行说明,步骤比较详细以便尽可能照顾不同水平的读者。
第一步,对手机进行Root,Root前需要进入开发者模式并打开USB调试模式。这是最基本的要求,具体如何Root与手机的型号有关,如果实在不会就找身边的异性IT达人帮忙吧。
第二步,在手机中安装BusyBox。建议从Google官方下载,梯子自备,文章中用到的工具会在结尾处提供,懒人自取。BusyBox安装时可选择路径,假设安装在[/system/bin/busybox]。
第三步,将手机与电脑连接。连接后需要安装相应驱动,可借助豌豆荚等工具进行安装。另外需要准备好adb调试工具(adb.exe等文件),可从Android SDK官网下载,Root工具包中一般也会提供。
第四步,电脑中安装32位版本的Cygwin[C:\cygwin],并下载nc.exe和pv.exe,将这两个文件和之前准备好的adb.exe,AdbWinUsbApi.dll,AdbWinUsbApi.dll复制到[C:\cygwin\bin\]目录下。
第五步,运行[C:\cygwin\Cygwin.bat],依次输入下图中的命令,输入后窗口保持打开不要关闭:
adb forward tcp:5555 tcp:5555
adb shell
su
/system/bin/busybox nc -l -p 5555 -e /system/bin/busybox dd if=/dev/block/mmcblk0
第六步,再运行一次[C:\cygwin\Cygwin.bat]打开另一个窗口,依次输入如下命令:
adb forward tcp:5555 tcp:5555
cd /
nc 127.0.0.1 5555 | pv -i 0.5 > mmcblk0.raw
这时窗口上应该会出现如图所示的进度
耐心等待完成后,[C:\cygwin]目录下会出现mmcblk0.raw文件,文件大小等于手机内部存储空间的大小,该文件正是手机内部存储空间的镜像文件。
第七步,打开一款传统的数据恢复工具,由于raw文件是linux文件系统格式,因此需要支持这类系统的软件,经过实际使用测试发现,R-Studio和Easy Recovery均能较好识别这类文件格式,笔者更偏爱R-Studio,因此以这款软件为例。加载刚刚生成的mmcblk0.raw镜像,如图所示。
对镜像中的userdata部分进行扫描,扫描后即可找到被误删除的各类数据,女朋友终于保住了:)
使用这种方法,可以充分利用现有成熟数据恢复软件的恢复技术,大大提高安卓手机数据恢复的成功率。实际测试发现,通过这种方法找回的照片,数量上远远超过市面上各类手机数据恢复软件恢复的照片。国外已经有人写过类似教程,但可能由于对数据恢复软件不够熟悉,在提取镜像后又做了很多画蛇添足的处理,比如利用VhdTool.exe对镜像进行各种后期处理,不仅增加了步骤的繁琐程度,可能还会起到误导作用。
0×02 更多的思考
本文的核心在于对安卓手机镜像的提取,提取出镜像后能做的东西还有很多,比如通过分析wpa_supplicant.conf能够得出某人常去的地方等等。通过本文可以看出,如果淘汰的手机只是简单删除某些敏感文件后就直接交给一些第三方回收机构会存在多么大的风险,网上那么多小视频你觉得是怎么流出来的。如果缺乏对手机信息安全的基本保护意识,那就要承担可能面临的后果,有些后果可能会严重到付出高昂的代价。