-1-
中国科技论文在线
U盘数据恢复的研究与实现
易凌鹰
北京邮电大学计算机科学与技术,北京(100876)
摘 要:作为新一代半导体存储器,flash 存储器在密度及访问速度方面有着优越的性能,
这使人们想到用它来制造文件存储器,从而克服磁盘在体积、耗电、抵抗恶劣环境方面的不
足。由于 flash 存储器特有的擦除块结构,使得对它进行数据恢复面临许多问题。本文通过
对 U 盘进行实验研究,找出了一种通过读取 flash 芯片进行数据恢复的方法。
关键词:flash 存储器;U 盘;数据恢复
中图分类号:TP399
0. 引言
“数据恢复”技术,顾名思义、就是面对计算机系统遭受误操作、病毒侵袭、硬件故障、
黑客攻击等事件后,将用户的数据从各种“无法读取”的存储设备中拯救出来,从而将损失减
到最小的技术。数据恢复作为信息安全领域一个研究课题,已经有十几年的发展历史了。国
外数据恢复的研究起步最早,现在已经有比较成熟的商用数据恢复软件和商用数据恢复机,
比如美国的 Ontrack公司开发出了 easyrecovery,俄罗斯的硬盘实验室 ACE开发出了 PC3000
数据恢复机;国内的数据恢复研究起步较晚,但是发展很快,现在比较权威的是以戴士剑先
生为代表的军方研究所和以涂彦晖先生为代表的数据恢复公司。目前计算机取证技术已经逐
渐成为信息安全领域的一个热点。而作为计算机取证当中比较重要的一个功能模块——数据
恢复,在实际的取证过程中越来越体现出它的重要性[1]。
随着技术的发展,FLASH闪存存储设备,比如 U盘,现在越来越成为广大电脑用户存
储数据、备份数据、编辑数据的重要数码载体。由于 FLASH闪存的数据存储原理与传统硬
盘完全不同、大相径庭,因此对于出现严重硬故障的 FLASH闪存存储设备的数据恢复,一
直是困扰国内专业数据恢复机构的技术难题。
本文将分析 U 盘 flash 存储器的存储方法,通过实验研究找出一种通过读取 flash 芯片
来进行数据恢复的方法。
1. Flash存储器与 U盘结构原理
Flash存储器
闪存(flash memory)是一种常用的存储介质,它是一种非易失、防震、节能的存储设备。
通常,闪存由若干个闪存块组成,每个闪存块又分为若干个物理页。闪存块是擦除操作的最
小单位,而读和写都是以页为单位[2]。
以本论文采用的芯片 K9K8G08U0A为例,是一款 2Gx8的 NAND Flash,由 4096个块
组成,每块 128页,每页 4k+128字节,其中的 4k字节是数据存储区,附加的 128字节是备
用区,用于保存一些页面信息及 ECC校验数据等。整个 flash被分为两个 plane,分别有 2048
个块,两个 plane可以同时读写,加快了读写速度。(图 1)
-2-
中国科技论文在线
图 1 K9K8G08U0A芯片物理组织
与磁盘不同,闪存采取异地更新的策略,更新的数据会被放到别的物理页上,而不是覆
盖原来的数据。包含新版本数据的页被称为有效页,新版本数据被称为有效数据。包含旧版
本数据的页被称为无效页,或称为脏页,脏页经过擦除操作后成为空闲页,才可以重新写入
数据。因为闪存是以块为单位执行擦除的,因此需要将脏页所在块上的所有的物理页都擦除,
在擦除之前需要检查此块上是否存在有效页,如果存在就必须先转移到其他块上。因为每个
闪存块的擦除次数有限,一般是在 10万次到 100万次之间,只要有块的擦除次数达到了上
限,闪存数据存储的性能下降。所以需要运用磨损均衡(wear2leveling)算法使擦除操作平均
地发生在各个块上[3]。
U盘结构
由于闪存采用异地更新的缘故,逻辑页与物理页的对应关系一直在改变,所以要正确存
取数据就必须建立一个物理页和逻辑页的映射表[2]。这样,数据更新后只需改变映射表中物
理页的地址,并将原版本数据所在的物理页标示为无效。
为维护逻辑页与物理页映射表,U 盘使用一个主控芯片来控制 flash 芯片的读写,而主
机 PC通过 U盘主控芯片进行数据的读写,并不直接对 flash存储器进行操作。U盘中逻辑
页与物理页映射表由主控芯片自己维护与保存,一般也会写入部分信息到备用区,在主控芯
片失效的情况下,只能从备用区中找寻相应的信息,以将物理数据按逻辑顺序重新组织,如
果主控芯片不将相应内容写入备用区,则很难实现数据恢复。主控芯片是否会将相关信息写
入 flash芯片,可以通过对正常 U盘的实验研究得知。
2. 实验数据设计与写入
FAT文件系统结构
-3-
中国科技论文在线
为了方便实现数据的移动使用,U 盘中普遍使用被各种操作系统广泛支持的 FAT 文件
系统,一个 FAT文件系统包括四个不同的部分。
图 2 FAT文件系统结构
1 保留扇区(主激活区)。位于最开始的位置。第一个保留扇区是引导区(分区启动记
录)。它包括一个称为基本输入输出参数块的区域(包括一些基本的文件系统信息尤其是它
的类型和其它指向其它扇区的指针),通常包括操作系统的启动调用代码。保留扇区的总数
记录在引导扇区中的一个参数中。
2 FAT区域。它包含有两份文档分配表,这是出于系统冗余考虑,尽管它很少使用,即
使是磁盘修复工具也很少使用它。它是分区信息的映射表,指示簇是如何存储的。文档分配
表的大小(占用扇区数)以及每个簇的大小都保存在引导扇区的相应参数中。
3 根目录区域。它是在根目录中存储文档和目录信息的目录表。在 FAT32 下它可以存
在分区中的任何位置,但是在早期的版本中它永远紧随 FAT 区域之后。根目录所在簇号保
存在保留扇区的一个参数中,通常情况下根目录位于第一个簇中,即数据区域开头。
4 数据区域。这是实际的文档和目录数据存储的区域,它占据了分区的绝大部分。通过
简单地在 FAT中添加文档链接的个数可以任意增加文档大小和子目录个数。
Fat 文件系统中,要分配数据簇时总是分配第一个空闲簇,在刚格式化完的新文件系统
中,所有簇都是空闲的,此时往一个文件中连续写入数据时,则数据将按顺序写入连续的逻
辑扇区中。下一小节将根据这个性质,设计基于逻辑扇区号的实验数据。
写入文件数据
格式化完后,根目录位于第一个数据簇,在根目录中新建一个文件,将从第二个簇开始
为它分配空间,从保留扇区数据可以计算出文件开始的逻辑扇区号即第二个簇的扇区号:保
留扇区数+2*文档分配表占用扇区数+第一个簇占用扇区数。
向文件中连续写入数据,将会依次写入以后的逻辑扇区中。为方便后期数据的观察分析,
现将每个逻辑扇区以 16个字节的 0xAA开头,0xEE结尾,中间用逻辑扇区号填满,逻辑扇
区号为无符号整形,占四字节,则每个扇区填入(512-32)/4=120个数,填入后效果如图 3(该
扇区起始地址为 0x777800,逻辑扇区号为 0x777800/512=0x3BBC)。
-4-
中国科技论文在线
图 3 实验数据写入结果(部分)
将 U 盘数据区写好数据后,就可以拆开 U 盘,取下 flash 芯片,用专用工具读出 flash
芯片上的内容。
3. flash数据分析
用十六进制编辑器打开读出的 flash 数据镜像,由于写入了大量的规律信息,很容易找
到我们写入的各扇区内容,经过观察可以看到,flash 芯片中的内容组织为每个扇区后接 16
个字节的备用区信息(图 4)。
从图 4中也可以看到,flash闪存盘中逻辑地址与物理地址并不相同,逻辑扇区 0x106FC1
位于物理地址 0x20000010处,算上 16字节备用区大小,可以算出该物理地址对应的物理扇
区号应为 0x20000010/(512+16) = 0xF83E1,并不是它的逻辑扇区号。
-5-
中国科技论文在线
图 4 flash芯片物理数据(部分)
并且通过观察可以看到同一物理页中的八个逻辑扇区是连续的,但相邻页之间间隔了八
个逻辑扇区,考虑到 flash芯片为 2个 plane同时读取,猜测中间八扇区存于另一 plane的对
应页中,这样可以同时读取连续的十六个逻辑扇区,在 flash 数据中找到另一 plane 相应的
物理页数据,可以证实这一猜测。因此可以知道 U盘在写入数据时是以 16个扇区为一个逻
辑页写入一对物理块中的同一物理页中。
图 5 一个逻辑页处于两个物理块中
另外通过观察数据还可以看到,同一物理块中的备用区信息中,前三字节内容以计数器
形式变化,第 3字节最高位恒为零,低七位对应逻辑扇区号第 8位~第 15位,前两个字节的
内容也有一定规律,将逻辑页号与备用区前三字节均写为二进制形式,可以看出备用区信息
-6-
中国科技论文在线
与逻辑页号之间的关系。如上图逻辑页号为 0x106FC,备用区前三字节为 0x247F2A,写为
二进制:
0x106FC: 000 1000001101 1111100
0x260D7C:001001 100000110101 111100
可以很容易看出逻辑页号在备用区的存储方法如图 6:
图 6 由备用区信息生成逻辑页号
用 C语言可以写为:
logicPageNumber=(byte2&0x7f)+(byte1<<7)+((byte0&0x3)<<15);
此逻辑页号为 18位,不能表示所有逻辑页,即不同逻辑页可能包含相同逻辑页号,扫
描所有逻辑页号,可以证实这一情况,除了两个 plane中对应物理页逻辑页号相同外,还有
另外一对物理页逻辑号相同,出现在物理块 2048~4095 中,且所有逻辑页号范围为
0~0x1dd7f。查看数据可以知道,物理块 2048~4095中的逻辑页号应加上 0x1dd80。
知道了物理页的逻辑页号,将物理页按逻辑号重新排列起来,就得到了 U 盘的逻辑镜
像,在此基础上就可以使用高级数据恢复工具进行文件系统的扫描与恢复。
4. 结束语
针对 flash 存储器的数据恢复问题,本文提出了一种通过写入静态数据进行实验观察来
实现数据恢复的方法。下一阶段工作将对多种 U 盘进行分析研究,寻找通过扫描统计备用
区信息,实现半自动甚至自动分析的方法。Flash 存储器的使用已经非常广泛,在手机,录
音笔等数码设备中也有大量的存在,基于 Flash存储器的数据恢复将成为数据恢复的重要部
分。
参考文献
[1] 龚勇.Windows下数据恢复的研究[D],成都:电子科技大学,2008
[2] GAL ERAN,TOLEDO and data structures for flash memories[J].ACM Computing
Surveys,2005,37(2):138-163.
[3] 黄德才,邢春波,吕莲.闪存磨损均衡算法综述[N].浙江工业大学学报,2009年 2月第 37卷第 1期.
-7-
中国科技论文在线
Research and Implementation of U Disk Data Recovery
Yi Lingying
Beijing University of Posts and Telecommunications, Beijing (100876)
Abstract
As a new generation of semiconductor memory, flash memory has a superior performance in the
density and speed of access , which makes people think of using it to make file storage, thereby
overcoming the deficiencies of disk in the volume, power consumption, resistance to harsh
environmental .Due to the flash memory's unique block structure, the data recovery of it faces many
this paper,by studying on the U disk,a method of data recovery by reading flash chip is
find.
Keywords: flash memory; U disk; data recovery