复合文档二进制存储结构通俗讲义及文件头的修复
复合文档文件格式解析-修复照片,word文件必备知识
复合文档文件格式研究复合文档(Compound Document)是一种不仅包含文本而且包括图形、电子表格数据、声音、视频图象以及其它信息的文档。
可以把复合文档想象成一个所有者,它装着文本、图形以及多媒体信息如声音和图象。
目前建立复合文档的趋势是使用面向对象技术,在这里,非标准信息如图像和声音可以作为独立的、自包含式对象包含在文档中。
Microsoft Windows就是使用这种技术,叫做―OLE2 stora ge file format‖或―Microsoft Office compatible storage file format‖。
当然Excel、Word等都是用这种格式存储的。
本文主要研究复合文档的二进制结构,本文的目的就是为另一篇文章《Excel文件格式研究》(创作中)做准备的。
本文是在英文资料的基础上完成的,文中某些术语的翻译可能不够标准,但都会给出英文原名。
关于这方面的中文资料网上几乎找不到,如果您有的话,请发到我的邮箱,谢谢。
由于本人水平有限,文中错误难免,欢迎大家批评指正。
目录第一章仓库与流(Storages and Streams第二章扇区与扇区链(Sectors and Sector Chains第三章复合文档头(Compound Document Header第四章扇区配置(Sector Allocation第五章短流(Short-Streams第六章目录(Directory第七章文件实例剖析第一章仓库与流复合文档的原理就像一个文件系统(文件系统:如FAT与NTFS)。
复合文档将数据分成许多流(Streams),这些流又存储在不同的仓库(Storages)里。
将复合文档想象成你的D盘,D盘用的是NTFS(NT File System)格式,流就相当于D盘里的文件,仓库就相当于D盘里的文件夹。
流和仓库的命名规则与文件系统相似,同一个仓库下的流及仓库不能重名,不同仓库下可以有同名的流。
用WinHex修复损坏的OFFICE复合文档文件头
用WinHex修复损坏的复合文档文件头用WinHex修复损坏的复合文档文件头说明:1、本教程仅仅针对复合文档(比如Word、Excel等)的文件头损坏后的修复.2、请允许我假设你已经了解复合文档的结构,至少你能知道复合文档中的一些术语(比如:SAT、SSAT MSAT、标准流、短流等),否则,请你弥补相关知识后继续阅读本教程(以前我曾发过一个相关内容的帖子:/viewthread.php?tid=37559extra=&page=1 )3、这个教程中涉及到的文档样本大家可以到/thread-40685-1-1.html中下载.4、网上这方面的资料很少,所以本教程中有的名词是自己“命名”的,因此,相关名词请只在本教程中使用和理解!!如有不明白之处,可以相互交流(我的QQ:409133413)现象打开这个文档时出现乱码(如图):分析数据用WinHex打开这个文档,如下图:分析:这个文档的文件头损坏了,继续分析后面的内容损坏没有,现在把这个文档设置为磁盘(如图),复合文档在储存数据的最小单位是块(一个块是512个字节,相当于一个扇区的数据,所以有时我们也把它称为扇区),这样操作后看到的数据可以以一个扇区的形式呈现,便于分析和手工重建。
经过分析数据发现,这个文档好像只有第0扇区的数据完全破坏了,这个扇区的内容是复合文档的文件头内容,网上有恢复复合文档文件头的视频教程(这个论坛上就有!!),好像就是把一个正常的复合文档的前几行数据复制一下就行了,从理论上讲恢复的成功率极小,几乎是0。
因为复合文档的结构和FAT文件系统极其相似,但比它还要复杂一些(涉及到短流、SSAT和MSAT),复合文档的文件头相当于FAT文件系统中的DBR,有很多参数是要根据文件的具体数据进行相应的修改。
下图中红底黑字部分描述的就是一般要修改的内容(有7处,小的文档一般只改其中的5处),其它部分可以用一个正常的复合文档的相应数据代替。
文件二进制头读取-概述说明以及解释
文件二进制头读取-概述说明以及解释1.引言1.1 概述在计算机科学中,文件是存储信息的基本单位。
在操作系统中,每个文件都有一个二进制头(file header),它位于文件的最开始位置,用来存储文件的元数据和其他重要信息。
文件的二进制头是由一系列特定的字节组成的,这些字节可以被解释为文件的类型、大小、创建日期、作者等信息。
文件的二进制头在文件系统中起着非常重要的作用,它是识别和处理不同文件类型的关键。
通过读取文件的二进制头,我们可以快速确定文件的类型,并根据需要采取特定的操作。
文件的二进制头不仅仅包含文件的基本信息,它还可以用于校验文件完整性。
通过检查文件的二进制头,我们可以确保该文件未被篡改或损坏。
这对于保护文件的完整性和安全性非常重要。
要读取文件的二进制头,我们需要使用编程语言提供的相关函数或库。
不同的文件类型可能具有不同的二进制头结构和解析方式,因此我们需要根据文件类型选择相应的读取方法。
在本文中,我们将探讨文件二进制头的定义和作用,并介绍读取文件二进制头的方法。
我们将讨论常见文件类型的二进制头结构,并通过示例代码演示如何读取和解析文件的二进制头。
通过深入研究文件二进制头的相关知识,我们可以更好地理解文件的内部结构,对文件进行更准确和有效的处理。
加深对文件二进制头的理解也有助于我们在文件处理中遇到问题时能够迅速定位和解决。
在接下来的章节中,我们将进一步探讨文件二进制头的重要性以及具体的读取方法。
希望通过本文的阐述,读者能够对文件二进制头有更全面的认识,并在实际开发中能够灵活应用相关的知识。
1.2 文章结构文章结构部分内容:本文共分为三个主要部分:引言、正文和结论。
引言部分主要介绍了文件二进制头读取的背景和概述。
首先,简要介绍了文件二进制头的定义和作用,引起读者对这个话题的兴趣。
接着,给出了本文的结构,并说明了各个部分的内容概要。
最后,明确了本文的目的,即介绍文件二进制头的读取方法和强调其重要性。
微软复合文档的数据修复技术
储
标 识 。
流 “1Table” 中存 储 表 格 ,数 据 流 “CompObj”
2 复 合 文 档 的 数 据 修 复
中存储对象数据 ,数据流 “WordDocument”中 存 储 文 字 内容 ,数据 流 “Summarylnform ̄ion”
1 复 合 文 档 的 文 件 格 式
关键 数 据 。
数据流不能重名;每个复合文档都有一个 叫做 目录 的索 引节 点 都 是 相 对 固定 的 ;但 是 当 索 引
“Root Entry”的根 目录。每一个 目录 和数据 节 点是数据流时 ,其扇 区链首扇 区编号和大小
流 都 有 一 个 索 引 ,这 些 索 引存 储 在 ~ 个 单 独 的 是 最 关 键 的信 息 ,直接 影 响修 复 内容 的正 确 率 ,
流中 ,这个流就叫做全局索 引流 。全 局索引流 可 以通过扫描扇 区分配表识别所有的数据流 ,
由 一 系 列 的 索 引 节 点 组 成 。每 一 个 索 引节 点 表 再 根 据 经 验 尝 试 所 有 的 可 能 性 。
示一个 目录或数据流 ;索 引节 点固定为 128个 2.3数据流 内容修复 字 节 ,每 个 扇 区 可 以包 含 4个 索 引 结 构 。
复 合文 档的 逻辑 结构类 似 一个 小型 的文 件系统 ,其 由 目录和 数据 流组成;数据流相当 于文件系统 中的文件 ,数据流存储在 目录中: 目录 和 数 据 流 都 有 名 字 , 一个 目录 可 以 有 多个
根据 复合 文档 的文 件格 式,针 对其 不 同 的损坏方式 ,数据修复一般分为物理修复 、逻 辑 修 复 和 内 容 修 复 。
文件 格 式是指 计算 机 中存储 文件 的特殊 编 码 方 式 ,用 于 计 算 机 操 作 系 统 识 别 不 同 的文 件类 型, 比如 程序 、文 字、 图片、视 频 等文 件,每一种文件格式通常会关联一个或 多个扩 展 名 , 但 也 可 能 不 关 联 固 定 的 扩 展 名 。 微 软 复合 文档 (以下简称 复 合文 档)是 微软 公 司 制 定 的 文 件 格 式 ,广 泛 应 用 于 Word、Excel、 PowerPoint等 办 公 文 档 中 , 单 一 的 复 合 文 档 可 以包 含 多 个 文 本 、 图形 、 声 音 、 视 频 、 电子 表 格数据 等各种 多媒体 信息。
修复文件头
最近学习了复合文档的格式,在修复复合文档头方面做了不少实践,有了一些心得,经过梳理,做了个例子,把思路和过程介绍给大家,希望能解决你的不时之需!例子中用的文件如下图:名为“实验文档”,是个空文档,里面没有内容,看属性,10,752字节,刚好21扇区,复合文档的文件大小一定是512字节的整数倍,这跟复合文档的设计有关系。
EXCEL,PPT等文件也属于复合文档,也符合这样的特点。
后来我又想,可能有网友会对修复后的文件产生怀疑,没有内容的文件可能说明不了问题,所以我在文件中输入了很短的文本内容!如下图:实验文档是一个正常的文件,另外我用Winhex把该文件的文件头(前面512字节)全部写成了0,最彻底的破坏,保存为“损坏的实验文档”,大家可以用现有的修复软件试一下,能不能修复,我用EasyRecovery Professional没有修复成功!其它的软件没有试过!下面,就请大家跟我一起看,如何把“损坏的实验文档”修复成功!先介绍用到的工具软件Winhex,功能很强大,可以用二进制的方式打开文件,并进行编辑,保存!该软件不仅可以打开文件,还可以打开硬盘,对硬盘数据进行编辑,搜索功能什分强大,用起来非常方便,同时支持脚本,提供API函数。
软件界面如下图:用该软件打开“实验文档”和“损坏的实验文档”,可以对比一下前512字节,为了便于操作,我们需要将文件解释为硬盘,让软件以扇区的方式显示文件内容,看起来直观些!两个文件的在软件里显示如下图:可见,“损坏的实验文档”前面的512字节全是0,文件头被全部破坏,文件无法用office打开!复合文档文件头的定义:Offset Size Contents0 8 复合文档文件标识:D0H CFH11HE0HA1HB1H1AHE1H8 16 此文件的唯一标识(不重要, 可全部为0)24 2 文件格式修订号 (一般为003EH)26 2 文件格式版本号(一般为0003H)28 2 字节顺序规则标识(见3.2)::FEH FFH= Little-EndianFFH FEH= Big-Endian30 2 复合文档中sector的大小(ssz),以2的幂形式存储, sector实际大小为s_size = 2ssz字节(一般为9即512字节, 最小值为7即128字节)32 2 short-sector的大小(见5.1),以2的幂形式存储, short-sector实际大小为s_s_size = 2sssz字节(一般为6即64字节,最大为sector 的大小)34 10 Not used44 4 用于存放扇区配置表(SAT)的sector总数48 4 用于存放目录流的第一个sector的SID (见6)52 4 Not used56 4 标准流的最小大小(一般为4096 bytes), 小于此值的流即为短流。
用WinHex修复损坏的复合文档文件头
用WinHex修复损坏的复合文档文件头说明:1、本教程仅仅针对复合文档(比如Word、Excel等)的文件头损坏后的修复.2、请允许我假设你已经了解复合文档的结构,至少你能知道复合文档中的一些术语(比如:SAT、SSAT MSAT、标准流、短流等)现象打开这个文档时出现乱码(如图):分析数据用WinHex打开这个文档,如下图:分析:这个文档的文件头损坏了,继续分析后面的内容损坏没有,现在把这个文档设置为磁盘(如图),复合文档在储存数据的最小单位是块(一个块是512个字节,相当于一个扇区的数据,所以有时我们也把它称为扇区),这样操作后看到的数据可以以一个扇区的形式呈现,便于分析和手工重建。
经过分析数据发现,这个文档好像只有第0扇区的数据完全破坏了,这个扇区的内容是复合文档的文件头内容,网上有恢复复合文档文件头的视频教程(这个论坛上就有!!),好像就是把一个正常的复合文档的前几行数据复制一下就行了,从理论上讲恢复的成功率极小,几乎是0。
因为复合文档的结构和FAT文件系统极其相似,但比它还要复杂一些(涉及到短流、SSAT和MSAT),复合文档的文件头相当于FAT文件系统中的DBR,有很多参数是要根据文件的具体数据进行相应的修改。
下图中红底黑字部分描述的就是一般要修改的内容(有7处,小的文档一般只改其中的5处),其它部分可以用一个正常的复合文档的相应数据代替。
说明:要修改的文件头内容:1、存放扇区配置表(SAT)的扇区总数(2CH -2FH )2、存放目录流的第一个扇区的SID (30H -33H )3、存放短扇区配置表(SSAT)的第一个扇区的SID (3CH -3FH )4、存放短扇区配置表(SSAT)的扇区总数(40H -43H )5、存放主扇区配置表的第一个扇区的SID (如果为-2表示没有附加扇区)(44H -47H )6、存放主扇区配置表的扇区总数(48H -4BH )7、存放主扇区配置表(MSAT )的第一部分(从4CH 开始,视具体情况决定结束位置)备注:如果文件比较小(存放主扇区配置表的第一部分在第0扇区没有装满),第5、6两部分不用修改!!要修复文件头,一般从扇区配置表(SAT )的数据分析开始,SAT 相当于FAT 文件系统中的FAT 表,它把这个复合文档的各类数据“链”在一起,所以我们反过来通过分析它们的链接情况和相应位置的数据,来分析整个文档的数据结构,最后根据相关信息重建文件头,达到修复文件头的目的。
微软复合文档的数据修复技术
微软复合文档的数据修复技术作者:耿浩然来源:《电子技术与软件工程》2018年第05期摘要随着科学技术和信息技术不断发展,复合文档广泛应用于我们的工作生活中,其在给我们带来便利的同时,也经常碰到文件损坏的问题,甚至造成重要数据丢失。
本文以微软复合文档作为研究对象,针对其文件格式不同的损坏形式进行分析,并提出物理修复、逻辑修复、内容修复等方法,经实验验证本文提出的方法能在一定程度上有效地修复出关键数据。
【关键词】复合文档文件格式数据修复存储1 复合文档的文件格式文件格式是指计算机中存储文件的特殊编码方式,用于计算机操作系统识别不同的文件类型,比如程序、文字、图片、视频等文件,每一种文件格式通常会关联一个或多个扩展名,但也可能不关联固定的扩展名。
微软复合文档(以下简称复合文档)是微软公司制定的文件格式,广泛应用于Word、Excel、PowerPoint等办公文档中,单一的复合文档可以包含多个文本、图形、声音、视频、电子表格数据等各种多媒体信息。
复合文档的物理结构由文件头和扇区组成,文件头就是复合文档最前面的512字节,描述了复合文档的文件签名标识、扇区大小等结构信息,是整个文档最关键的部分;复合文档的其余部分被划分为大小相等的存储空间,每一个存储空间叫做一个扇区(通常为512字节)。
复合文档的扇区分配表相当于FAT32文件系统中的FAT表,用于对分配使用的所有扇区进行编号和标识;每一个数据流都可以在扇区分配表中按照顺序找到其存储位置。
扇区分配表的前109个扇区编号存放在文件头中,当扇区分配表多于109个扇区,需要附加主扇区分配表存储,文件头中已经标识了主扇区分配表的第一个扇区编号和扇区总数。
复合文档的逻辑结构类似一个小型的文件系统,其由目录和数据流组成;数据流相当于文件系统中的文件,数据流存储在目录中;目录和数据流都有名字,一个目录可以有多个子目录和多个数据流,同一目录下的子目录和数据流不能重名;每个复合文档都有一个叫做“Root Entry”的根目录。
文件恢复原理
文件恢复原理文件恢复是指在文件被意外删除、格式化、病毒感染或其他原因导致数据丢失的情况下,通过一定的技术手段将文件恢复到原来的状态。
文件恢复原理主要是通过对存储介质上的数据进行分析和重建,以实现文件的恢复。
下面将从文件存储原理、数据恢复技术和数据恢复原则三个方面来介绍文件恢复的原理。
首先,我们来了解一下文件存储原理。
在计算机中,文件是以二进制数据的形式存储在存储介质上的,比如硬盘、U盘、固态硬盘等。
文件系统会将文件数据分成若干个数据块,然后将这些数据块存储在存储介质上,并记录下每个数据块的位置信息。
当文件被删除或者存储介质发生损坏时,实际上只是删除了文件的记录信息,而文件的数据块仍然存在于存储介质上,只是不再被文件系统所管理。
因此,通过一定的技术手段,可以找回这些被删除或者丢失的文件数据块,从而实现文件的恢复。
其次,我们来介绍一下数据恢复技术。
数据恢复技术主要包括文件系统恢复、数据恢复软件和数据恢复服务三种方式。
文件系统恢复是指通过对文件系统进行修复,来实现文件的恢复。
在文件系统损坏或者文件被意外删除时,可以通过修复文件系统的方式来找回文件。
数据恢复软件是指通过专门的数据恢复软件,对存储介质进行扫描和分析,找回被删除或者丢失的文件。
而数据恢复服务则是指将存储介质交给专业的数据恢复机构或者专家,通过专业的设备和技术手段来实现文件的恢复。
这些技术手段都是基于文件存储原理和数据结构原理来实现的,通过对存储介质上的数据进行分析和重建,来找回被删除或者丢失的文件。
最后,我们来谈谈数据恢复的原则。
在进行数据恢复时,有几个原则是需要遵循的。
首先是及时停止使用存储介质,一旦发现文件被删除或者存储介质出现故障,应立即停止使用,以免新的数据覆盖了被删除或者丢失的文件数据。
其次是选择合适的数据恢复方式,根据实际情况选择合适的数据恢复方式,比如文件系统恢复、数据恢复软件或者数据恢复服务。
再者是保护好存储介质,在进行数据恢复时,要注意保护好存储介质,避免进一步的损坏。
用WinHex修复损坏的复合文档文件头
用WinHex修复损坏的复合文档文件头说明:1、本教程仅仅针对复合文档(比如Word、Excel等)的文件头损坏后的修复.2、请允许我假设你已经了解复合文档的结构,至少你能知道复合文档中的一些术语(比如:SAT、SSAT MSAT、标准流、短流等)现象打开这个文档时出现乱码(如图):分析数据用WinHex打开这个文档,如下图:分析:这个文档的文件头损坏了,继续分析后面的内容损坏没有,现在把这个文档设置为磁盘(如图),复合文档在储存数据的最小单位是块(一个块是512个字节,相当于一个扇区的数据,所以有时我们也把它称为扇区),这样操作后看到的数据可以以一个扇区的形式呈现,便于分析和手工重建。
经过分析数据发现,这个文档好像只有第0扇区的数据完全破坏了,这个扇区的内容是复合文档的文件头内容,网上有恢复复合文档文件头的视频教程(这个论坛上就有!!),好像就是把一个正常的复合文档的前几行数据复制一下就行了,从理论上讲恢复的成功率极小,几乎是0。
因为复合文档的结构和FAT文件系统极其相似,但比它还要复杂一些(涉及到短流、SSAT和MSAT),复合文档的文件头相当于FAT文件系统中的DBR,有很多参数是要根据文件的具体数据进行相应的修改。
下图中红底黑字部分描述的就是一般要修改的内容(有7处,小的文档一般只改其中的5处),其它部分可以用一个正常的复合文档的相应数据代替。
说明:要修改的文件头内容:1、存放扇区配置表(SAT)的扇区总数(2CH -2FH )2、存放目录流的第一个扇区的SID (30H -33H )3、存放短扇区配置表(SSAT)的第一个扇区的SID (3CH -3FH )4、存放短扇区配置表(SSAT)的扇区总数(40H -43H )5、存放主扇区配置表的第一个扇区的SID (如果为-2表示没有附加扇区)(44H -47H )6、存放主扇区配置表的扇区总数(48H -4BH )7、存放主扇区配置表(MSAT )的第一部分(从4CH 开始,视具体情况决定结束位置)备注:如果文件比较小(存放主扇区配置表的第一部分在第0扇区没有装满),第5、6两部分不用修改!!要修复文件头,一般从扇区配置表(SAT )的数据分析开始,SAT 相当于FAT 文件系统中的FAT 表,它把这个复合文档的各类数据“链”在一起,所以我们反过来通过分析它们的链接情况和相应位置的数据,来分析整个文档的数据结构,最后根据相关信息重建文件头,达到修复文件头的目的。
复合文档二进制结构
对复合文档二进制结构(即“劳拉”文件格式)感兴趣的请进引用地址:/d7*******.htm [复制地址│分享到↓new分享到QQ空间分享到豆瓣网分享到新浪微博分享到搜狐微博分享到人人网分享到开心网分享到51社区] 关闭窗口 | 隐藏边栏15501526硬盘高手发表于:08-11-03 11:33 [只看该作者]“劳拉”文件格式是微软复合文档结构的二进制格式,本来按照微软的说法,这种结构应该叫做“复合文档二进制结构”(Compound File Binary Format),但是微软没有公开关于“复合文档二进制结构”的有关内容,大量黑客通过对WORD、EXCEL文件的分析,以及对微软办公软件的跟踪,基本上了解了“复合文档二进制结构”的组成和其中的含义,但是整理出来的毕竟不是微软的官方文档,可能有和微软的定义不一致的地方,同时微软也有权改变这一结构,所以人们使用另外的名称:“劳拉”来描述这种结构。
复合文档”是微软在引入的一种在文件内部存放结构化信息的方法,比如说我们写一篇文章,如果这篇文章没有任何格式信息和嵌入的图像,那么使用没有任何结构的文本格式就可以了,但是一篇完善的文章里面可能有不同的段落、每个段落可能有不同的格式、字体和颜色,段落之间可能还有插图,这样简单的无格式文本就无法满足需要了,所以需要在文件的内部存放很多结构,包括段落的文字、段落的字体、甚至段落本身的信息等等,针对这种需求,以及电子数据表、演示制作等软件的需要,微软开发了一种“文件中的文件系统”也就是“复合文档”结构。
在复合文档中,可以有很多目录,每个目录下面可以有子目录,目录和子目录中包含了“存储”,一个存储就相当于磁盘上的一个文件,整个复合文档就形成了一个类似于磁盘上的目录和文件所组成的树状结构。
如果在视窗环境下使用复合文件,可以利用操作系统提供的功能对复合文件进行读写,就像读写通常的文件和目录一样,可以在复合文件内部列目录,可以打开一个指定的目录,可以读写其中的一个“存储”(文件)。
二进制 log 文件格式解析
一、概述二进制 log 文件是计算机系统中常见的一种数据格式,它记录了系统的运行日志、错误信息、调试信息等内容。
了解二进制 log 文件格式对于系统调试、故障排查、性能优化等工作具有重要意义。
本文将深入解析二进制 log 文件的格式,探讨其结构和内容,帮助读者更好地理解和应用二进制 log 文件。
二、二进制 log 文件的基本结构1. 文件头部二进制 log 文件通常以一个文件头部开始,文件头部包含了文件的基本信息,比如文件格式版本、记录条目数、时间戳等。
文件头部的结构和内容可能因不同的日志记录系统而有所差异。
2. 记录条目在文件头部之后是一系列的记录条目,每个记录条目对应着一条日志记录。
记录条目的结构包括记录类型、时间戳、日志内容等,不同类型的日志记录可能有不同的字段和格式。
3. 文件尾部二进制 log 文件的尾部通常包含一些附加信息,比如校验和、文件结束标识等。
文件尾部的内容对于文件的完整性检查和解析起着重要作用。
三、记录条目的解析1. 记录类型记录条目中的记录类型字段描述了该条记录的类型,比如普通日志、错误日志、调试日志等。
不同的记录类型可能对应着不同的日志处理逻辑。
2. 时间戳时间戳记录了日志记录的时间,它通常以标准的时间格式表示,比如UNIX时间戳或者日期时间字符串。
时间戳可以帮助我们了解日志记录的发生时间,有利于日志的时间顺序分析和查找。
3. 日志内容日志内容字段包含了具体的日志信息,它可能是一段文本、一组数据、一个异常堆栈等。
日志内容的格式和含义取决于具体的日志记录类型和应用场景。
四、二进制 log 文件的应用1. 系统调试和故障排查通过解析二进制 log 文件,我们可以了解系统在运行过程中发生的各种事件和异常情况,有助于定位和解决系统的故障问题。
比如可以通过查看错误日志来识别系统中存在的Bug,通过分析性能日志来优化系统的性能。
2. 运维监控和报警二进制 log 文件也可以用于系统的监控和报警,比如可以通过监控特定类型的日志记录来实现对系统状态的实时监控,并根据日志内容触发相应的报警机制。
复合文档二进制结构
复合文档二进制结构
一种常见的复合文档二进制结构是将各种类型的数据按照一定的顺序
存储在文件中。
例如,可以将文本数据存储在二进制文件的头部,然后将
图像数据存储在文本数据之后,最后将音频数据存储在图像数据之后。
这
样的结构可以方便地让程序读取特定的数据类型,但可能不适合频繁修改
的文档。
另一种常见的结构是采用索引表的方式来管理不同类型的数据。
索引
表中包含了各个数据类型的位置和大小等信息。
通过索引表,程序可以根
据需要读取和写入指定类型的数据。
这样的结构可以提高文档的修改效率,但需要额外的索引表维护和更新。
此外,复合文档二进制结构还可以采用标记符号的方式来标识不同类
型的数据。
每个数据类型都有独特的标记符号,程序可以根据标记符号来
识别和读取相应的数据。
这种结构比较灵活,但也需要额外的标记符号定
义和解析的过程。
在实际实现中,通常会采用一些标准的复合文档二进制结构,如PDF、DOCX等。
这些标准规定了复合文档的二进制格式,包括各个数据类型的
存储方式、文件头部的格式等。
这样可以保证不同程序能够按照规范读取
和写入这些标准格式的文档。
总之,复合文档二进制结构是将不同类型的数据组合在同一个二进制
文件中的结构。
它可以采用顺序存储、索引表管理或标记符号标识等方式
来表示各个数据类型的位置和大小。
在实际应用中,可以采用标准的复合
文档二进制结构来实现,以保证不同程序之间的互操作性。
二进制文本 还原
二进制文本还原摘要:一、二进制文本简介1.二进制文本的定义2.二进制文本与计算机的关系二、二进制文本的还原1.还原的定义2.还原的原理3.还原的方法4.还原的实例三、二进制文本还原的意义1.对于计算机科学发展的影响2.对于信息安全的重要性3.对于数据恢复的帮助正文:一、二进制文本简介在计算机科学领域,二进制文本是最基本的文本形式。
它是只包含0 和1 两个数字的文本,由计算机的逻辑电路可以直接处理。
所有的计算机程序、数据和文件都是以二进制形式存储在计算机的存储器中。
二进制文本与计算机的关系密切。
计算机的运算和存储都是基于二进制的。
计算机内部的所有操作,包括加法、减法、逻辑运算等,都是通过对比特(即二进制位)的操作来完成的。
因此,二进制文本是计算机处理信息的基本单元。
二、二进制文本的还原还原,指的是将二进制文本转换为人们可以阅读和理解的形式。
这个过程主要是通过编码和解码来完成的。
1.还原的定义:还原就是将二进制文本转换为人们可以理解的形式,通常是转换为十进制文本或者其他形式的文本。
2.还原的原理:还原的原理主要基于编码和解码。
编码是将人们可以理解的信息转换为计算机可以处理的二进制信息,而解码则是将计算机处理后的二进制信息转换回人们可以理解的信息。
3.还原的方法:常用的还原方法有ASCII 编码、Unicode 编码等。
ASCII 编码是将英文字母、数字和一些符号转换为二进制信息,而Unicode 编码则可以表示世界上所有的字符,包括中文、日文、韩文等。
4.还原的实例:当我们打开一个文本文件时,计算机首先读取文件中的二进制信息,然后通过解码,将这些二进制信息转换为人们可以阅读的文本。
三、二进制文本还原的意义二进制文本的还原对于计算机科学发展、信息安全和数据恢复都具有重要意义。
1.对于计算机科学发展:二进制文本的还原使得计算机可以处理和理解人类的语言,这极大地推动了计算机科学的发展,使得计算机可以被广泛应用于各个领域。
什么是二进制文件二进制文件的储存方式
什么是二进制文件二进制文件的储存方式二进制文件格式是系统软件开发、病毒或木马源码分析以及文件压缩工作的基础。
什么是二进制文件呢?下面是店铺整理的什么是二进制文件,欢迎阅读。
什么是二进制文件包含在ASCII及扩展ASCII 字符中编写的数据或程序指令的文件。
计算机文件基本上分为二种:二进制文件和ASCII(也称纯文本文件),图形文件及文字处理程序等计算机程序都属于二进制文件。
这些文件含有特殊的格式及计算机代码。
ASCII 则是可以用任何文字处理程序阅读的简单文本文件。
二进制文件定义广义的二进制文件即指文件,由文件在外部设备的存放形式为二进制而得名。
狭义的二进制文件即除文本文件以外的文件。
文本文件是一种由很多行字符构成的计算机文件。
文本文件存在于计算机系统中,通常在文本文件最后一行放置文件结束标志。
文本文件的编码基于字符定长,译码相对要容易一些;二进制文件编码是变长的,灵活利用率要高,而译码要难一些,不同的二进制文件译码方式是不同的。
从本质上来说他们之间没有什么区别,因为他们在硬盘上都有一种的存放方式--二进制,但是如果要对他们有些区分的话,那可以这样理解。
每个字符由一个或多个字节组成,每个字节都是用的-128—127之间的部分数值来表示的,也就是说,-128——127之间还有一些数据没有对应任何字符的任何字节。
如果一个文件中的每个字节的内容都是可以表示成字符的数据,我们就可以称这个文件为文本文件,可见,文本文件只是二进制文件中的一种特例,为了与文本文件相区别,人们又把除了文本文件以外的文件称为二进制文件,由于很难严格区分文本文件和二进制文件的概念,所以我们可以简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,我们就称之为文本文件,除此之外的文件就是二进制文件。
使用二进制文件的好处为什么要使用二进制文件。
原因大概有三个:第一是二进制文件比较节约空间,这两者储存字符型数据时并没有差别。
一种基于WinHex修复复合文档的方法
一种基于WinHex恢复复合文档案例分析摘要:office是专用于办公文档编辑的应用程序。
目前常见文件格式主要有两类:一类是二进制格式的复合文档,如doc/xls/ppt,另一类是基于office open xml标准的压缩文件格式,如docx/xlsx/pptx。
office文档在我们日常工作中广泛被应用,其本身也是属于电子数据,具备电子数据易复制性、易丢失性、易破坏性等特性。
本文主要结合复合文档的结构进行恢复案例分析。
关键词:二进制、复合文档、电子数据、易破坏性、数据恢复1.复合文档概述二进制格式的复合文档主要是包括了文本信息、电子表格信息、图像视频信息、声音信息等数据。
目前所创建的复合文档主要是采用面向对象技术,即是除了文本信息以外的其他信息如声音、图像视频等都可以作为单独对象包含在文档中。
我们常见的doc/xls/ppt等文档都是用这种格式存储的。
1.1仓库与流关系复合文档本身是属于多元化文档合集,其文档结构和FAT文件系统结构基本类似,故在分析复合文档结构是可以参考FAT文件系统进行对比分析,复合文档是将数据信息(文本信息、电子表格信息、图像信息、声音信息等)分成许多小子集,把这种小子集称为“流”(steams),在文件系统中的创建的数据仓库(storages)就是用来储存这些数据流的场所。
如图1所示:root storagestorage1stream1stream2storage2stream3stream4stream21stream1stream22stream23图1 仓库和结构流的关系1.2扇区和扇区标识结合仓库与流的关系,进而把数据流又细分成更小的数据块(数据扇区(sectors)),。
数据扇区主要包含用户数据或者控制数据。
整个文件也主要包含一个头文件(header)和数据扇区,数据扇区的大小在头文件中确定,且每个数据扇区大小一致。
具体如下图所示:headersector0sector1sector2sector3sector4sector5图2 扇区和扇区标识数据扇区主要在存储文件中的顺序列举,一个扇区的索引(从0开始)称作为“扇区标识”(SID)。
详细的修改文件头
首先我们先给出复合文档的数据分配结构:最后那个文档标示,占用最后一个扇区。
不重要;其中的那个MSAT指的是主扇区配置表过大,用来存储过大的那部分MSAT内容的扇区;对于复合文档的修复,主要都是基于修复文件头的,就像是修复FAT文件系统的DBR一样。
那么我们就可以根据修复FAT文件系统一样的方法来修复复合文档的文件头。
思路就是先拷贝一个正常的复合文档的文件头覆盖掉被破坏的文件头,然后逐一修改相应的参数。
这里我们需要修改的参数有以下几个:l SAT占用的扇区数;l目录流的起始扇区号,也就是目录流第一个扇区的SID;l短扇区配置表(SSAT)的起始扇区,也就是SSAT的第一个扇区的SID; l短扇区配置表(SSAT)占用的扇区总数;l存放主扇区配置表的其他扇区的第一个扇区的SID,如果没有则此处为FE FF FF FF;l存放主扇区配置表的其他扇区的扇区总数,如果没有则此处为00 00 00 00;至于扇区大小数,一般都是09 00 00 00也就是512个字节。
短扇区大小数一般都是06000000也就是64个字节。
还有标准流的大小一般情况下也是00 10 00 00也就是4096个字节;好的,下面我们就根据上述分析来逐一找到那些参数,从而修复复合文档的文件头。
0号扇区已经被清零了,文件头完全被破坏了。
下面我们来修复这个文件头。
l先复制一个正常的复合文档的文件头覆盖掉受损的文件头,然后逐一修改相应参数;l我们首先要找的是目录流起始扇区,因为前面分析过,目录流的签名标志是ROOT entry .搜索52006F006F007400找到目录流的起始扇区。
我们在1556号扇区找到了目录流的起始扇区,那么我们就确定了目录流的起始扇区这个参数了,为 1556-1=1555 用十六进制表示就是0613 。
接着我们顺着目录流往下找,因为前面说过紧接着目录流的是SSAT。
目录流记录的都是一些名称之类的,而SSAT记录的确是SID。
复合文档结构
前言网络上,有一篇流传颇广的叫做《Excel文件格式》的资料,是英文的,老实说,这篇资料对我关于“Excel文件格式”的理解,起到启蒙的作用,但是,进一步老实说,这篇资料对于我的最终工作结果,几乎起不到任何作用。
这篇被广泛如获至宝收藏的资料,是基于BIFF2的,BIFF的意思是Binary Interchange File Format(二进制交换文件格式),BIFF2版本的Excel文件并不支持“合并单元格”,这对于我的工作是个致命的打击,无法“合并单元格”,谈何“所见即所得”?所以,我怀疑那些收藏的人,有没有认真的用过这篇资料!当然包括我,我最早得到这篇资料至今少说也有5年了,也是到了最近实在不得不用的时候,才发现了这个问题。
这也许是人之常情,被我怀疑的同学们不必为了这个跟我急!既然这样,那就得继续找资料了……于是找到一篇《excelfileformat》,也是英文的,这一篇很好,从BIFF2-BIFF8,非常详尽的阐述了Excel的文件格式,老外们在这方面的态度还是比较认真的,值得学习。
但是问题又来了,仅BIFF8版本的Excel文件支持“合并单元格”!这个问题似乎很好解决,按照BIFF8的格式来做不就行了?当然行,是的,可以按照BIFF8的格式来做。
做出来的文件也可以被Excel读取,但必须通过两次崩溃、修复后才能使用。
为什么?!微软有一个“复合文档格式”,Office从97到2003都采用“复合文档格式”来组织文档,Word、Excel、PowerPoint等等,都采用这种格式来保存。
据说微软最新又推出另一种格式,但是问题不大,于我的工作,“复合文档”已经够用了。
“裸”的BIFF8版本的Excel文件,用Excel来打开,可能导致读写错误,进而导致崩溃,同时Excel的修复功能能够把它修复成“复合文档”。
这是我的理解。
有这样的问题,显然是不能提交给客户的。
那么就必须给Excel文件“穿上”“复合文档”的外衣,要搞定Excel文件,必须先搞定复合文档。
二进制文本 还原
二进制文本还原【原创实用版】目录1.二进制文本的概述2.二进制文本的还原方法3.二进制文本还原的实际应用正文一、二进制文本的概述二进制文本是指由 0 和 1 两个数字组成的文本,是计算机中最基本的语言。
它是一种指令或数据,可以用于存储和传输信息。
在计算机中,所有的程序、文件和数据都是以二进制文本的形式存在的。
然而,对于人类来说,二进制文本难以理解和阅读,因此需要进行还原。
二、二进制文本的还原方法1.转换为十进制:将二进制文本中的 0 和 1 按照权重进行转换,得到相应的十进制数。
例如,二进制数 1101 转换为十进制数为 13。
2.转换为十六进制:将二进制文本中的 0 和 1 按照权重进行转换,得到相应的十六进制数。
例如,二进制数 1101 转换为十六进制数为 D。
3.字符编码:将二进制文本按照字符编码规则进行转换,得到相应的字符。
例如,ASCII 编码中,二进制数 01100001 转换为字符"A"。
4.图像还原:将二进制文本中的数据按照像素点的权重进行转换,得到相应的图像。
例如,将二进制文本中的数据转换为一张图片。
三、二进制文本还原的实际应用1.文件恢复:在文件损坏或丢失的情况下,通过二进制文本还原技术可以恢复部分或全部数据。
2.密码破解:在密码丢失或被篡改的情况下,通过二进制文本还原技术可以尝试找回原始密码。
3.图片修复:在图片损坏或丢失的情况下,通过二进制文本还原技术可以恢复部分或全部图像。
4.程序调试:在程序出现错误或异常的情况下,通过二进制文本还原技术可以定位问题并进行修复。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复合文档二进制存储结构通俗讲义作者dengyanhui首先,大家可以将复合文档与FAT文件系统对比起来学习,复合文档和FAT文件系统有许多相似之处。
1.复合文档类似于FAT文件系统,大家在理解的时候可以把复合文档和文件系统放到同一个层次;2.FAT文件系统有DBR ,FAT表目录。
那么对应的复合文档就是文件头,主扇区配置表(MSAT),扇区配置表(SAT),短扇区配置表(SSAT)和复合文档的目录;3.在FAT文件系统中,文件采用扇区为单位存储数据,多个扇区组成簇,文件占用多少个簇,占用了哪些簇,簇链是怎样的这个就是由FAT表记录的。
相对应的复合文档中,数据也采用扇区来存储数据,只是复合文档中的扇区有基本扇区和短扇区之分。
在文件系统中一个扇区占用512个字节,在复合文档中,扇区的大小在文件头中有规定,不过基本都是512个字节。
短扇区的大小也在文件头中作出了规定。
一般是64个字节。
4.在复合文档中,数据信息被叫做流,按照流的大小有基本流和短流之分,按照功能来分,有控制流和数据流之分;流相当于文件系统中的文件,文件系统中的文件夹在复合文档中就对应仓库。
那么流存在哪里呢?文件系统中数据以扇区来存储,在复合文档中,基本流以扇区来存储,短流由短扇区来存储。
而多个短流就组成短路存放流,而且短流存放流是以扇区来存储的;这里给大家总结一下:●流以扇区来存储;●短流以短扇区来存储;●短流组成短流存放流,短流存放流也是以扇区来存储的;●在文件系统中文件以簇来管理,多少个扇区组成一个簇,在DBR中有记录,相应的在复合文档中,基本流的大小也是在文件头中记录的,一般是8个扇区,也就是说基本流的大小相当于簇的大小一样;5.在文件系统中,FAT表管理文件的簇链,而在复合文档中,这个工作交给了主扇区配置表,扇区配置表,短扇区配置表这三个配置表。
●上述三个配置表记录的和FAT表记录的都是表明扇区或者簇的占用情况的;只是在复合文档中区分的更细致;●MAST记录的是SAT的占用扇区情况,也就是说,MAST的功能就是记录SAT占用了哪些扇区,哪些扇区的编号是多少,只是我们这里叫做SID;●SAT记录的就是一个流占用扇区的情况,一个流占用哪些扇区,哪些扇区的SID是多少;●SSAT记录的就是短流占用扇区的情况;●这些配置表的大小,起始扇区在文件头中都有记录的就像文件系统的DBR记录FAT表的大小一样。
●6.目录(directory)就是一种控制流,由一些列的目录入口(directory entry)组成,每一个目录入口就指向一个流或者仓库。
7.下面给出复合文档的大概存储结构的实例分析:这个就是复合文档的文件头,我们逐一分析1.DO CF 11 E0 A1 B1 1A E1 复合文档的文件标示;2.接下来的16个字节表示此文件的唯一标识(不重要,可以全为0;3.接着的两个字节表示文件格式修订号3E 00;4.接着的是文件格式版本号03 00;5.接着是字节顺序规则标识FE FF 表示字节按小头排序,FF FE表示按大头排序;6.接着的四个字节表示复合文档扇区的字节数以2的冥形式表示这里是09 00 那么扇区的字节数就是2的9次方也就是512个字节;7.接下来的四个字节表示短扇区的字节数,同上,这里是06 00 也就是2的6次方个字节,这里就是64个字节;8.接下来的10个字节没有使用,全是0;9.接着的4个字节表示SAT配置表占用的扇区数,这里是01 00 00 00 也就是说扇区配置表占用1个扇区;10.接着的4个字节表示存放目录流的第一个扇区的扇区ID 也就是SID;11.接着的4个字节没有使用;12.接着的4个字节表示标准流的最小大小,小于这个值的就是短流;13.接着的4个字节表示存放短扇区表(SSAT)的起始扇区号。
如果不存在短扇区配置表则此处值为FE FF FF FF;14.接着的4个字节表示存放短扇区配置表的扇区总数;15.在往下的4个字节表示存放主扇区配置表(MSAT)的起始扇区号,如果没有则为FE FF FF FF;这里说明一下,这里说的存放主扇区配置表的扇区,因为主扇区配置表的前109个SID是存储在文件头中的,如果主扇区配置表内容太多,文件头中存放不下,那么系统会为主扇区配置表分配其他扇区来存放它。
这里的4个字节所指的扇区就是额外扇区。
这里的实例是FE FF FF FF 说明主扇区配置表的内容在文件头中就能存储下了,不需要分配额外的扇区来存储了,所以这里就是FE FF FF FF ;16.接下来的4个字节表示存放主扇区配置表的扇区数,这里所指的扇区也是上述的额外扇区;17.在往下就是主扇区配置表存储在文件头中的SID了。
一个SID占用4个字节,这个和FAT表中一个FAT项占用4个字节一样;这个实例中,因为前面已经得出SAT 只占用1个扇区,所以这里就只有一个SID了。
这里是29 00 00 00 也就是说SAT 从41+1号扇区开始,占用1个扇区。
我们的42号扇区存放的就是SAT的内容。
为什么是41+1呢?因为29 00 00 00 用十进制表示就是41,而我们的文件头要占用一个扇区,所以我们的SAT就从41+1号扇区开始了;好的,当我们的复合文档文件头受损时,我们就只需要复制一个正常复合文档的文件头,然后修改上述参数就行了。
下面我们来逐个分析上述参数。
1.主扇区配置表,这里已经分析过来,这里的主扇区配置表就只有一个SID,就没必要其他的扇区来存放它的内容了,MSAT的前109个项存放在文件头中,如果MSAT 有大于109个项的内容,系统才会分配其他扇区来存放多出来的项。
2.扇区配置表(SAT),我们从文件头中看到SAT占用一个扇区,起始扇区记录在MAST中,这里就是MAST的第一个项,29 00 00 00 也就是41+1 ,为什么要加1,我前面已经说过了。
我们就转到42号扇区看看扇区配置表(SAT)长什么样。
3.看到了吗,这个就是42号扇区的内容,是不是和FAT表很像啊!SAT表项和FAT 表项一样,从0号开始编号,我们以这里为例子说明;在FAT文件系统中,我们可以根据FAT表构造文件存储的簇链,复合文档中我们同样可以构造出流存储的扇区链。
是不是很熟悉,这个和FAT表一样,表项中存储的是下一个扇区的扇区号。
和FAT表链一样的,如果扇区链结束了,也就是说那个流占用的扇区结束了,那么就在以FE FF FFFF最为结束标志。
跟FAT文件系统完全一样。
如果那个扇区没有使用那么就用FF FF FF FF标示出来,说明这个是个空闲扇区;4.下面我们接着分析短扇区配置表(SSAT),这里我们从文件头中分析出我们的短扇区配置表开始于2C 00 00 00 也就是44+1号扇区,占用一个扇区。
我们转到45号扇区看看短扇区配置表长什么样;这个就是我们的短扇区配置表的内容了,短扇区配置表就相当于短流的FAT表,我们前面说过,短流存储在短扇区中,那么短流的存储情况就在短扇区配置表中记录。
这里我们构造出我们实例中的短扇区扇区链;剩下的表项内容都是FFFFFFFF 也就是处于空闲状态;5.接着分析复合文档的目录结构,看看和我们的FAT文件系统有哪些相似之处:我们从文件头中分析出,我们的目录流的起始扇区是2A 00 00 00 也就是42+1号扇区。
先说明一下,一个目录入口严格的占用128个字节。
好的我们先转到43号扇区看看:看到了吗43号扇区就是一个目录结构,我们说过了,一个目录入口占用128个字节,这里我用银光笔画出来的部分就是一个目录流入口,这里看到右边的ROOT Entry就是说这个是个根目录入口,用红笔勾画出来的部分是目录流的名字占用64个字节。
其他的64个字节的分析就不在这里说明了,有兴趣的朋友可以加我。
因为如果复合文件的文件头被破坏了,我们在修复文件头时,需要目录流的起始扇区号,这里我们就可以通过搜索52 00 6F 00 6F 00 74 00 等等ROOT ENTRY的16进制表示来找到目录流的起始扇区。
好了,就写到这里了,其他的就大家自己分析吧。
我的QQ 415090719复合文档文件文件头修复首先我们先给出复合文档的数据分配结构:其中的那个MSAT指的是主扇区配置表过大,用来存储过大的那部分MSAT内容的扇区;对于复合文档的修复,主要都是基于修复文件头的,就像是修复FAT文件系统的DBR一样。
那么我们就可以根据修复FAT文件系统一样的方法来修复复合文档的文件头。
思路就是先拷贝一个正常的复合文档的文件头覆盖掉被破坏的文件头,然后逐一修改相应的参数。
这里我们需要修改的参数有以下几个:●SAT占用的扇区数;●目录流的起始扇区号,也就是目录流第一个扇区的SID;●短扇区配置表(SSAT)的起始扇区,也就是SSAT的第一个扇区的SID;●短扇区配置表(SSAT)占用的扇区总数;●存放主扇区配置表的其他扇区的第一个扇区的SID,如果没有则此处为FE FF FF FF;●存放主扇区配置表的其他扇区的扇区总数,如果没有则此处为00 00 00 00;至于扇区大小数,一般都是09 00 00 00也就是512个字节。
短扇区大小数一般都是06000000 也就是64个字节。
还有标准流的大小一般情况下也是00 10 00 00也就是4096个字节;好的,下面我们就根据上述分析来逐一找到那些参数,从而修复复合文档的文件头。
0号扇区已经被清零了,文件头完全被破坏了。
下面我们来修复这个文件头。
●先复制一个正常的复合文档的文件头覆盖掉受损的文件头,然后逐一修改相应参数;●我们首先要找的是目录流起始扇区,因为前面分析过,目录流的签名标志是ROOTentry .搜索52006F006F007400找到目录流的起始扇区。
我们在1556号扇区找到了目录流的起始扇区,那么我们就确定了目录流的起始扇区这个参数了,为1556-1=1555 用十六进制表示就是06 13 。
接着我们顺着目录流往下找,因为前面说过紧接着目录流的是SSAT。
目录流记录的都是一些名称之类的,而SSAT记录的确是SID。
这个就跟FAT表记录的内容一样,4个字节占用一个表项。
我们很容易就能区分出目录流和SSAT。
果然我们就在1558号扇区找到了SSAT。
看到SSAT的内容了吗,记录的就是SID和目录流记录的内容完全不一样,我就是通过这个判断出目录流到哪里就结束了。
SSAT找到了,起始扇区是1558-1=1557号扇区,大小只有一个扇区,因为SSAT的后面只有一个扇区了,就是前面提过的表示扇区。
所以我们的SSAT占用1个扇区。
我们又找到了两个参数了。
接着我们找SAT , 目录流是紧接着SAT的,我们就可以通过找SSAT的方法判断出哪里是SAT。