《WinHex》找回闪存盘的失意数据 winhex数据恢复案例

  [复制链接]
  • TA的每日心情
    开心
    2012-4-25 18:36
  • 签到天数: 1 天

    [LV.1]布衣百姓

    200

    主题

    862

    回帖

    2601

    积分

    Intohard Team

    づ甜甜橙子ぜ

    Rank: 7Rank: 7Rank: 7

    积分
    2601
    发表于 2007-6-28 20:35:47 | 显示全部楼层 |阅读模式
      前几天,一个朋友的重要文稿不见了,系统提示存放文件的U盘没有[wiki]格式化[/wiki],所以不能读出任何有效的文件,情急之下只得请我出马。下面就给大家说说笔者从U盘上找回丢失文件的过程。
      
      小知识:删除的文件为什么可以恢复?
      
      [wiki]存储[/wiki]一个文件的时候,操作系统首先在记录所有空间使用情况的文件分配表([wiki]FAT[/wiki])中找到足够容纳文件的空间,然后把文件内容写到相对应的[wiki]硬盘[/wiki][wiki]扇区[/wiki]上,并在文件分配表中标出该空间已经被占用。删除文件的时候,一般并不对文件所占用的扇区进行操作,而仅仅是在文件分配表中指明哪些空间可以分配给别的文件使用。
      
      这个时候,被删除文件的实际内容仍然存在,可以被恢复。如果删除文件后又创建了新文件,那么被删文件所占用的扇区就有可能被新文件所使用,这时候就无法恢复被删文件的数据了。所以一旦误删除了文件,就不要再对该文件所在的分区进行写操作了,否则有可能覆盖原有数据,造成文件无法恢复。
      
      小知识:恢复文件的三个阶段
      
      1.使用自动化恢复软件
      
      恢复软件(如Finaldata或EasyRecovery等)使用很简单,根据向导的指示操作就可以了。
      
      2.手工恢复被删除数据
      
      手工恢复的原理是直接在存储设备上寻找被删除文件的关键内容。这种方法适合恢复有明显特征而且结构简单的文件,如文本文件。如果文件很大,且分散于磁盘的不同位置,还需要根据文档的内部结构重新组织文档,才能彻底恢复数据。
      
      3.找专业的数据恢复公司
      
      备份数据
      
      由于数据很重要,所以首先要进行备份,万一出现误操作,还可以把U盘恢复到最初的状态。这一步很重要,并且U盘[wiki]容量[/wiki]不大,备份不会占用太大磁盘空间。进行扇区级别的磁盘数据备份有很多工具,如Ghost、winhex和DiskExplorer,下面主要介绍WinHex。WinHex是一个16进制文件编辑工具,可以跳过操作系统的文件系统直接读取磁盘和U盘等设备,从而进行数据恢复。
      
      使用WinHex的“Tools”菜单下面的“Open Disk”命令,打开物理U盘。
      
    1.jpg
      
      在WinHex中看到U盘的引导数据全是“FF”,[wiki]分区表[/wiki]和文件系统完全丢失了。从“Edit”菜单中选择“Define Block”,选择起止为“Beginning of file”和“End of file”。
      
    2.jpg

      然后再从“Edit”菜单中选择“Copy Block”→“Into New File”,把整个U盘的数据写到一个文件中(例如“u.img”),这样就完成了U盘的备份。
      
    3.jpg  
     
      自动恢复
      
      完成备份后,笔者尝试用数据恢复工具Finaldata、EasyRecovery和Recover4All进行恢复,由于U盘容量很小,很快就搜索出很多文件,但是就是没有发现要找的那个重要文件,看来只能手工操作了。
      
      手工修复
      
      确定文件位置
      
      询问朋友得知该文件是中英文混合的Word文档,大部分是中文,含有少量英文,因此笔者决定通过查找文件内容尝试恢复文件。
      
      用WinHex打开前面保存的U盘镜像文件(在镜像文件上进行数据恢复的好处是访问速度比直接访问U盘快,而且还可以避免破坏U盘原有数据。)选择“Search”菜单中的“Find Text”命令,从镜像文件中直接搜索文中包含的英文字符串“control needed”。由于搜索到太多的字符串“control needed”,因此目前还无法对文件进行定位。
      
    4.jpg

      如果能记住部分中文内容,搜索中文可以避免找到太多的结果。Word文档中的中文用Unicode编码,因此打开记事本输入文章包含的中文字符“决策”,另存为Unicode编码的文件(test.txt)。
      
      5.jpg   
      用WinHex打开文件“test.txt”,开始的“FFFE”代表字符编码的顺序,因此随后的“B351567B”就是“决策”的Unicode格式的16进制表示。
      
    6.jpg

      从WinHex的“Search”菜单中选择“Find Hex Values”命令,在U盘镜像文件中搜索“B351567B”。因为WinHex只能以内码的格式显示中文,Unicode格式的中文都显示为乱码,那么如何知道是否找到了正确的数据呢?

    1.jpg

      从搜索到“B351567B”的地方开始选择一段数据,仍然是从“Edit”菜单中选择“Copy Block”→“Into New File”复制到一个新的文件中(noname.txt)。

    2.jpg

      打开记事本,选定刚才保存的文件“noname.txt”,然后将编码格式设置为“Unicode”格式后再打开就可以看到它的真实内容了,经朋友确认,这段文字就是要找的文件的部分内容。

    3.jpg

    定位文件头

      要完整地恢复Word文档,仅找到文件部分内容是不够的,我们需要找到DOC文件的开头(文件头)。用WinHex打开任意一个已知的完好的Word文件,可以看到文件的起始标志字符串为“D0CF11E0”,显示为“邢.唷”。查到DOC文档的特征标志为“D0CF11E0A1B11AE1”。

    4.jpg

    easy提示


      纯文本格式的TXT文件不像Word文档那样有特征标志,但恢复时可以直接用WinHex搜索文件中包含的中文或者英文关键字,确定文件所处位置。

      仍然是使用WinHex的“Find Hex Values”命令,搜索方向设置为“Up”,也就是从刚才找到的特征字符串“决策”的位置往前搜索Word文件的起始标志“D0CF11E0”。

    5.jpg

      找到Word文件起始位置后,选择“Edit”菜单中的“Define Block”,设定块开始的位置为标志字符串“D0CF11E0”开始的地方,根据文件的大小,设定一个估计的结束偏移量,可以尽量大一些,不要太小就可以了。从“Edit”菜单中选择“Copy Block”→“Into New File”把定义的块保存为一个新文件(new.doc)。

    6.jpg

    easy提示


    如何计算块的大小?


      WinHex中的一个偏移量代表一个[wiki]字节[/wiki](Byte),运行Windows自带的计算器,切换到十六进制模式,用结束地址减去开始地址就得到定义块的大小。


      360000-355A00=A600 A600(十六进制)→42496(十进制)

      用Word打开刚才恢复出来的“new.doc”文件,发现就是朋友丢失的那个文件,绝大部分内容都在,格式也正确。

    7.jpg

      从下载评估版的WinHex开始计算,整个恢复过程总共半个小时,仅仅使用WinHex和记事本程序就把丢失的数据恢复了,结果非常令人满意。

    [ 本帖最后由 甜橙 于 2007-10-21 10:47 编辑 ]

    该用户从未签到

    3

    主题

    65

    回帖

    49

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    49
    发表于 2007-6-29 02:31:01 | 显示全部楼层
    不错,支持LZ. [s:2]
  • TA的每日心情
    开心
    2013-5-8 10:59
  • 签到天数: 55 天

    [LV.5]六品通判

    24

    主题

    627

    回帖

    1214

    积分

    [INTOHARD]营长

    Rank: 6Rank: 6

    积分
    1214
    发表于 2007-7-3 16:49:24 | 显示全部楼层
    呵呵,好像还没有完啊,不过还是张见识了
    学习中

    该用户从未签到

    1

    主题

    662

    回帖

    952

    积分

    [INTOHARD]工兵

    Rank: 1

    积分
    952
    发表于 2007-7-3 22:26:00 | 显示全部楼层
    强烈支持!好文章!长见识了!!!!! [s:206]

    该用户从未签到

    1

    主题

    107

    回帖

    103

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    103
    发表于 2007-7-4 12:23:00 | 显示全部楼层
    这种方法我是学会了。。可是有的时候恢复出来的doc文件里会有乱码

    该用户从未签到

    2

    主题

    419

    回帖

    298

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    298
    发表于 2007-7-15 21:06:24 | 显示全部楼层
    thank you [s:206] [s:206]
  • TA的每日心情
    开心
    2015-4-28 17:12
  • 签到天数: 1 天

    [LV.1]布衣百姓

    0

    主题

    77

    回帖

    272

    积分

    [INTOHARD]排长

    Rank: 3Rank: 3

    积分
    272
    发表于 2007-7-21 20:48:34 | 显示全部楼层
    学习 [s:205] [s:205]
  • TA的每日心情
    开心
    2015-1-15 15:06
  • 签到天数: 1 天

    [LV.1]布衣百姓

    180

    主题

    389

    回帖

    6406

    积分

    Intohard Team

    Rank: 7Rank: 7Rank: 7

    积分
    6406
    QQ
    发表于 2007-7-22 17:03:25 | 显示全部楼层
    呵很厉害恢复的思路很清晰啊;备份源盘数据为镜像文件 用WINHEX的搜索功能查找文件内容失败后,又创建一个文本文件然后用其代码来搜索。前面两部我也用过但是最后一步我没有想到,所以又学了一招。不过U盘出错一般都是识别不到了,有没有这方面的工具啊

    该用户从未签到

    0

    主题

    7

    回帖

    55

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    55
    发表于 2007-7-25 04:52:57 | 显示全部楼层
    想请假一下。又创建一个文本文件然后用其代码来搜索,这个步骤怎么进行下去啊,能详细的说明一下吗?或者麻烦你们发个邮件给我,谢谢啊,

    该用户从未签到

    0

    主题

    7

    回帖

    55

    积分

    [INTOHARD]班长

    Rank: 2

    积分
    55
    发表于 2007-7-25 05:06:43 | 显示全部楼层
    づ懂事长甜橙ぜ


    你好,恢复的时候到了 
    用WinHex打开文件“test.txt”,开始的“FFFE”代表字符编码的顺序,因此随后的“B351567B”就是“决策”的Unicode格式的16进制表示。
    这个步骤的时候怎么进行下去啊??很想知道。麻烦你教我一下好不?谢谢。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表