目录

第11课时.创建一个文件对文件系统做了哪些操作

干货

第12课时.用winhex手工创建一个文件

第13课时.删除一个文件对文件系统做了哪些操作

第14课时,清空回收站对文件系统做了什么操作 

第15课时.按SHIFT彻底删除对文件系统做了什么操作

第16课时.恢复删除的文件-用winhex显示删除过的文件

第17课时.有高位簇的文件删除后对文件系统做了什么操作

第18课时.恢复删除的文件-手工计算被清空的高位簇(SHIFT)

第19课时 剪切文件对文件系统做了什么操作 


又来?

第11课时.创建一个文件对文件系统做了哪些操作

  1. 当文件被复制到根目录(新建一个.txt:
    1. 根目录数据会发生变化由全 00变为 文件记录数据
    2. 新建一个aaa.txt的空文档  ,只是多了一条目录项 ,同上
  1. 给aaa.txt增加内容时:
    1. 1号扇区文件系统的空闲簇号减少         (3E8-3EB绝对路径)
    2. 下个可用簇改变          (3EC-3EF绝对路径)
    3. FAT1 、FAT2 多了个FAT表项
    4. 目录项不同
    5. 数据区的数据改变 

干货

txt特殊,一般文件操作按(给aaa.txt增加内容时)进行学习

第12课时.用winhex手工创建一个文件

学这一课时你要用到一个表格

短文件名目录项数据结构 

偏移(16进制)

描述

00-0A

文件名的ASCII码

0B-0B

文件属性 0x01:只读 ;0x00读、写;0x02隐藏;0x04系统

0x08:卷标;0x10目录;0x20:存档;0x0F长文件名

0C-0C

保留

0D-11

创建时间

12-13

最后访问时间

14-15

起始簇的高16位

16-19

最后修改时间

1A-1B

起始簇的低16位

1C-1F

文件的大小字节数

  • ASCII码文件名填充(00-07)
  • 后辍扩展名(08-09)
    • 目录项目(0C)控制大小写(扩展名和文件名)(18)16=(11000)2     高一位表示扩展名是否小写(1小写) 高二位表示名称是否小写(1小写)
      • 后缀修改(先以大写写入)
        • TXT后缀(大写):54    58    54
        • TXT后缀(小写):(0C)改成18
      • 名称修改(先以大写写入---英文)
        • TXT(小写):(0C)改成18

  • 普通类型文件(0B)
  • 创建时间(0E-11)
    • 在数据解释器中输入数据,DOS,自动生成
  • 访问可以和(10-11)数据相同-----(12-13)
  • 最后修改时间(16-19)

干货:

手工创建文件的流程:

  1. 新建一个目录项
  2. 给数据区的内容赋值
  3. 给FAT1表相应的FAT表项标记簇已用 

课后实践

目的:用winhex手工创建一个名为《abc.txt》  里面的内容是abcde123456789 

ANSI(ABC--先大写):414243

ANSI(TXT--先大写):545854

(根目录下)构建文件名

就这样    妥了🐱‍🏍

填充文本数据(我的是9号簇)

9号簇

ANSI:6162636465313233343536373839

第13课时.删除一个文件对文件系统做了哪些操作

问题:删除文件到回收站做了什么操作 ?

  1. 1号扇区的空闲簇号-1                 ----(1号扇区)
  2. 下个可用簇向下移了一个簇         ----(1号扇区)
  3. FAT1 和FAT2 多了一个FAT表项     ----(FAT1 AND FAT2)
  4. 文件目录项第一个字节变成0XE5-----(如果是删除则是E5)
  5. 回收站的目录里 -----------------------($RECYCLE.BIN回收站)---根目录文件放回收站
  6. 多了两个目录项 -----------------------($RECYCLE.BIN回收站)
  7. 数据区多了一个配置文件的内容 

第14课时,清空回收站对文件系统做了什么操作 

  1. 1号扇区  空闲簇数 增加 2
  2. 下个可用簇号 改变
  3. FAT1和FAT2相应的表现改变
  4. 回收站的子目录里面的相应的两个目录项第一个 字节根改成0XE5 

第15课时.按SHIFT彻底删除对文件系统做了什么操作

走了第1章节的一半

目的:按SHIFT彻底删除对文件系统做了什么操作

直接SHIFT键删除,用对比分析工具分析

很棒

分析一下变动的扇区

  1. 1号扇区的空闲簇号变大  
  2. 下个可用簇号改变
  3. FAT1和FAT2会释放相应的FAT表项
  4. 目录项的第一个字节改成0XE5 

第16课时.恢复删除的文件-用winhex显示删除过的文件

简单的方法(全自动)

  1. 直接在Winhex目录项查看到
  1. 右键恢复---->恢复/复制
  1. 文件名称不完整---(正常E5)

复杂一丢丢的(手动)   

  1. 目录项查找文件名(E5开头)
  1. 文件大小(1,292,559) 簇(18,203)
  2. 跳转到簇(18,203) 然后选择头起始位----->偏移【文件大小(1,292,559】为尾巴
  3. 直接复制,到新文件
  4. 搞定

课后实践

目的:恢复222文件夹里的《Camtasia Studio 8.6.zip》的文件 

手动版本,自动版本(否,分配)

  1. 打开我们可爱的Winhex
  2. 找到222目录项
  3. 点一下
  1. 看看哪个是-----Camtasia Studio 8.6.zip
  1. 很棒,一看就能找到(或者使用ANSI工具)
    1. E5很棒
  1. 第4号簇 文件大小(298,181,061=284MB)
  2. 直接复制起始 偏移 尾巴 到新文件
  3. 搞定
    1. 因为簇看错翻了2次车🚗

睡觉

第17课时.有高位簇的文件删除后对文件系统做了什么操作

上知识点

  1.  1号扇区 空闲簇数 和下个可用簇号改变
  2. 文件对应的FAT1和FAT2的FAT表现清空
  3. 目录项的第一个字节变成0XE5
  4. 目录的项的高位簇被清零 ---(全自动恢复不使了)

第18课时.恢复删除的文件-手工计算被清空的高位簇(SHIFT)

数据一多就得用高位簇

课上实践

目的:恢复出《字符编码转换器.rar》

  1. 字符编码转换器------>ANSI编码------>D7D6B7FBB1E0C2EBD7AABBBBC6F7
  2. E5 -->32-1的偏移

数学问题来了

已知低位簇为:18,344簇(619712扇区)求高位?求文件存放数据位置

方法1 枚举法

低位簇+65536*高位簇=文件存放位置(簇)

都是理科生,我就比较直观一些

#include <stdio.h>
int DW_SQ;  //文件低位簇
int GW_SQ;  ////文件高位簇
int Date;   //可能存放的位置
int main(){
    printf("请输入初始扇区:\n");
    scanf("%d",&DW_SQ);
    for(GW_SQ=0;GW_SQ<65536;GW_SQ++)    //有65536种可能性 ---00到FF FF
        {   
            Date=DW_SQ+65536*GW_SQ;
            printf("%d\n",Date);     
        }
    

    retuen 0;
}

比如题中的低位簇为:619712扇区 文件大小(59,948B)

#include <stdio.h>
int GW_SQ;
int Date;   //可能存放的位置
int main(){
    printf("请输入初始扇区:\n");
   
    for(GW_SQ=0;GW_SQ<65536;GW_SQ++)    //有65536种可能性 ---00到FF FF
        {   
            Date=619712+65536*GW_SQ;
            printf("%d\n",Date);     
        }
    

    retuen 0;
}
  1. 一个一个试嘛(一般高位簇很小)
  2. 第高位第4个簇
  3. 转跳到数据扇区280488簇(9008320扇区)
  4. 复制文件
  5. 翻车
  1. 最后对比了一下是数据不一样
    1. 翻车

课后实践

目的:恢复在根目录下的WINHEX.zip文件 

  1. 找到根目录
  2. ASIN编码:57494E484558
    1. 搜索
  1. 高位簇(00 00---被删除清零了)低位簇(20965簇)大小(1,292,559)
  2. 带公式
    1. 低位簇+65536*高位簇=文件存放位置(簇)
    2. 20965+65536*高位簇=文件存放位置(簇)
    3. 答案:20965+65536*1=86,501

第19课时 剪切文件对文件系统做了什么操作 

剪切文件到别的盘后做了哪些操作? 

  •  1号扇区空闲簇数 和下个可用簇号改变
  • 文件对应的FAT1和FAT2的FAT表现清空
  • 目录项的第一个字节变成0XE5 (俩长 一短 目录项)
  • 目录的项的高位簇被清零 

剪切文件到别的文件夹做了哪些操作? 

  • 将原先的目录项第一个字节标记成0XE5
  • 在剪切后的子目录里生成一个目录项