文件恢复原理&&Linux文件恢复工具-foremost&extundelete

文件恢复的原理

首先简单介绍一下 Linux 文件系统的最基本单元inode:

  • inode 译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是 inode,另一部份是 block,block 是用来存储数据用的。

  • 而 inode 呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。

  • inode 为每个文件进行信息索引,所以就有了 inode 的数值。

  • 在 ext3 和 ext4 文件系统中,每个文件都是通过 inode 来描述其数据存放的具体位置,当文件被删除以后,inode 的数据指针部分被清零文件目录区没有太多变化。

  • 文件的读写都是通过 inode 来实现,当 inode 数据指针被清零以后,即便文件内容还在,也没有办法把文件内容组合出来

  • 当 ext3 和 ext4 文件系统中的元数据 metadata 发生变化时,相应的元数据 metadata 在日志文件会有一份拷贝。比如一个文件被删除了,它的 inode 信息会在日志文件中先保存一份,然后把要删除文件 inode 相关信息清零。

  • 这个日志文件是循环使用的,当操作过多时,删除的文件的 inode 日志记录会被新的数据替换,这就彻底丧失了根据 inode 找回数据的机会了。如果是大量文件的删除,这个日志文件会被反复循环利用多次,只留给最后删除的那些文件的恢复机会

linux 操作系统下可以使用 ls –id 或者 stat 命令来查看文件或者目录的 inode 值:

上面信息给出 cat2.jpg 文件的inode号码为:13

文件恢复工具

针对 Linux 下的 ext 文件系统来说,常用的 Linux 文件删除恢复工具有 debugfs、ext3grep、extundelete 等。

  • extundelete 是一个开源的数据恢复工具,支持 ext3、ext4 文件系统。

  • formost 是一个基于文件头和尾部信息以及文件的内建数据结构恢复文件的命令行工具。这个过程通常叫做数据挖掘(data carvubg)。formost 可以分析由 dd、Safeback、Encase 等生成的镜像文件,也可以直接分析驱动器。文件头和尾可以通过配置文件设置,也可以通过命令行开关使用 formost 内建的文件类型。formost 最初是由美国空军特别调查室(Air Force Office of Special Investigations)和信息系统安全研究中心(The Center for Information Systems Security Studies and Research)开发的,现在使用 GPL 许可。Foremost 支持恢复如下格式:avi, bmp, dll, doc, exe, gif, htm, jar, jpg, mbd, mov, mpg, pdf, png, ppt, rar, rif, sdw, sx, sxc, sxi, sxw, vis, wav, wmv, xls, zip

两种命令行工具 foremost 和 extundelete 二者相比,foremost 支持的文件系统比较多(包括 ext2、 ext3 、ext4、vfat、NTFS、ufs、jfs 等)和 extundelete 支持的文件系统较少(ext3、ext4)文件系统。不过 foremost 只能支持恢复特定格式的文件。

foremost

这款工具kali20自带,其它系统安装方法请到到网上搜索

删除文件:

 rm -f cat.jpg

先确定被删除文件的所在分区(因为每个分区都有一个日志文件),我的文件在/home/kali/Desktop/下属于/,而/上挂载了设备 /dev/hda1,查询目标目录的分区:

df

恢复:

sudo foremost -v -t jpg -i /dev/sda1
# -v 打印详细信息
# -t 指定文件类型
# -i 输入流

这里直接给我把被删除的jpg文件全恢复了。。

extundelete

这款工具kali可直接使用命令sudo apt install extundelete进行安装。

要注意:恢复过程不要在误删分区进行,谨防inode.block块相互覆盖(其实使用fooremost也应该注意这个问题)

为了避免以上的问题,下面演示使用的是一个硬盘镜像文件,使用命令 sudo mount attachment.img /mnt 将其挂载到 /mnt可以看到:


取消挂载:

sudo umount /mnt

查看可恢复的文件:

sudo extundelete attachment.img --inode 2 # inode = 2即当前目录的索引节点的位置

# 恢复inode为18的文件:
sudo extundelete attachment.img --restore-inode 18
# 恢复文件名为.cat.jpg的文件:
sudo extundelete attachment.img --restore-file .cat.jpg

回复所有文件:

sudo extundelete attachment.img --restore-all

会在当前目录生成RECOVERED_FILES,恢复的文件就在里面:

参考

https://www.cnblogs.com/liuhui-xzz/p/9666868.html
https://www.yunweiku.com/thread-18915-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值