网站首页 • 包含标签 数据恢复 的所有文章
-
MBR系统主引导记录的结构和作用详解
MBR磁盘分区都有一个引导扇区,称为主引导记录,英文简称为MBR。 MBR的结构 MBR扇区位于整个硬盘的第一个扇区:按照C/H/S地址描述,即0柱面0磁头1扇区;按照LBA地址描述即0扇区。它是一个特殊而重要的扇区。 在总共512字节的MBR扇区中,由四部分结构组成: 1)引导程序:引导程序占用其中的前440字节,其地址在偏移0~偏移1B7H处。 2)Windows磁盘签名:Windows磁盘标签占用引导程序后的4字节,其地址在偏移1B8H~偏移1BBH处,是Windows系统对硬盘初始化时写入的一个磁盘标签。 3)分区表:偏移1BEH~偏移1FDH的64字节为DPT(Disk Partition Table,硬盘分区表),这是MBR中非常重要的一个结构。 4)结束标志:扇区最后的两个字节“55 AA”(偏移1FEH~偏移1FFH)是MBR的结束标志。 用WinHex查看一块硬盘的MBR扇区,其结构如图4-1所示。 图4-1 MBR的结构 MBR的作用 MBR扇区在计算机引导过程中起着举足轻重的作用。计算机在按下电源键以后,开始执行主板的BIOS程序,进行完一系列检测和配置以后,开始按CMOS中设定的系统引导顺序进行引导。 主板BIOS执行完自己的程序后如何把执行权交给硬盘呢?交给硬盘后又执行存储在哪里的程序呢?让我们通过了解MBR的作用来解开这些疑问吧。 引导程序的作用 计算机主板的BIOS程序在自检通过后,会将MBR扇区整个读入内存中,然后将执行权交给内存中MBR扇区的引导程序。引导程序首先会将自己整个搬到一个较为安全的地址中,目的是防止自己被随后读入的其他程序覆盖,因为引导程序一旦被破坏,就会引起计算机死机,从而无法正常引导系统。 系统下一步就会判断读入内存的MBR扇区的最后两个字节是否为“55 AA”,如果不是则报错,在屏幕上会列出错误信息。如果是“55 AA”,接下来引导程序会到分区表中查找是否有活动分区,若有活动分区,则判断活动分区的引导扇区在磁盘中的地址,并将该引导扇区读入内存及判断其合法性,如果是一个合法的引导扇区,随后的引导权就交给这个引导扇区去引导操作系统了,MBR引导程序的使命也就完成了。 Windows磁盘签名的作用 Windows磁盘签名是Windows系统在对硬盘做初始化时写入的一个标签,它是MBR扇区不可或缺的一个组成部分。Windows系统依靠这个签名来识别硬盘,如果硬盘的签名丢失,Windows系统就会认为该硬盘没有初始化。 注意 一块硬盘如果不是系统引导盘,MBR扇区中可以没有引导程序,但是绝对不能没有磁盘签名。 下面就来看看如果硬盘的磁盘签名丢失后的结果。 以图4-2中的“磁盘1”为例来做这个实验。“磁盘1”目前分一个区,状态良好,如图4-2所示。 图4-2 磁盘1 “磁盘1”的MBR扇区及其磁盘签名如图4-3所示。 图4-3 “磁盘1”的MBR扇区及其磁盘签名 当硬盘挂载到Windows操作系统以后,操作系统会读取该硬盘的MBR扇区及其磁盘签名,并将磁盘签名信息记录在注册表中。在这种情况下,如果把这块硬盘的磁盘签名清除,重新启动操作系统,或者把该硬盘卸载后再重新挂载,系统会自动修复该硬盘的磁盘签名。 现在把该硬盘的磁盘签名清除,清除后结果如图4-4所示。 图4-4 硬盘的磁盘签名被清除 现在重新启动计算机,再一次用WinHex打开这块硬盘,发现被清除的磁盘签名又出现了,只是签名信息的最低位字节稍有改变,高位的三个字节与原来还是一致的,如图4-5所示。 图4-5 系统重新写入磁盘签名 从这个例子中可以看出,磁盘签名是不可缺少的,不过有时系统不一定能够自动写入磁盘签名,这种情况硬盘就会提示“没有初始化”。 当我们把图4-2的硬盘MBR中磁盘签名再一次清除,并把它挂载到另外一台计算机上,结果这台计算机的系统没有给该硬盘写入磁盘签名,这块硬盘在系统的磁盘管理中就显示为“没有初始化”,但是分区还是正常的,因为分区表并没有清除,如图4-6所示。 图4-6 硬盘“没有初始化” 分区表的作用 分区表是用来管理硬盘的分区的,如果分区表被清除或者破坏,则硬盘的分区就会丢失。 现在依然以上面那块硬盘为例,把MBR中的分区表清除,其他结构不动,如图4-7所示。 图4-7 清除MBR中的分区表 重新启动计算机后进入磁盘管理,可以看到分区已经没有了,硬盘成为“未指派”,如图4-8所示。 图4-8 分区丢失了 对于分区表是如何管理硬盘分区的,这部分内容将在4.1.2节详细分析。 结束标志的作用 在执行MBR的引导程序时,会验证MBR扇区最后两个字节是否为“55 AA”。如果是“55 AA”才会继续执行下面的程序,如果不是“55 AA”,则程序认为这是一个非法的MBR,那么程序停止执行,同时会在屏幕上列出错误信息。 如果一块MBR结构完好并且有分区的硬盘,其结束标志“55 AA”被破坏后,该硬盘的分区也将无法读取,硬盘会成为“没有初始化”状态。 图4-9所示的硬盘,其分区结构完好。 图4-9 分区结构完好的硬盘 用WinHex将其打开,并且清除结束标志“55 AA”,如图4-10所示。 图4-10 清除MBR的结束标志 重新启动计算机后打开磁盘管理,发现该硬盘的分区已经丢失,并且状态为“没有初始化”,如图4-11所示。 图4-11 硬盘的分区已经丢失 这种情况其实只要通过WinHex打开该硬盘,将MBR的最后两个字节写入“55 AA”,重启计算机后分区和数据都能够重新出现,但千万不能对硬盘做“初始化”,否则分区表将会被清除,下面实际演示一下: 第1步 对“磁盘1”单击鼠标右键,选择“初始化磁盘”命令,如图4-12所示。 图4-12 选择“初始化磁盘”命令 之后出现磁盘选择对话框,如图4-13所示。 图4-13 磁盘选择对话框 第2步 在“磁盘1”前打钩,然后单击“确定”按钮,磁盘1将被初始化,完成后硬盘将“联机”,如图4-14所示。 图4-14 磁盘1初始化完成 做完初始化后硬盘原来的分区并没有回来,硬盘还是“未指派”的。打开WinHex查看MBR,发现分区表信息已经被清除,如图4-15所示。 图4-15 分区表信息已经被清除 这个时候就只能通过重建分区表才能找回数据了。...
-
GPT引导磁盘分区的结构原理
GPT磁盘由6部分结构组成,如图下图所示。 保护MBR 保护MBR位于GPT磁盘的第一个扇区,也就是0号扇区,由磁盘签名、MBR磁盘分区表和结束标志组成,如下图所示。 在保护MBR扇区中没有引导程序,分区表内只有一个表项,这个表项描述一个类型为0xEE的分区,分区起始地址是1号扇区,大小为四个字节所能存储的最大值(FF FF FF FF)。该分区的存在可以使计算机认为这个磁盘是合法的,并且已被使用,从而不再去试图对其进行分区、格式化等操作,而EFI根本不使用这个分区表。 GPT头 GPT头位于GPT磁盘的第二个扇区,也就是1号扇区,该扇区是在创建GPT磁盘时生成的,GPT头会定义分区表的起始位置、分区表的结束位置、每个分区表项的大小、分区表项的个数及分区表的校验和等信息。 GPT头中各个参数的含义见下表 GPT头中各个参数的含义 再用模板的形式看一下GPT头的结构参数,如下图所示。 对这些参数具体分析如下。 ①00H~07H。长度为8字节,是GPT头的签名,十六进制为“45 46 49 20 50 41 52 54”,ASCII码为“EFI PART”。 ②08H~0BH。长度为4字节,表示版本号。 ③0CH~0FH。长度为4字节,是GPT头的总字节数,当前值为92,说明GPT头占用92字节。 ④10H~13H。长度为4字节,是GPT头的CRC校验和。 ⑤14H~17H。长度为4字节,保留不用。 ⑥18H~1FH。长度为8字节,表示GPT头所在扇区号,通常为1号扇区,也就是GPT磁盘的第二个扇区。 ⑦20H~27H。长度为8字节,是GPT头备份的所在扇区号,也就是GPT磁盘的最后一个扇区,当前值为2 503 871。 ⑧28H~2FH。长度为8字节,是GPT分区区域的起始扇区号,当前值为34,GPT分区区域通常都是起始于GPT磁盘的34号扇区。 ⑨30H~37H。长度为8字节,是GPT分区区域的结束扇区号,当前值为2 503 838。 ⑩38H~47H。长度为16字节,是GPT磁盘的GUID。 ⑪ 48H~4FH。长度为8字节,表示GPT分区表的起始扇区号,当前值为2,GPT分区表通常都是起始于GPT磁盘的2号扇区。 ⑫50H~53H。长度为4字节,表示分区表项的个数。Windows系统限定GPT分区个数为128,每个分区占用一个分区表项,所以该值为128。 ⑬54H~57H。长度为4字节,每个分区表项占用字节数,该值固定为128。 ⑭58H~5BH。长度为4字节,是分区表的CRC校验和。 ⑮5CH~1FFH。长度为420字节,保留不用。 分区表 分区表位于GPT磁盘的2~33号扇区,一共占用32个扇区,能够容纳128个分区表项,每个分区表项大小为128字节。因为每个分区表项管理一个分区,所以Windows系统允许GPT磁盘创建128个分区。 每个分区表项中记录着分区的起始和结束地址、分区类型的GUID、分区名字、分区属性和分区GUID,下图是一个GPT磁盘2号扇区的四个分区表项。 分区表项中各参数的含义见下表 分区表项中各个参数的含义 再用模板的形式看一下分区表项的结构参数,如下图所示。 分区表项的模板 对这些参数具体分析如下。 ①00H~0FH。长度为16字节,用来描述分区类型,其类型可以是前面提到过的EFI系统分区(ESP)、微软保留分区(MSR)、LDM元数据分区、LDM数据分区、OEM分区、主分区。 微软公司为GPT分区定义的类型见下表。 分区类型 GUID 微软保留分区(MSR) 16 E3 C9 E3 5C 0B B8 4D 81 7D F9 2D F0 02 15 AE LDM元数据分区 AA C8 08 58 8F 7E E0 42 85 D2 E1 E9 04 34 CF B3 LDM数据分区 A0 60 9B AF 31 14 62 4F BC 68 33 11 71 4A 69 AD 主分区 A2 A0 D0 EB E5 B9 33 44 87 C0 68 B6 B7 26 99 C7 Intel公司为GPT分区定义的类型见下表。 分区类型 GUID 未分配 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 EFI系统分区 C1 2A 73 28 F8 1F 11 D2 BA 4B 00 A0 C9 3E C9 3B 含DOS分区表的分区 02 4D EE 41 33 E7 11 d3 9D 69 00 08 C7 81 F3 9F ②10H~1FH。长度为16字节,是分区表的GUID,这个GUID对于分区来讲是唯一的。 ③20H~27H。长度为8字节,是分区的起始地址,用LBA地址表示,在分区表项1中该值为34,说明第一个分区开始于GPT磁盘的34号扇区。 ④28H~2FH。长度为8字节,是分区的结束地址,用LBA地址表示,在分区表项1中该值为65 569,说明第一个分区结束于GPT磁盘的65 569号扇区。 ⑤30H~37H。长度为8字节,是分区的属性。 ⑥38H~7FH。长度为72字节,是分区的名称,用Unicode码表示。例如,在第一个分区表项中分区名为“Microsoft reserved partition”,说明这是一个微软保留分区;第二个分区表项中分区名为“Basic data partition”,说明这是一个基本数据分区,也就是主分区。 分区区域 GPT分区区域通常都是起始于GPT磁盘的34号扇区,是整个GPT磁盘中最大的区域,由多个具体分区组成,如EFI系统分区(ESP)、微软保留分区(MSR)、LDM元数据分区、LDM数据分区、OEM分区、主分区等。分区区域的起始地址和结束地址由GPT头定义。 GPT头备份 GPT头有一个备份,放在GPT磁盘的最后一个扇区,但这个GPT头备份并不是GPT头的简单复制,它们的结构虽然一样,但其中的参数却有一些区别。 下图所示是一块GPT磁盘的最后一个扇区,也就是其GPT头的备份。 GPT头备份中各个参数的含义如下图所示。 对这些参数具体分析如下。 ①00H~07H。长度为8字节,是GPT头的签名,十六进制为“45 46 49 20 50 41 52 54”,ASCII码为“EFI PART”。 ②08H~0BH。长度为4字节,表示版本号。 ③0CH~0FH。长度为4字节,是GPT头备份的总字节数。当前值为92,说明GPT头备份占用92字节。 ④10H~13H。长度为4字节,是GPT头备份的CRC校验和。 ⑤14H~17H。长度为4字节,保留不用。 ⑥18H~1FH。长度为8字节,表示GPT头备份所在扇区号,当前值为2 503 871号扇区,也就是GPT磁盘的最后一个扇区。 ⑦20H~27H。长度为8字节,是GPT头的所在扇区号,当前值为1号扇区,也就是GPT磁盘的第二个扇区。 ⑧28H~2FH。长度为8字节,是GPT分区区域的起始扇区号,当前值为34,GPT分区区域通常都是起始于GPT磁盘的34号扇区。 ⑨30H~37H。长度为8字节,是GPT分区区域的结束扇区号,当前值为2 503 838。 ⑩38H~47H。长度为16字节,是GPT磁盘的GUID。 ⑪ 48H~4FH。长度为8字节,表示GPT分区表备份的起始扇区号,当前值为2 503 839,这也是分区区域结束地址的下一个扇区,GPT分区表备份通常都是起始于GPT磁盘分区区域结束地址的下一个扇区。 ⑫50H~53H。长度为4字节,表示分区表项的个数。Windows系统限定GPT分区个数为128,每个分区占用一个分区表项,所以该值为128。 ⑬54H~57H。长度为4字节,每个分区表项占用字节数,该值固定为128。 ⑭58H~5BH。长度为4字节,是分区表的CRC校验和。 ⑮5CH~1FFH。长度为420字节,保留不用。 分区表备份 分区区域结束后,紧跟着就是分区表的备份,其地址在GPT头备份扇区中有描述。 分区表备份是对分区表32个扇区的完整备份。如果分区表被破坏,系统会自动读取分区表备份,也就能够保证正常地识别分区。 在图4-207中“GPT分区表备份起始扇区号”参数的值就是分区表备份所在的扇区号了。当前值为2 503 839,跳转到该扇区,看到的内容与GPT磁盘的2号扇区中分区表完全一样,其如下图所示。 其模板如下图所示。 ...
-
数据恢复的原则与数据恢复思路
数据恢复的原则与数据恢复思路如何能让我们的数据更安全?这是每个关心数据安全的人每天的工作。但是,对于“数据安全到底是什么”这个看似简单的问题,却没有几个人能说清楚,即使是数据安全的专业人士也不例外。...
-
2023年5月国赛模拟题
下载地址:点我下载...
-
数据恢复训练教材
[该文章已加密,请点击标题输入密码访问]...
-
whinhex下对pdf文件结构分析
PDF(Portable Document Format)文件是一种用于文档传输和显示的文件格式,也是结构性的文件。通过本文的分析,可以清楚PDF的文件结构和对象寻址原理,对于PDF的文件修复思路也能......
-
HFS+手工提取文件,及知识点
看苹果盘需要把bigending打开第一步:首先找到卷头在没有卷头的情况下,就往下搜索!00找到分配文件,一般苹果盘和ntfs一样,每块扇区数是8在这里往上调8个扇区就是分区起始,分区起始一定要记住,......
-
JPEG图片详细分析
JPEG图片详细分析 简述 JPEG是一个压缩标准,以一幅24位彩色图像为例,JPEG的压缩分为四个步骤: ①颜色转换:在将彩色图像进行压缩之前,必须先对颜色模式进行数据转换。转换完成之后还需要进行数据采样。 ②DCT 变换:是将图像信号在频率域上进行变换,分离出高频和低频信息的处理过程,然后再对图像的高频部分(即图像细节)进行压缩。首先以象素为单位将图像划分为多个8×8的矩阵,然后对每一个矩阵作DCT 变换。把8×8的象素矩阵变成8×8的频率系数矩阵(所谓频率就是颜色改变的速度),频率系数都是浮点数。 ③量化:由于下面第四步编码过程中使用的码本都是整数,因此要对频率系数进行量化,将之转换为整数。数据量化后,矩阵中的数据都是近似值,和原始图像数据之间有了差异,这一差异是造成图像压缩后失真的主要原因。这一过程中,质量因子的选取至为重要。值选得大,可以大幅度提高压缩比,但是图像质量就比较差,质量因子越小图像重建质量越好,但是压缩比越低。 ④编码:编码是基于统计特性的方法。 四个步骤都完成后的JPEG文件,其基本数据结构为两大类型:“段”和经过压缩编码的图像数据。 可以这么简单理解:一幅原图压缩成JPG格式的图片,是先把图片按一定的大小分成小块,再按一定的算法把这些块的亮度和色度进行运算得到比原来数据量更小但可以还原的数据。那么这个算法就是FFDB,亮度和和色度采样就是哈夫曼表(FFC1-FFC4),为什么四个呢,有两个不可以吗?设计者就是这样做了,两次采样,一对交流AC,一对直流DC,我的理解是这样图片的还原力更强,更接近于原图吧。这样算完了的数据就放在FFDA段里了。 我们可以打开 JPEG 文件查看里面的内容, 。 。。。。。。。这是数据部分省略若干字节。。。。。。。。。。。。。。。。 即可看到上面的各个标记段:FFD8,FFDB,FFC0,FFC1—FFC4,FFDA,FFD9等,这几个段是jpg图像文件必须有的,也就是说只要有这几个段图像就可以正常打开并完整清楚的显示出来了。这几个段在图像中的前后顺序也是固定的,不能错了。当然,FFD9段可以没有,就这几个字符,不影响。FFD8不能没有,也不能错。否则图像打不开。 除了FFD8,FFD9这两个段没有内容,就是标志着开头和结束外,其它四类段都有大小和内容,它们的大小都是段后面的两个字节来表示:比如FFDB0043,0043就是这个段的长度,也包括0043这两个字节,但不包括段名FFDB这两个字节,也就是说从0043开头的位置向下跳转67个字节就到了下一段了,下一段一定也是以 FF开头的,不是FFDB就是FFC0,或FFC1,刚才说过了,要是第一个FFDB向下跳67个字节一定是第二个FFDB,这是死的,如果第一个FFDB后面的长度不是0043,而是0084,那么这个图像就只有一个FFDB(量化表),接下来跳132个字节就一定是FFC0段了。如下图: 这说明量化表由两个合成一个了,内容其实还是一样的,也是两个88矩阵。 总之:FFDB量化表一一般有两个(一个亮度一个色度)或者由两合成一个了,那样的图像结构里就只有一个FFDB段了,两个67字节的就变成一个132个字节的FFDB段了,量化表的内容 都是比较小的数字,没有规律,是根据原来图像采样的数据组成的8行8列数字矩阵,为了解压还原图像数据用的。 量化表的实例 上面这个内容,FFDB 标记后的长度值为67,接下来的是 QT 信息,占一个字节; 这里是0,表示这个 QT 表编号为0,并且精度是8bit。然后后面就是64个8x8的 QT 表的各个 item 了。 也即第一个 DQT 量化表的内容表示为十进制是: 这个表即为 JPEG 亮度量化表。 第二个量化表的内容为: 这个表的内容即为 JPEG 色度量化表。 当你打开不同的 JPEG 文件,你会看到这两个表可能也是会有区别的。这个主要是使用了不同的量化方式的结果。 总结:记住第一段前5个字节FFDB004300可以跳到第二段FFDB004301 其它是两个64字节的矩阵不用记。 接下来就是 图像信息段FFC0段了(有个别图片用FFC2来描述图像信息),这段也是固定长度的,17个字节,这17个字节除了宽度和高度以外其它不同的图片基本一样,记住就好了,具体表示如下: 上面这个内容,FFC0 标记后即是长度,为17; 然后是一个字节的数据精度,通常是为8,代表样本位数。 接下来是图片的高度,占两字节,这里即为8,然后是图片的宽度,也为8,这也就是我们定义的8x8的内容。 然后是 component 的个数,这里是3,表示 YUV。接下来是三组数据,每组数据里,第一个是 component ID,第二个是采样系数,这里 Y 的采样系数为22,说明垂直是2,水平是2。 总结:这17个字节的意义要基本搞明白,出题点有两个:一个是分辨率,一个是数据精度,其它的量化表的数量,编号,采样系数和ID各个图片都一样,记住就好了。如果记不住的话用画图新建一个就可以看到了。 Haffman 表FFC4有四个: 上面这个内容,FFC4 标记后的内容为数据长度,再接着的1字节为 Huffman Table 的信息,低4位是 HT ID 号,第5位是 HT 表类型标记,再高三位是为0。 总结:记住这部分的长度,和类型。 长度一般是31和181,类型四个是固定顺利的:00,10,01,11,后面的内容没法记,也不用记。 图像数据段FFDA 这里 SOS 段,长度为 12,后面所含有的 component 数量为 3 个,也即 Y UV。然后后面是各 component 的编号,及对应所使用的 Huffman 表的 ID 是多少。 总结:这12个字节所有的图片都基本一样的。 在这个段的后面就是所有压缩后的数据。直到结束的标记,即 FFD9,EOI(End Of Image)。 当然说过了,FFD9可以没有。 总之:JPG图片格式由FFD8,FFDB,DDC0,FFC4,FFC4,FFC4,FFC4,DDDA组成,它们由其后面的两个字节的大小,并且每个段一定要前后连成一片,而且不能变换顺序。切记! 常见的格式如下: FFD8(FE00010 ...14字节... FFE10022...32字节...)FFDB004300..64字节...FFDB004301...64字节...FFC0001108...14字节...FFC4001F00...28字节...FFC400B510...178字节...FFC4001F01...28字节...FFC400B511...178字节...FFDA000C03010002110311003F00+图片数据部分(注意这部分后面的数据删除变化不影响前面,但前面改了会影响后面,前面括号部分可以没有)。 JPG图个损坏后的损坏后的恢复,请看实例分析。...
-
HFS+手工提取文件,及知识点
看苹果盘需要把bigending打开 首先找到卷头 在没有卷头的情况下,就往下搜索!00找到分配文件, 一般苹果盘和ntfs一样,每块扇区数是8 在这里往上调8个扇区就是分区起始,分区起始一定要记住,因为是手工提取文件的条件之一。 有卷头的情况下,看编录文件, 拿这个数乘每块扇区数再加上分区起始就是编录文件的开始,在编录文件中就可以大概知道部分文件的具体信息, 跳到根目录节点, 看到部分文件的节点号,如果要恢复34号文件下的文件那么就需要找到34号文件节点,跳到34号文件节点下面去看看, 看文件的基本信息就可以把这个文件提取出来了。 找到起始块号和大小,起始块号乘每块扇区数加上分区起始扇区就是文件起始, 完美提取...
-
ntfs文件系统手工提取文件方法及知识点
常驻文件提取 第一步:首先找到DBR这几个重要的参数 在没有DBR 的时候就往下搜索46494C 第二步:找到MFT的扇区位置,一般大盘就是在DBR的基础上往下跳786432*8=6291456 第三步:在MFT的基础下往下跳12个扇区找到bitmap,因为一个文件记录站两个扇区,所以bitmap在第6号文件记录, 第四步:跳到第35号文件记录,35号就是存放分区第一个文件的文件记录位置,那就是在MFT的位置往下跳70个扇区, 第五步:提出文件, 非常驻文件提取 前面一样,找到mft的位置,往下跳70个扇区,找到分区第一个文件的位置,然后在下面找到你要恢复的文件的文件记录, 数据流起始的大小(簇)乘每簇扇区数,然后加上dbr的位置,就是文件的起始位置,然后文件的大小(簇)乘每簇扇区数就是文件的扇区大小,然后将它提取出来就行了。 碎片提取 同样找到文件的文件记录,看到80属性,然后它的数据流会显示几段,先找到第一段的起始簇号及大小,然后算出第一块碎片的起始扇区和大小,提取出来,然后用第一块的起始扇区加上,第二块的起始大小,就等于第二块碎片的起始,然后算出大小提取出来,如果后面还有第三个碎片,原理也是一样的,然后利用winhex中的碎片合并功能,ALT+k合并,先填文件的名字,然后合并第一个,合并第二个。完成。...