成功恢复FAT32误格式化后所有碎片文件(已覆盖的除外)

简介:
[摘要]    接至沈阳寄过来的一个FAT32的10GB分区,存储某单位重要的文档(多为DOC和XLS),误格式化!之后客户想过若干种方法,也找过当地一些 数据恢复公司,客户称:用一些数据恢复软件进行恢复(猜测如FINAL DATA等工具),部分文件可找到名称,但恢复出来的数据无法打开,修复后也只能出来少部分数据。
[分析]
    1、接手后观察文件系统损坏情况,格式化前后文件系统结构相同,所以原FAT表全部清0,不可重现。试用几个数据恢复软件进行恢复,只有不到5个文件能够完全打开,还都是像请假条、通知一样的并不很重要的文档。这样可知,市面上所有软件均无法完好恢复。
    2、具体进行磁盘数据区,对原因进行确认。果然,大多数文件均不连续。(原因可能是因为这些重要的文档,像数据库一样频繁改动),直观上看,没有任何规律。格式化后因用户或先前的数据恢复商并未严格遵守不写盘的原则,直接在系统上挂盘,造成系统还原、缩略图、回收站等组件新占用了部分空间,约5000个簇(大约40M),基本占用分区最前边,所以这40M的恢复将很困难。
    3、逆向分析数据的存储过程,根据磁盘扇区的特征及文件内容特性,通过模糊比对算法是有可能进行处理的。但工作量巨大,鉴于客户数据重要,决定一试。
[恢复过程]
    1、通过之前写过的扇区类型分析程序进行扇区类型分析。形成A中间结果
    2、根据A中间结果中的目录节点,分析结构,重组模糊目录树。假设为B中间结果
    3、根据A与B中间结果,结合逆向数据存储过程算法,重建一FAT表。
    4、根据建好的FAT表,映射欲恢复数据的目录项,恢复后测试70%的文件已经恢复成功。
    5、对未成功恢复的文件进行分析,发现这些文件其跳跃性较大,所以程序很难自动分析处理。所以,手工进行分析。
    6、先前正确的文件很有助于进行分析,通过程序将这些不可能存储的空间在虚拟环境中剔除,再将A结果中不符合数据类型的空间剔除。余下的可形成C结果。
    7、针对单个文件,过滤掉存储位置在覆盖范围内的,再分析其特征,与C结果中进行比对,很快发现命中率很高,(此例中,多数文件100%命中),根据分析结构, 恢复数据。将恢复结果,写了一个小程序补充至C结果,减少分析范围和复杂度。
    8、继续第7步,如果有无法恢复的文件,暂时跳过。
    9、待所有文件均处理完成后,返回来再分析8步中遗留的文件,继续7-9步。完成后剩余2个文件还无法恢复。
    10、人工方式仔细分析最后的两个文件,根据簇之间的差异性,做出碎片的判断,经过很长时间的处理(比上面的要复杂得多)。终于恢复成功。两个文件均有4个不连续的碎片,恢复的难度很高。
    11、至此,所以未覆盖的文件100%恢复成功。
[后记]
一、 此例100%恢复也不是必然的,之所以可以完美解决,原因可能有:
        1、文件数目并不是很多,造成存储空间在特征上的复杂程序是有限的,磁盘空间也不很大;
        2、多数文件(尤其在同类型的文件上)表现的碎片还是有一定规律性的,比如客户需要的一个保险的目录,基本其下的所有重要文件都是两个 碎片,且第一个碎片多为1-2个簇,可能是客户先将空表建好后,才后续添入内容的。
        3、程序的自动分析的对关键结构的重建在恢复中起到了至关重要的作用。否则以人工的方式进行分析和恢复,几乎是不可能的。
二、同样的处理方式不光可应用于FAT误格式化,对于只剩下数据、没有文件系统痕迹的恢复同样可以尝试
[广告](转载时请保留)
    如遇相同问题,数据又特别重要,可以通过本文介绍的方式尝试恢复,如果无法自己写出程序或无法理解我的算法,可以联系我进行恢复: [email]zymail@vip.sina.com[/email](张宇) 或13522617215 。 数据恢复服务商在长期合作的前提下可享受代理价。




本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/33856,如需转载请自行联系原作者
目录
相关文章
|
存储 自然语言处理 固态存储
ublk:来自Linux社区的新热点,基于io_uring的全新高性能用户态块设备
如果您想快速了解ublk的意义、作用及性能,请直接看第二节Q&A部分。一、简介用户态块设备,就是提供/dev/ublkbX这样的标准块设备给业务,业务读写这个块的实际IO处理由您编写的用户态的代码决定。这就好比您使用FUSE,所有对挂载于FUSE的目录的读写都是您编写的IO handler来处理一样。使用用户态块设备,您可以方便地向上层业务以块设备/dev/ublkbX的形式提供您的自定义
|
6月前
|
人工智能 数据库
智能体(AI Agent)开发实战之【LangChain】(四)结合大模型基于RAG实现本地知识库问答和纠错
本文介绍如何基于RAG实现知识库问答系统的输入内容纠错功能。通过加载本地知识库、构建向量数据库,结合大语言模型对输入文本进行检索比对与纠错优化,提升问答准确性。
|
算法 大数据 Python
局部异常因子(LOF)
局部异常因子(LOF)
|
机器学习/深度学习 数据采集 人工智能
智能化运维:AI在IT运维中的应用探索###
随着信息技术的飞速发展,传统的IT运维模式正面临着前所未有的挑战。本文旨在探讨人工智能(AI)技术如何赋能IT运维,通过智能化手段提升运维效率、降低故障率,并为企业带来更加稳定高效的服务体验。我们将从AI运维的概念入手,深入分析其在故障预测、异常检测、自动化处理等方面的应用实践,以及面临的挑战与未来发展趋势。 ###
|
Ubuntu 虚拟化
Ubuntu系统 安装与配置 常见异常与解决办法
解决办法:以管理员方式打开cmd命令,输入netsh winsock reset(这个命令是重置网络规范,黑屏的原因很可能就是VMware软件跟本地网络规范有冲突),回车之后提示成功重置winsock目录,您必须重新启动计算机才能重新完成配置。重启后打开即可。
Ubuntu系统 安装与配置 常见异常与解决办法
显示接口之DBI
对于需要UI的产品来说,都会接触到各种各样的显示接口。接下来的几篇文章我们来整理一下常用的显示接口。
|
存储 安全 Linux
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
577 0
|
安全 Docker 容器
上传镜像到DockerHub
如果本地build的镜像需要共享的时候,就需要把镜像推送到镜像仓库,供其他人下载使用。 dockerHub就是这么一个东西。你可以将你的镜像设置为私有或者公有。
1477 0
|
机器学习/深度学习 自然语言处理 算法
GPT-3 vs Bert vs GloVe vs Word2vec 文本嵌入技术的性能对比测试
本文将GPT3与三种传统文本嵌入技术GloVe、Word2vec(Mikolov ,2013 年)和 BERT生成的嵌入进行性能的简单对比。
943 0
GPT-3 vs Bert vs GloVe vs Word2vec 文本嵌入技术的性能对比测试
|
Linux Docker Python
一日一技:限制你的Python程序所能使用的最大内存
一日一技:限制你的Python程序所能使用的最大内存
566 0