代码改变世界

苹果文件系统数据删除后数据恢复技术难度大

2012-02-13 10:47  魔幻数据  阅读(501)  评论(0编辑  收藏  举报

  苹果主流文件系统是HFS/HFS+/HFSX,广泛应用于苹果硬件产品,其中包括MAC机器、IPHONE、IPAD、IPOD系列。在数据恢复业务 中,经常会碰到苹果设备的数据恢复案例,例如MAC机器误删除了数据,MAC机器分区损坏误格式化等,IPHONE、IPAD同步以后照片等资料丢 失,IPHONE、IPAD误删除文件等等,都属于苹果HFS/HFS+/HFSX文件系统级别的数据丢失,数据恢复也要从文件系统的结构特点去分析挖掘 才能得出正确的恢复方法。
HFS/HFS+/HFSX文件系统采用B+ Tree的文件目录存储结构。当创建一个文件时,操作系统就会往B+ Tree的结构中添加一个节点;当删除一个文件时,就会从B+ Tree的结构中释放一个节点。删除后释放出的节点大都会清空数据指针信息,所以要从原始节点信息去寻找删除文件的指针信息,几乎是不可能的事情。
好在HFS/HFS+/HFSX在格式化的时候可以带有日志功能,就像我写的另一篇文章“给你一个惊喜:EXT3/EXT4文件系统数据删除后的数据恢复”一样,文件系统带有日志功能,对文件的操作记录(创建、更改、删除)会在日志中保留有相关记录信息。
但 是苹果文件系统日志在记录方式上,跟EXT3/EXT4等日志文件系统采用的记录方法不一样,在EXT3/EXT4文件系统上,当删除一个文件,操作系统 先把这个文件的inode节点信息保存在日志文件中,然后才去清除原始inode的数据指针信息,这样我们从日志文件中能找到该文件删除之前的inode 完整的信息,找到inode,我们就能把文件恢复出来。在苹果文件系统中,当创建一个文件时,文件的节点信息先保存在日志里,然后再写入文件系统相应位 置;当删除一个文件时,文件系统把删除后清空的节点信息写入日志中,然后才去更新文件原始节点信息,这样一来,删除文件后,日志文件中的节点信息和文件原 始节点信息都是一样的,都是清空后的节点信息,这个节点信息对于数据恢复来说,没有任何用处!既然这样,我们讨论从日志文件恢复删除文件到底有没有可能 呢?
一切皆有可能!我在开始研究苹果文件系统的时候,也是认为不可能实现文件删除后的恢复,但是经过了几个数据恢复案例以后,我得出的结 论是:有可能恢复!我们来想想,文件的创建、修改、删除,都是往日志中记录节点信息的,在删除的这个环节上,节点信息记录的是清空数据指针后的信息,对数 据恢复没有任何帮助。但是文件系统中文件的存在,它的必经之路是“创建”,有可能还有“修改”,到最后才有可能“删除”,我们从文件的“创建”和“修改” 这两个环节中,去寻找日志中的文件节点记录信息,如果有,就能恢复出来!当然,苹果文件系统的日志文件空间分配也是有限的,当日志文件占满以后,会循环使 用该文件存储空间,如果有大量的文件操作,删除文件以后,不一定能找到它的“创建”和“修改”痕迹,这样就不好恢复,除非文件是连续存放在磁盘中,否则很 难拼接出他的原始内容。
另外,顺便提一下IPHONE的通讯录、短消息、邮件等删除后的恢复技术,对IPHONE中通讯录、短消息、邮件 等删除操作并没有涉及到文件系统成面,涉及到的关键技术是sqllite数据库,经过对sqllite数据库底层结构的完全剖析,通讯录、短消息、邮件等 删除还是可以恢复的,IPHONE经过几代的升级,通讯录、短消息、邮件的记录方式以及预留的反删除选项增加,所以IPHONE通讯录、短消息、邮件等删 除以后,只要没有太多数据写入,数据恢复可能性还是很大的。
根据以上技术分析,我们把苹果文件系统删除数据后的恢复技术集成到了D-Recovery For MAC 数据恢复软件中。想学习的朋友可以从http://www.d-recovery.org上下载。
本文由达思数据恢复总工程师覃廷良撰写,转发请注明出处:http://www.bnuol.com