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

2023-11-17

文件恢复的原理

首先简单介绍一下 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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文件恢复原理&&Linux文件恢复工具-foremost&extundelete 的相关文章

  • Linux 中的无缓冲 I/O

    我正在写入大量的数据 这些数据数周内都不会再次读取 由于我的程序运行 机器上的可用内存量 显示为 空闲 或 顶部 很快下降 我的内存量应用程序使用量不会增加 其他进程使用的内存量也不会增加 这让我相信内存正在被文件系统缓存消耗 因为我不打算
  • 如何使用 bash 锁定文件

    我有一个任务从远程服务器同步目录 rsync av email protected cdn cgi l email protection srv data srv data 为了使其定期运行并避免脚本 reEnter 问题 我使用 rsyn
  • 应用程序无缘无故地被杀死。怀疑 BSS 高。如何调试呢?

    我已经在CentOs6 6中成功运行我的应用程序 最近 硬件 主板和内存 更新了 我的应用程序现在毫无理由地被杀死 root localhost PktBlaster PktBlaster Killed 文件和 ldd 输出 root lo
  • 大多数 Linux 系统头文件与 C++ 兼容吗?

    大多数 Linux 系统头文件 API C 兼容吗 今天我试图做这样的事情 include
  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • Linux中的定时器类

    我需要一个计时器来以相对较低的分辨率执行回调 在 Linux 中实现此类 C 计时器类的最佳方法是什么 有我可以使用的库吗 如果您在框架 Glib Qt Wx 内编写 那么您已经拥有一个具有定时回调功能的事件循环 我认为情况并非如此 如果您
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 无法使用 wget 在 CentOS 机器上安装 oracle jdk

    我想在CentOS上安装oracle java jdk 8 我无法安装 java jdk 因为当我尝试使用命令安装 java jdk 时 root ADARSH PROD1 wget no cookies no check certific
  • Pyaudio 安装错误 - “命令‘gcc’失败,退出状态 1”

    我正在运行 Ubuntu 11 04 Python 2 7 1 并想安装 Pyaudio 于是我跑了 sudo easy install pyaudio 在终端中 进程退出并显示以下错误消息 Searching for pyaudio Re
  • 如何将目录及其子目录中的所有 PDF 文件复制到一个位置?

    如何全部复制PDF文件从目录及其子目录到单个目录 实际上还有更多的文件 并且深度有些任意 假设四个目录的最大深度是公平的 我想这些文件需要重命名 如果a pdf例如 位于多个目录中 因为我会adding https ebooks stack
  • 如何在apache 2.4.6上安装apxs模块

    我刚刚用过apt get update我的 apache 已更新为2 4 6 我想安装 apxs 来编译模块 但收到此错误 The following packages have unmet dependencies apache2 pre
  • 如何在shell中输出返回码?

    我正在尝试通过调用自定义 shell 脚本sh bin sh c myscript sh gt log txt 2 gt 1 echo 该命令的输出是创建的后台进程的 PID 我想指导 bin sh保存返回码myscript sh到某个文件
  • 有谁知道在哪里定义硬件、版本和序列号。 /proc/cpuinfo 的字段?

    我想确保我的 proc cpuinfo 是准确的 目前它输出 Hardware am335xevm Revision 0000 Serial 0000000000000000 我可以在代码中的哪里更改它以给出实际值 这取决于 Linux 的
  • ubuntu:升级软件(cmake)-版本消歧(本地编译)[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我的机器上安装了 cmake 2 8 0 来自 ubuntu 软件包 二进制文件放置在 usr bin cmake 中 我需要将 cmake 版本至少
  • 如何通过保持目录结构完整来同步路径中匹配模式的文件?

    我想将所有文件从服务器 A 复制到服务器 B 这些文件在不同级别的文件系统层次结构中具有相同的父目录名称 例如 var lib data sub1 sub2 commonname filetobecopied foo var lib dat
  • SSE:跨页边界的未对齐加载和存储

    我在页面边界旁边执行未对齐加载或存储之前读过某处 例如使用 mm loadu si128 mm storeu si128内在函数 代码应首先检查整个向量 在本例中为 16 个字节 是否属于同一页 如果不属于同一页 则切换到非向量指令 我知道
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • 如何通过ssh检查ubuntu服务器上是否存在php和apache

    如何通过ssh检查Ubuntu服务器上apache是 否安装了php和mysql 另外如果安装的话在哪个目录 如果安装了其他软件包 例如 lighttpd 那么它在哪里 确定程序是否已安装的另一种方法是使用which命令 它将显示您正在搜索
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute

随机推荐

  • 刷脸支付秒过地铁太快太方便

    刷脸支付让人们生活更便捷 公交卡 零钱 手机统统不用带 在广州 坐地铁只要刷脸就可以啦 据媒体报道 近日 广州首个智慧地铁站开通 乘客可以刷脸无感过闸 300毫秒内完成人脸识别 每分钟可通行40人 几年前 刷脸 还是朋友间用来互相调侃的 转
  • 给服务器端的.git瘦身

    一 背景 git库擅长管理文本型的文件 二进制文件一版不建议用git管理 现在我们已经用git管理的二进制文件 并且已经有了上百个提交 多个分支 且存储的二进制文件的总和已经相当庞大 可能几十个G 上百G 这给我们的git管理带来了以下3问
  • 嵌入式C语言之位操作详解

    1 位操作符 位操作直接将两个操作数按照二进制对应进行操作 例 0xaa 位与 0xf0 0xa0 逻辑操作是 两个操作数整体来操作 例 0xaa 逻辑与 0xf0 1 嵌入式的移位操作针对于无符号数 左移时右侧补0 右移时左侧补0 相当于
  • Python爬虫从入门到精通:(12)cookie_Python涛哥

    什么是cookie 是存储在客户端的一组键值对 web中cookie的典型应用 免密登陆 cookie和爬虫之间的关联 sometime 对一张页面进行请求的时候 如何请求的过程中不携带cookie的话 那么我们是无法请求到正确的页面数据
  • P5731 【深基5.习6】蛇形方阵

    题目描述 给出一个不大于 9 的正整数 n 输出n n 的蛇形方阵 从左上角填上 1 开始 顺时针方向依次填入数字 如同样例所示 注意每个数字有都会占用 3 个字符 前面使用空格补齐 输入格式 输入一个正整数 n 含义如题所述 输出格式 输
  • VMware虚拟机安装Linux 系统步骤

    一 获取安装包与系统镜像 VMware安装包下载 直接去访问我之前的博客 安装VMware虚拟化软件 何妨呀 的博客 CSDN博客 分享两个系统镜像资源库 下载Linux系统镜像 清华大学开源镜像站 清华大学开源软件镜像站 Tsinghua
  • [Web前端基础] CSS优先级、JS运算优先级、CSS设置在第几行进行超出部分省略号、JS设置元素样式的六种方式

    CSS优先级 important gt 行内样式 gt id选择器 gt 类选择器 gt 标签选择器 gt 通配符选择器 gt 继承 如果有多个复合选择器选中同一个元素 则需要通过权重计算确定优先级 挡住的是 标签选择器的个数 注意 只要是
  • win11出现:终止代码:SYSTEM SERVICE EXCEPTION解决方案实列(不懂请私信up主)

    有关此问题的详细信息和可能的解决方法 请访问 https www windows com stopcode 如果致电支持人呗 请向他们提供以下信息 终止代码 SYSTEM SERVICE EXCEPTION 终止代码解释 SYSTEM SE
  • Sublime, Vscode 快捷键

    vsCode 快捷键 Tips 编码规范 很多大型开源项目缩进其实不是4个空格 而是两个空格 比如 vue react 源码 当然还是具体看公司的代码是怎么规范的 在 VScode 里设置 tab 为2个空格方法 File Preferen
  • Mathorcup数学建模竞赛第六届-【妈妈杯】B题:车位分布的优化设计与评价(附一等奖获奖论文、C++和matlab代码)

    赛题描述 随着现代社会经济的快速发展 房地产成为国家经济发展中重要的经济增长点之一 而小区内汽车停车位的分布对于小区居民的上下班出行影响很大 请建立数学模型 解决下列问题 问题1 分析评判小区汽车停车位分布是否合理的几个关键指标 建立评判车
  • 基于ESP32的数据采集端

    背景介绍 数据采集设备属于物联网领域的标准件 广泛应用于工业 医疗 通讯以及教育等场景 调研发现 数据采集设备主要由硬件系统和软件代码两部分组成 近年来 随着技术的发展 工程技术人员通过编写各种程序算法 不断的挖掘硬件的性能 不仅降低了硬件
  • 一文读懂selenium自动化测试(基于Python)

    前言 我们今天来聊聊selenium自动化测试 我们都知道selenium是一款web自动化测试的工具 它应该如何去运用呢 我们接着看下去 1 Selenium简介 1 1 Selenium Selenium是一款主要用于Web应用程序自动
  • hive面试题

    Hive面试总结 什么是 Hive Hive结构描述 Hive的优势 内部表 外部表 分区表 分桶表 hive中 排序的种类和适用场景 动态分区和静态分区的区别 使用场景 hive 语句执行顺序 Hive的几种存储方式 列式存储的好处 HQ
  • 《期权、期货及其他衍生产品》读书笔记(第三章:利用期货的对冲策略)

    3 1 基本原理 完美对冲 Perfect Hedge 指完全消除风险的策略 一劳永逸 保完即忘Hedge and Forget Strategy 一旦设定对冲策略后 无需在对其进行调整 空头对冲 Short Hedge 对冲者选择期货的空
  • 前端面试总结

    前端面试 一 计算机网络 1 HTTP和HTTPS HTTP的基本概念 http 是互联网上应用最为广泛的一种网络协议 是一个客户端和服务器端请求和应答的标准 TCP 用于从 WWW 服务器传输超文本到本地浏览器的超文本传输协议 HTTP工
  • java 盲水印实现比其他版本的速度更快 !!!

    该盲水印版本速度上更快 参照了c的底层实现改编的 java 语法 结合先人的经验得以完成 希望能帮助有困惑的朋友 实测代码有效 下面就是我的代码实现 首先是盲水印工具类 导入类 import org bytedeco javacpp Loa
  • C++编译器为类自动生成的函数

    我们可以构建一个空类 class Empty 尽管没有定义任何函数 但我们可以通过以下方式使用这个类 Empty e1 Empty e2 e1 e2 e1 因为当编译器发现你用上述方式使用这个类而却在类声明中没有定义一般构造函数 非复制构造
  • Python Web系列学习1

    1 全栈网络框架 除了封装网络和线程操作 还提供HTTP栈 数据库读写管理 HTML模板引擎等一系列功能的网络框架 Django Flask Tornado是全栈网络框架的典型标杆 Twisted更专注于网络底层的高性能封装而不提供HTML
  • 服务器2008r2启动修复,Windows Server 2008 R2原生启动试用

    IT168 特别策划 6000名IT精英齐聚一堂 与来自微软产品核心研发团队及各个领域数百位顶级专家面对面交流 Tech Ed 2009盛典召开在即 IT168带您一起体验丰富多彩的活动和内容安排 更加深入 专注的互动讨论 IT168 专稿
  • 文件恢复原理&&Linux文件恢复工具-foremost&extundelete

    文件恢复的原理 首先简单介绍一下 Linux 文件系统的最基本单元inode inode 译成中文就是索引节点 每个存储设备 例如硬盘 或存储设备的分区被格式化为文件系统后 应该有两部份 一部份是 inode 另一部份是 block blo