数据恢复期末复习

数据恢复技术:
WinHex 中,Find Text搜索功能的使用
备份和容灾系统概念
回收箱原理,$I $R, 恢复清空回收箱后的数据恢复原理,分析十六进制数据
RAID5常识
分配策略的概念
常见数据恢复工具
RPO,RTO的概念
存储设备破坏的原因
机械硬盘修复顺序
文件修复、文件系统修复的概念
分区
识别MBR和结构
MBR代码(了解)
分区大小,激活标志,EBR标志
GPT头
FAT
文件删除/建立的过程(Del键删除、Shift+Del键删除)
修复DBR的方法
FAT32文件恢复中首簇号丢失的解决方法;
长文件和短文件
短文件名规范
FDT结构:2E、 E5、 长文件名结构、首簇号、文件大小

NTFS
文件记录项基本结构,大小、起始标记、结束标记
短文件名记录方式
删除和创建过程
WinHex:常见关键标志的搜索
10H 30H 80H 90H A0H B0H的功能
长文件和短文件
ADS特点和存储方式
30H 80H的结构
时间特征保存位置
取证中,访问时间判断和特征
NTFS支持的功能
DBR恢复过程,寻找DBR
根据$MFT中$MFTMirr的内容,计算每簇的扇区数
文件分配的大小,VCN概念
找到并计算datarun,计算多运行的值,计算LCN
NTFS EFS机制
JPEG
常见恢复点
课件中的恢复案例

数据恢复技术

WinHex中,find text搜索功能使用

回收箱原理,$I $R, 恢复清空回收箱后的数据恢复原理,分析十六进制数据

(在回收站中)被删除的文件的信息用两个文件保存,一个文件名是“$I+6个随机字母”,保存磁盘号,路径和被删除的文件名;另外一个文件名是“$R+6个随机字母”,保存被删除文件的内容。由于6个随机字母在两个文件中一致,可以通过第一个文件找到第二个文件。

清空回收站之后,我们可以用winhex的Recovery/Copy进行修复

RAID5常识

  1. 普通条带卷的容错变形,即奇偶效验的条带卷
  2. 通过一个盘保存奇偶效验信息实现容错
  3. 通过异或操作重建丢失数据(RAID5至少需要3个盘上3个一样大小分区)

常见数据恢复工具

EasyRecovery、Recovery、Lost&Found、FinalData、Disk Recovery

存储设备破坏的原因

  • 没有定期整理磁盘
  • 撞击硬盘
  • 长期工作在高温下
  • 硬盘距离磁场太近
  • 被病毒破坏

机械硬盘修复顺序

  1. 获得待修硬盘
  2. 检查硬盘外观
  3. 询问客户原因
  4. 通电检测
  5. 连接数据指南针
    1. 能识别—》检测坏道
    2. 不能识别—》硬盘专修设备

安全机制概念

用户鉴别

  • 第一道防线
  • 判断是否是合法用户
  1. 用户标识:标定用户身份
  2. 用户识别:一对多的过程
  3. 用户验证:一对一的过程
  4. 用户确认:放行或者拒绝

访问控制

  • 第二道防线
  • 防止“合法”用户滥用
  1. 权限标记:设定权限和标记
  2. 授权组合:配置权限及各种组合
  3. 权限检查:对读写、执行、复制等进行检查和验证
  4. 违规处理:限制、锁定、关闭

安全保密

  • 第三道防线
  • 信息安全核心
  • 级别与权限
  1. 信息隐藏:看不到,找不到
  2. 信息加密:看不懂,难理解
  3. 信息锁定:看到了,带不走
  4. 信息控制:看懂了,已无用

安全审计

  • 第四道防线
  • 每一活动记录
  • 抗抵赖
  1. 访问记录:记下每一个来访者
  2. 环境记录:记录当前运行环境
  3. 审计追踪:找到相应的对象
  4. 审计确认:分析确认特定目标

安全恢复

  • 最后的防线
  • 系统故障恢复
  • 受损系统恢复
  • 容错和抗毁
  1. 恢复依据:配置、记录、参数、表格、数据结构、文档、前后端、数据库
  2. 数据恢复:备份恢复、前后端恢复
  3. 环境恢复:运行环境、应用环境
  4. 数据库恢复:备份、记录、结构恢复

容灾和备份

数据备份:数据复制到其它存储介质的过程。侧重于数据的安全。

容灾:异地构建相同的信息系统,实现业务切换。侧重于业务的安全。

  • 完全备份:在初始时间进行所有的数据备份。
  • 差异备份:对完全备份开始变化的数据进行备份。
  • 增量备份:只备份与上次备份有差异的部分。

RPO(recovery point object)

反映数据恢复完整性指标,即灾难发生时允许丢失的数据,数据量越大,一般损失越大。

RTO(recovery time object)

反映业务恢复及时性指标,代表系统恢复的时间。系统恢复的时间越长,一般损失越大。

分配策略的概念

不同的操作系统在为文件分配存储单元时采用不同的分配方法。

第一可用分配策略

为一个文件分配一个存储单元后还需要继续为其分配时,操作系统会重新从文件系统的起始处搜索可以使用的空间。

该策略容易使文件片段化,该删除的数据很快被覆盖,因此被删除的数据恢复可能性降低。

下一可用分配策略

文件分配一个存储单元后,不再回到卷起始处重新寻找可用空间而是直接向后进行搜索。

有助于数据的恢复

最佳分配策略

为文件分配空间时,尽量找到足够的连续空间以避免片段化。

这种分配策略要求事先知道文件所需要空间的大小。

若文件增大需要更多空间,新分配的单元可能处于位置(感觉可能是离散的位置),导致文件片段化。

如果没有找到可以存放整个文件的连续空间,就会使用第一可用或者下一可用空间策略进行分配。

文件修复、文件系统修复的概念

文件系统损坏包括:

  • 存储系统和介质的损坏
  • 文件记录格式的损坏
  • 文件搜索路径和关联结构的损坏
  • 所记录的数据和文档的损坏

分区

识别MBR和结构

MBR硬盘主引导记录,由引导程序磁盘签名硬盘分区表分区有效结束符(55AA)组成

MBR代码(了解)

分区大小

在硬盘分区表中寻找

本分区总扇区数(分区大小)也就是每个分区表的最后四个字节 (注意小端序) C-E

本分区之前的扇区数 8-B

激活标志

硬盘分区表中的开始的80是分区的激活标志

EBR标志

55 AA

EBR中分区第一项描述第一个逻辑驱动器,第二项描述下一个

隐藏扇区

GPT头(全局唯一标识磁盘分区表)

EFI 可扩展固件接口—>GPT

GPT结构:EFI系统分区ESP(一般为FAT格式)、OEM分区、微软保留分区MSR、LDM元数据分区、LDM数据分区、主分区

GPT磁盘结构:

保护MBR

分区类型是EE,有磁盘签名

GPT头和GPT头备份略有区别

GPT恢复案例

现象:磁盘管理器显示没有初始化——>保护MBR被破坏了。Winhex显示0,1,3号扇区全0——>手动恢复相关数据。

  1. 保护MBR重写后,硬盘可以读取数据。
  2. 将GPT头备份复制到1号扇区,修改
  3. 将GPT分区表直接复制到2号扇区
  4. 检查DBR有没有被破坏

80G的移动硬盘,被MAC格式化

恢复点:恢复MBR和DBR

恢复点:通过FAT2被破坏的FAT1

  1. 寻找FAT2:搜索F8 FF FF 找FAT表的起始位置(通过搜索找到了3个表,其中前两个是EFI系统分区的FAT1和FAT2,因此第三个FAT2表为原分区的表。
    1. 数据区一般开始于第2簇,为根目录。通常DBR的保留扇区数为32-38个扇区,因此大致可以判断出FAT表的大小,找到第2簇
    2. 从FAT2尾部找一个标记值,再找另一个标记值,这个标记值应该就是FAT1残留的数据,两个位置相减,就是FAT的大小。
  2. 修复DBR
  3. 修复MBR:利用GPT的保护分区表,修改分区表即可。

FAT

FDT结构(2E、E5、长文件名结构、首簇号文件大小)

0-7 8-10 11 12-21 22-23 24-25 26-27 28-31
文件名 文件扩展名 属性 保留 创建时间 创建日期 文件首簇号 文件长度

属性字节为10H时是子目录,00读写,01只读

FAT32的FDT属性为0FH的时候说明该项为长文件名,长文件名是倒叙排列的,当第一个字节的第2高位为1的时候说明这是长文件名的最后一项。例如:4A=0100 1010,此时该项为长文件名最后一项,后5为是顺序号(01010)。

FAT表

F8FF FFFF FFFF 0400 0500 0600 FFFF(FAT16)

FAT只和DATA区的空间对应

修复DBR的方法

  1. 复制同类型的DBR扇区,找一个DBR复制到原来的位置

  2. 修改BPB参数。数据区中簇的个数和FAT表的项大小是对应的。簇大小=数据区大小/FAT表的项数

计算DATA起始位置

1+2*FAT+FDT(单位是扇区)

已知簇号,求扇区

S=(C-2) * P + B

S是要求的逻辑扇区号,B是DATA区起始扇区号、C为已知的簇号、P为每簇的扇区数。

文件删除/建立的过程(Del键删除、Shift+Del键删除)

文件建立

设一FAT32系统中,已有子目录“子目录1”,若在其下建立一个大小为5000字节的文件“文件1.txt”,簇大小为4096个字节,过程如下:

  1. 读取0号扇区(引导扇区),定位FAT表、数据区和根目录的位置
  2. 查看根目录的每个目录项,寻找“子目录1”和其起始簇号
  3. 读取子目录1起始簇号内容,查看每个目录项,找未分配的目录项
  4. 在可用项相应位置写入文件名“文件1.txt”,文件大小、当前时间
  5. 在FAT表中寻找空闲位置(假设4号空),将FAT表4号簇位置写入结束符
  6. 将簇号4写入文件目录项起始簇号区域,将文件前4096字节写入4号簇
  7. 在FAT表中寻找为分配簇(假设5号空)
  8. 将文件第1簇(这里是4号)的FAT表项值设为5
  9. 将文件最后904字节写入5号簇
  10. 在FAT表项的5号簇位置写入结束标记。

文件删除

删除文件时,系统尽在该文件目录项上做一个删除标记,并将FAT表中占用的簇标记为空簇,而在DATA区域中的簇仍保留原文件的内容。

回收站:系统在硬盘上留下一个区域,该区域建立一个“RECYCLED”的隐藏文件夹(在每个硬盘分区的根目录下)

FAT32文件若完全删除,FAT链被破坏,文件目录项的高位簇号被删除,DATA区数据随时可能被覆盖

FAT32目录若完全删除:目录中文件的目录项高位起始簇号不清零。

子目录删除

FAT16和FAT32的简单删除:只是在FDT上做一个删除标志

FAT16和FAT32的删除:FDT上做一个删除标志、FAT的子目录和文件记录被清空。

FAT32文件恢复中首簇号丢失的解决方法

文件被删除后,由于创建时间、修改时间不改变,因此可以寻找与被删除文件创建时间十分相近的文件,参考它们的高位起始簇号。

用穷举法,对起始簇号的高位依次穷举,然后验证。如果文件是连续存放的,恢复可能较大

FAT表恢复的方法

删除文件时,文件对应的FAT簇链被清空,恢复文件时,可从目录项中获取文件起始簇号和文件大小,但无法获取文件其余簇所在位置

读取文件第1簇后,对于文件剩余部分,有两种方式处理

  1. 按照文件大小直接读取第一簇后的数据,不考虑读取位置是否已经被分配。
  2. 只从目前状态为未分配的簇中读取数据。

长文件和短文件

短文件名规范

短文件名只能包含大写字母(A-Z)、数字(0-9)和一些特殊字符,如$、%、&、’等。但是不能包含空格、斜杠(\)、反斜杠(/)、冒号(:)、星号(*)、问号(?)、引号(”)、小于(<)、大于(>)、竖线(|)等。

主文件名最长8个字节,扩展名最长3个字节

NTFS

基础知识

常驻属性值:所有文件属性和属性值可以放在MFT记录中,属性以标准头开始(常驻属性标识、属性值的偏移量和长度)

非常驻属性值:当属性太大,NTFS将在MFT之外分配区域(DATA RUN)

命名属性指在 $AttrDef中没有定义的属性需要使用属性时给出属性名

未命名属性指在$AttrDef中定义的属性,给定了ID号。

文件记录项基本结构、大小、起始标记、结束标记

BOOT、MFT(主文件表)、Free space、More Meta Data、Free Space。

MFT索引的boot文件位于磁盘起始位置,boot同时也指向MFT的位置,MFT也索引自己。在磁盘的中部,存放一些Metadata文件,比较重要的是$MFTMirr 和 $LogFile文件。MFT镜像是MFT的前4个记录的备份,用于恢复MFT;LogFile记录所有影响卷结构的操作记录,若计算机崩溃,LogFile能够用于恢复磁盘。在分区的最后,存放boot sector的备份,唯一记录该内容的是 $Bitmap,表示该位置已经被使用了。

MFT包含记录1—记录2—记录3—记录n,记录1包含记录头10H属性(属性头、属性体)、30H属性80H属性等…

文件记录实际大小在文件记录头偏移24字节,长度是4个字节。文件记录分配大小在偏移28字节,长度4个字节。

文件记录头起始标志:46 49 4C 45

最后一个属性之后为:FF FF FF FF 00 00 00 00 或者 FF FF FF FF 82 79 47 11

38 00 是第一个属性的起始地址

后面两位 00 0(标志是文件/目录) 0(标志是删除还是正常),注意切换成小端序

文件实际大小为0x270,文件记录分配大小为0x400,本记录ID号为0xA12D

NTFS使用Fixups技术确认扇区是否正常状态。

10H 30H 80H 90H A0H B0H的功能

0x10 标准信息
0x30 文件名
0x80 数据
0x90 索引根(文件夹B-树根节点)
0xA0 索引分配(文件夹分配)
0xB0 位图

90H和A0H是文件夹才有,B0H是文件夹才有或者MFT才有。

10H

文件记录的标准属性:10H

标准属性是所有文件记录或者文件夹记录都有的属性

属性头
0x00 4 类型
0x04 4 长度
0x08 1 非常驻标志(0是常驻属性)
0x09 1 文件名长度(0就是未命名属性)
0x0A 2 相对内容部分的偏移
0x0C 2 压缩标志
0x0E 2 标识
0x10 4 流长度(属性体长度)
0x14 2 流偏移(属性体偏移)
0x16 1 索引标志
0x17 1 填充
属性体
偏移 大小 描述
0x00 8 C TIME 文件创建时间
0x08 8 M TIME 文件最后修改时间
0x10 8 E TIME MFT修改时间
0x18 8 A TIME 文件访问(读)时间

日期从1601年1月1日开始,以100ns为间隔单位。读出数据之后除以 10000000就是秒数,然后转换成年。

  • 文件最初生成—C、M、E、A时间是一致的
  • 执行复制操作时—目标文件的E、M时间和源文件是一样的,C、A时间会为复制时间
  • 执行移动操作时—目标文件的E、A时间为移动操作时间;M、C时间保持不变
  • 修改文件读写属性时,A、E时间更新
  • 重命名操作时,A更新为重命名操作时间,E更新为重命名结束时间
  • 修改操作时,M、E、A时间同时改变

如果CMAE时间一致,文件没有被修改或者复制

如果CA时间一致,且晚于EM时间,则文件从其他位置复制来的。

如果EA时间一致,且晚于MC时间,则文件是从其他位置移动过来的。

若AE时间一致,MC时间不同,且文件为“只读”“隐藏”,A或E时间为特殊属性设置时间。

若A时间在前,E时间在后,且A、E时间间隔很短,该文件可能执行过“重命名操作”

还包括文件属性,所有者、安全ID、配额管理、更新序列号等

30H结构(文件名属性)

30H是文件名属性,属性名后面4个字节是总长度(含头部),其他类似于10H

属性体结构

文件创建时,CMAE时间更新。文件修改、访问、重命名时,4种时间都不变。文件被复制时,目标文件4种时间变化为文件生成时间。文件被删除时,文件的ME时间发生变化,AC不变。

80H结构

80H是数据流属性,记录文件数据:$DATA属性、80H属性。只有属性头没有属性体;常驻未命名;非常驻未命名;非常驻命名;常驻命名。

常用数据流有7种情况:未命名数据流、文件摘要信息、$mountMgrDatabase、$Bad、$SDS、$J、$Max

40那里的两个字节是数据运行的偏移地址。

然后偏移40个字节(从80开始)的地方是为文件分配的大小,然后是文件实际大小,文件压缩大小,数据运行。都是八个字节大小。

如果有多个运行,就从32 x x x 31 x x x 00 ,32后面的是一个运行,31后面的是一个运行,00是结束标志。

90H(根索引)

只有记录项为目录时才会有该属性。

两个,$SDH和$SII

文件夹内所有文件名都存储在90H属性:且该属性是最后一个属性。

90H属性只存储一个索引节点号,文件夹的文件名存储在一个索引节点中,90H属性后跟A0H和B0H属性。

只存储一个索引节点号,不存储文件中的文件名。所有文件存储在多个索引节点。

B0H(Bitmap)

$MFT文件的0号记录才有0xB0位图属性,B0H属性用一位代表一个记录的分配情况。

DBR恢复过程,寻找DBR

DBR被破坏

现象:某分区有盘符,但是系统提示没有格式化。

恢复步骤

  1. 寻找分区表
  2. 根据分区表来寻找该分区的DBR(也可以查找 55 AA)设置偏移调制(512)=(510)
  3. 备份该扇区的DBR
  4. 找到DBR备份,将备份拷入DBR所在的位置

NTFS的DBR备份位于分区表的相对扇区+分区总扇区-1;

FAT32的DBR备份在6号扇区。

DBR与其备份被破坏

现象:某分区有盘符,但是系统提示没有格式化。

恢复过程:

  1. 寻找分区表
  2. 根据分区表找到分区的DBR
  3. 备份该扇区的DBR
  4. 寻找DBR备份,若备份已经被破坏
  5. 计算DBR的参数

需要计算的参数有:每簇扇区数,隐藏扇区数,扇区总数,$MFT起始簇号,$MFTMirr起始簇号,文件记录大小,索引缓冲区大小。

  1. 拷贝一个正常的DBR
  2. 计算每个簇的扇区数
    1. 找文件记录,获得文件记录80H中“分配大小”+“运行”,获得数据流的大小。分配大小单位是字节,运行的大小为簇。
    2. 根据$Bitmap的80H属性,获得流大小,用分区总扇区数/流大小,近似值为簇大小。
  3. 计算$MFT起始簇号:搜索$MFT(46 49 5C 45);找到$MFT的文件记录;根据80H的RunList中获取首簇号。
  4. 计算每个索引节点大小:一般索引节点大小固定为4096字节;索引节点字节=2^(-1)*(索引节点的描述)
  5. 计算扇区总数:根据分区表的总扇区数计算。总扇区数-1就是DBR的总扇区数。
  6. 计算隐藏扇区(分区表未被破坏):根据分区表寻找对应的EBR;根据K盘EBR分区表中隐藏扇区数即可计算。
  7. 计算$MFTMirror:根据$MFT的文件记录,在$MFT文件记录后面就是$MFTMirr,通过它的80H属性,获得首簇号
  8. 计算文件记录大小:文件记录字节数(1024)=2^(-1)*(文件记录大小)
  9. 将上面得到新的参数填入新的DBR
计算每个索引节点大小

每簇字节数大于索引节点(4096)时,就用负数来表示。如果是小于4096,就直接用整数。比如4096=512*8,所以如果每簇扇区数为8,描述为1。每簇扇区数为1,描述为8

元文件一个记录为1024字节。

分区表被破坏

现象:资源管理器中没有盘符。

恢复步骤:

  1. 寻找DBR:搜索”NTFS”,设置偏移调制为 512=3
  2. 根据DBR得到以下参数:DBR所在的扇区,总扇区,隐藏扇区数
  3. 计算分区的相对扇区和总扇区
  4. 计算NTFS的分区表(Winhex-磁盘工具-扫描丢失的分区)

时间特征保存位置

取证中访问时间判断和特征

在10H属性中

  1. 文件最初生成——CMEA时间是一致的

  2. 复制操作时——E(MFT修改时间)M(文件修改时间)时间不变,CA时间改变

  3. 移动操作时—-E、A时间改变,CM时间不变

  4. 修改读写属性时,A、E时间发生改变

  5. 重命名操作时,A、E时间发生改变,A更新为重命名操作时间,E更新为重命名操作结束时间

  6. 修改操作时,MEA时间都改变

  7. 删除操作时,E时间改变

30H属性中

  1. 文件修改、访问、重命名时,4种属性都不变

  2. 文件复制时,四种属性都改变

  3. 文件删除时,ME时间改变,AC不变。

短文件名记录方式

30H里面

目录记录的方式,能够识别索引节点

NTFS目录:简单文件名和文件引用号的索引

如果目录属性列表小于一个记录长度,则存储在主文件表中

如果目录属性列表大于记录,那么使用B-树进行管理

找到并计算datarun,计算多运行的值,计算LCN

LCN逻辑簇号:对整个卷中所有的簇从头到尾进行编号

VCN虚拟簇号:对非常驻文件的簇从头到尾进行编号。

文件分配的大小,找到VCN

VCN:虚拟簇号,一个簇在一个文件或目录中的顺序,对整个卷中所有的簇从头到尾进行编号;

LCN:逻辑簇号,一个簇在相对一个卷的起始点的相对偏移量,对非常驻文件的簇从头到尾进行编号。VCN可以映射成LCN

非常驻属性直接找到起始VCN和结束VCN,计算一共多少个簇

根据$MFT中​$MFTMirr的内容,计算每簇的扇区数

根据80H属性里面的 给文件分配的大小/簇的个数/512就是每簇多少个扇区

48*2*512=0xc000

ADS特点和存储方式

  1. 建立一个txt文件

  2. 建立流文件

    1
    echo "this is the stream" >file1.text:stream1.txt
  3. 显示流文件:用notepad打开文件

关联流文件:将calc.exe、test.vbs、test.cmd作为notepad.exe宿主文件的数据流。数据流可以插入,但不能执行数据流文件,所以没有威胁。

可以用于存储备份信息、备份相关的时间信息、分级存储(将备份数据存在磁带后的位置)由于Apple Macintosh具有类似功能,因此NTFS 的 ADS提供MAC的兼容性。

文件的数据流是一个字节序列,其中包含有关文件的数据,例如关键字或创建文件的用户的身份。

将数据流视为文件中的文件——隐藏在合法文件中的隐藏文件。每个流都有自己的磁盘空间分配、自己的实际大小(使用的字节数)和自己的文件锁定。

NTFS 文件结构中的每个文件都至少有一个流,即其默认流。默认数据流是正常的、可查看的文件内容,例如 .txt 文件中的文本或 .exe 文件中的可执行代码。这些信息存储在 $Data 属性中。由于此默认属性的名称为空,因此默认数据流通常也被称为“未命名数据流”。

文件还可以包含一个或多个备用数据流(ADS)。ADS 必须命名。

删除和创建过程

创建过程

  1. 在元文件$MFT中将会生成一条记录,记录的位置可能在元文件$MFT的最后,也有可能在元文件某一记录为空时的位置。
  2. 此时元文件的B0H属性相应的0变成1
  3. 文件名所在索引目录中添加新建文件名,文件目录将会以B-树结构进行调整。如果文件内容比较小,文件内容就会存储在80H属性。如果文件比较大,文件内容将存储在空闲簇中,此时文件记录的80H属性中会产生数据运行列表,位图文件对应的0变成1

删除过程

  1. 文件在元文件$MFT中记录的30H属性文件名被改成了”$R+6个随机字符+扩展名”,文件标志由”0001”变成了”0000”
  2. 元文件B0H属性对应的位图从1变成0
  3. 文件名从所在索引目录中移出,后面的文件名依次向前移动
  4. 磁盘已经用的空间和自由空间没有发生变化。

NTFS EFS机制

使用附加驱动模块driverefs.sys,提供基于文件的透明加密功能。

EFS为加密文件生成了一个文件加密密钥FEK

明文m————-> 加密算法DESX(使用了FEK)—————>密文c

FEK——————->加密算法RSA(使用用户的EFS公钥)——>Data Decryption Field DDF

FEK——————->加密算法RSA(管理员的File Recovery FR公钥)——>Data Recovery Field DRF

EFS将加密的FEK保存在文件的 $LOGGED_UTILITY_STREAM属性中

解密:用户使用EFS私钥获取FEK,在使用FEK获取明文。

NTFS支持的功能

  • 压缩功能
  • ACL安全模式:用于管理文件和目录权限的机制,允许管理员指定哪些用户和组可以访问特定的文件和目录,以及它们可以执行的操作类型。
  • 文件流,允许在单独一个文件中存储多个数据流
  • 共享文件功能:允许多个用户通过网络访问同一文件或文件夹。
  • 稀疏文件功能:允许文件系统只分配那些包含非零数据的磁盘空间。
  • 重解析点:应用程序想把特殊数据存储到特殊的地方,只允许他自己使用。
  • 更新序列数日志,维护对文件所作的所有更改的记录。
  • 磁盘限额:允许计算机管理员为用户允许占用的磁盘空间设置阈值
  • 支持Unicode

JPEG

常见恢复点

  • SOI: FF D8
  • JFIF application segment : FF E0
  • DQT 量化表:FF DB
  • 帧图像开始:FF C2
  • 霍夫曼表 : FF C4
  • 扫描开始 :FF DA
  • 结束标志:FF D9

FF DB 标记让图像处理软件能够继续处理数据。结束符号是FF D9。

JFIF

注意常见修复点

DQT(量化表)

第一个标识为0,后面这个标识就是1了。段长度不包含一开始的2个字节。

帧开始的地方

这个段长度指的是FF C2 到FF C4之间的数据长度

在JPEG格式中,SOF0(Start of Frame 0)标记段中的采样因子(sampling factors)指定了图像中每个颜色分量的水平和垂直采样率。这些采样因子告诉解码器如何解释颜色分量的排列和采样方式。一个JPEG图像可以包含多个颜色分量,比如Y、Cb和Cr(如果是YCbCr颜色空间)。每个颜色分量都有自己的水平和垂直采样率,以决定它在图像中的采样密度。在SOF0标记段中,采样因子的格式通常是以一组数字表示的。

1、4:2:0,这表示Y分量的水平和垂直采样因子都是4,而Cb和Cr分量的水平和垂直采样因子分别是2。这意味着对于Y分量,每4个像素中有一个水平和一个垂直采样的像素,而对于Cb和Cr分量,每4个像素中只有一个水平和一个垂直采样的像素。

2、4:4:4,所有颜色分量都以全分辨率进行采样,即每个分量的每个像素都有水平和垂直的采样。这意味着所有的颜色分量都以完整的分辨率进行编码,不进行亚采样。

DHT霍夫曼表

0 + 2 + 3 + 1 +1 +1 = 8 编码长度为1的有0个;编码长度为2的有2个;编码长度为3的有3个;编码长度为4的有1个;编码长度为5的有1个;编码长度为6的有1个;一共有8个编码;

有些jpg文件有2个霍夫曼表多数jpg文件有4 个霍夫曼表, 亮度的DC和AC, 色度的DC和AC。最多有 6 个霍夫曼表

扫描行开始

课件中的恢复案例

  1. 首先检查 FF D8和FF D9(起始和结束标志)
  2. 然后检查 FF E0和FF E1数据大小和段长度是否一致
  3. 检查 FF DB 数据长度是否一致;量化表的ID是否符合规定
  4. 检查FF C0帧开始,数据大小与段长度是否一致,样本精度是否为9,颜色分量是否为3,分辨率是否正确。

图像向左下角斜,说明宽度比实际大小宽。图像向右下角倾斜,说明宽度比实际大小窄。

  1. 检查 FF C4 (霍夫曼表)数据大小是否与段长度一致,霍夫曼表信息是否正确,一般先DC,然后AC
  2. 检查FF DA (SOS)数据大小是否与段长度一致,颜色分量是否是3,结束符是否正确

winhex设置偏移调制

看过WINHEX的一些资料,说道查找16进制数时,开始不明白为什么“偏移计算”后面的值一会是510=0,一会又是512=510。呵呵,别笑我有点笨哦,但之前我确实不知道,我不知道有没有和我一样的笨鸟。

现在呢,把这个“为什么”放在这,算是给和我一样的笨鸟一点帮助。知识总会越积越多,对吧。
不绕弯子了

先举几个例子:如

1、查找EB5290时,我们要设偏移计算为512=0

2、查找55AA时候,我们要设偏移计算为512=510

3、再补充一个1024=512

注:等号前是我们要搜索分块大小,后面是从分块中起始搜索的位置。

详细解释,1、我们知道EB5290(或EBFE90/EB3C90/EB5890)是DBR的头三个字节,而55AA是MBR,EBR或DBR的结束标志,也就是说,EB5290是在一个扇区中的第0、1、2个位,而55AA是在一个扇区的第510、511这最后两个字节的位置。

我们知道,如果要在一个扇区中要找指定的字符(16进制),那么我们就要从头搜索到尾。如果说我们知道我们要搜索的字符在一个扇区的后半部分,那么我们就可以从一个扇区的中间位置开始向下搜索,这样就提高了搜索的速度。

好了

例1中:EB5290是在扇区的第0、1、2字节,那么我们只能以扇区为单位,从每个扇区的第一个字节搜索到最后一个字节。也就是 512=0 即:以512字节(一个扇区大小)为单位,从0位置开始搜。

例2中:55AA在510,和511个字节上(注:扇区从0~511),所以我们可以以扇区为单位从510位置开始搜索。即512=510,我们对每个扇区只看它的最后两个字节。

通过以上的分析来举一反三,我们要以两个扇区为单位从中间位置开始可设偏移计算条件为1024=512。

我们要只搜扇区中的第123个字节(从0~512),看是不是AB(其实就成了判断)偏移计算条件为512=123。

大胆一点,我们以100为单位,搜后面5个字节看是不是0011223344,偏移计算条件为100=95。

哈…现在该明白偏移计算条件等式的意思了哦。

不知道分区类型的时候查找DBR的EB3F90时偏移调制512=0要设置通用字符3F

查找55AA的结束标志时偏移调制512=510

参考答案:https://www.intohard.com/thread-99910-1-1.html