[记录]手机数据恢复

编程知识 更新时间:2023-05-02 22:04:50

plz save my android data bro

  • warning 1
  • warning 2
  • 前言
  • 工具环境
  • 流程
    • 第一步:在root手机上安装 busybox
    • 第二步:在Linux上安装 adb nc pv
    • 第三步:adb 连接手机并使用 nc dd 设置输入文件
    • 第四步:寻找正确的分区进行导出
  • 第五步,恢复数据

warning 1

以下言论思考完全只是我个人没脑子的想法,作为门外汉,对于各领域的知识并没有深刻的了解。
所以如果写错了不要打我2333

warning 2

不确认刷机是否会 真 · 清空 手机上所有数据的,谨慎操作,或者拼死一搏,刷入第三方 recovery 刷机获取 root 权限应该安全点。
太贵重的资料也不建议去外面的手机店找回,因为会泄露,这么多 XX门 应该是是最好的例证了吧

前言

玩手机不可避免会出现不小心删掉文件想要找回文件,以及想找回以前被删掉的文件的情况,但是市面上的很多工具都是收费的(当然是真的能用),或者是无法正常运行的(面对X米的官方root授权毫无办法,当然你可以刷第三方root XD,但是我没有去尝试,是个思路),这个时候就很头疼了。

幸运的是从网上找到了一种方法,原理是:

  • 通过 ADB 进入获得安卓root授权
  • 通过 nc(netcat) 监听端口 tpc 连接并提供 来传输文件
  • dd 命令提供输入文件(应该说是分区文件?例如 /dev/block/mmcblk0,如果有挂在 sdcard 的话,应该还能看到 sdcard)

工具环境

  • 科学上网
  • 已 root 手机(红X5 plus,官 root)
  • ubuntu
  • adb
  • nc
  • pv

流程

第一步:在root手机上安装 busybox

详情查看 google play 23333
一般会遇到的问题:

busybox 安装失败

在本环境中会出现很玄学的无法对 system 写入 busybox 的问题,导致各种安装失败。
解决方法是重启后第一时间安装 busybox ,怀疑是手机系统会对 system 的 rw 修改给禁止掉,导致无法将 system 从 r 模式修改为 rw 模式。
总之重启就对了

第二步:在Linux上安装 adb nc pv

参考文章中使用 cygwin 来模拟 linux 的运行环境,但是在 nc pv 方面遇到了很多问题,包括 nc 之间连接不上,pv 无法正确监控进程,或者是 pv 没有正确打印等等,所以后来选择了实体 linux 系统并通过实测。
简单来说就是 Cygwin 模拟 linux 凉了,当然小伙伴门还是可以选择尝试一波的,可能我的 Cygwin 环境有问题。

install adb

# 如果安装失败可以根据提示 sudo 或者 update 一下
apt install android-tools-adb android-tools-fastboot
# 检查版本,或者直接 adb 显示用法来检查是否安装成功
adb version

install nc

apt install netcat

install pv

apt install pv

第三步:adb 连接手机并使用 nc dd 设置输入文件

# 让 adb 监听某一个 tcp 端口
adb forward tpc:23333 tcp:23333
# 让 adb 以 root 权限执行命令,有些机型进入 adb shell 后 su 命令没有权限,可以尝试这个命令
adb root
# 连接手机
adb shell
su
# nc 监听端口连接 并 dd 设置输入文件,输入文件其实是设备,这样外部 nc 就可以扫描到整个设备的数据并导出了
# busybox nc -l -p 23333 -e busybox dd if=/dev/block/mmcblk0

第四步:寻找正确的分区进行导出

先放结论:

因为手机内存的分区格式是 sdcardfs ,所以第三部导出的镜像虽然包含了所有的分区,但是内存数据所在的分区格式是 sdcardfs ,而 sdcardfs 是VFS和其它文件系统之间的一个中间件,并不是实际的真实访问物理存储设备的文件系统,所以是无法通过数据恢复软件读取分区格式恢复的
因此需要通过 mount 、 df 找出手机内存底层文件系统(实际分区) 并使用第三步进行导出。

原来想要讲的话:
咳咳,上面的命令我遇到了问题, mmcblk0 应该是整个系统挂载的设备
这里就有个问题了,(现在) 安卓机的存储分区格式是 sdcardfs ,不被主流的数据恢复软件识别
但是经过 通读 sdcardfs.h 全文 我看得懂的部分,知道了 sdcardfs 是基于 Wrapfs 的一种文件管理系统。

# 只有头文件注释是我看的懂得那部分代码2333
 fs/sdcardfs/sdcardfs.h

 The sdcardfs v2.0
   This file system replaces the sdcard daemon on Android
   On version 2.0, some of the daemon functions have been ported
   to support the multi-user concepts of Android 4.4

 Copyright (c) 2013 Samsung Electronics Co. Ltd
   Authors: Daeho Jeong, Woojoong Lee, Seunghwan Hyun,
               Sunghwan Yun, Sungjong Seo

 This program has been developed as a stackable file system based on
 the WrapFS which written by

 Copyright (c) 1998-2011 Erez Zadok
 Copyright (c) 2009     Shrikar Archak
 Copyright (c) 2003-2011 Stony Brook University
 Copyright (c) 2003-2011 The Research Foundation of SUNY

 This file is dual licensed.  It may be redistributed and/or modified
 under the terms of the Apache 2.0 License OR version 2 of the GNU
 General Public License.

找出重点: This program has been developed as a stackable file system based on the WrapFS
好了又要翻资料了,什么是 WrapFS 呢?

简单来说:

  • 要有一个已经通过其它文件系挂载好的底层文件系统目录,mount -t ext4 /dev/block/mmcblk0p1 /system
  • 要将这个已有的、挂载好的目录再挂载到/mnt/wrapfs目录,mount -t ext4 /system /mnt/wrapfs
  • 现在可以通过 wrapfs 来通过底层文件系统访问物理储存设备了

同理可得 知道不,所以 sdcardfs 应该也是同样的道理,于是 使用 df 查看分区信息 ,看能否辨别出手机内存分区。
好了我们现在看到了那个 52G 的大兄弟了,分别是 /data/media 跟 /dev/block/dm-1 选手。

可以看到, 系统将 dm-1 设备挂载在 /data 目录下 ,使得可以通过 /data 访问 dm-1 的文件数据,再将目录 /data/media 挂载到 /mnt/runtime/default/emulated 下,至于这个 /mnt/runtime/default/emulated 是个啥我也不清楚,但是结合上面可以很马后炮地看出,这是一个 VFS和其它文件系统之间的一个中间件,哦对它就是 sdcardfs !好了下面的话可以略过了2333.

我不知道这个究竟是个啥东西,决定 mount 查看系统的分区挂载信息 再说。

显而易见, /data/media 被挂载并通过 sdcardfs 文件系统访问,而 /data 被挂载在 /dev/block/dm-1 上,并通过 ext4 文件系统访问!

第五步,恢复数据

到这里为止,可以决定导出 /dev/block/dm-1 的镜像了, 使用第三步导出镜像即可。
最后是通过 R-Studio 和 Active@ Partition Recovery 测试 (拯救) 了下,确能够恢复删除的文件。

需要注意的是 ,手机官方的云备份服务的某些项目(相册)有可能存放在个人数据中,刷机是会清除个人数据的,为了用户安全肯定是真正删除的 (所以谨慎存放)


工具下载:

  • nc
  • pv

参考文章(注意科学上网):

  • 叶大人:如何正确的对安卓手机进行数据恢复?
  • 製作手機證物映像檔 掌握數位鑑識取證契機
  • 瑞士军刀脑残的使用方法
  • sdcardfs.h 代码
  • fybon:Wrapfs : a stackable file system(一种堆栈式文件系统)

更多推荐

[记录]手机数据恢复

本文发布于:2023-04-29 00:41:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/6f4f425d495b501d01970354f28ea7e4.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据恢复   手机

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 109589文章数
  • 27866阅读数
  • 0评论数