• winhex与磁盘格式与 数据恢复


    第一阶段:

     熟悉WinHex的使用。

    n 熟悉磁盘工具的使用。

    n 利用WinHex查看物理磁盘和逻辑磁盘。

    n 了解WinHex中相关工具的用法。

    以管理员身份运行winhex(以便之后修改)

    上方工具栏,工具,打开磁盘,可以按逻辑盘和物理盘来打开磁盘。

    位置可以按扇区,偏移,FAT表跳转。

    右键单击分区,点击template可以查看一些信息。

    第二阶段:

     分析本地硬盘的主引导扇区

     利用

    n 主引导扇区由哪些部分组成?

    n 四个主分区项的内容各代表什么?

    n 分析主扩展分区表的结构。

    n 通过分区项来确定每个本地逻辑盘的位置以及大小,并画出本地硬盘的逻辑结构。

    n 每个本地盘的开始扇区位置,总扇区数,结束扇区位置,各扩展分区表扇区位置,保留空间数量。

    下图为实验室虚拟机的磁盘。

     

    下图为主引导扇区,主分区表

     

    1BE列开始为分区信息。

    第一个分区:80 01 01 00 07 FE FF FF 3F 00 00 00 00 00 80 02

    80代表为主分区,07表示为NTFS格式。00 00 00 3f H为起始扇区。(因为有一个扇区为主引导扇区,且有62个扇区保留,固从3fH63号扇区开始)。02800000H是扇区数,一扇区512字节,计算后为20.0GB

    类似的,0b表示为FAT32格式,0f表示扩展分区。

    0000003fH + 02800000H即为0280003fH,是下个分区的起始扇区号,与图中显示一致。

    第二个分区:00 FE FF FF 07 FE FF FF 3F 00 80 02 00 00 40 01

    起始扇区 0280003FH,与上面的计算一致。 大小01400000H,为第一个分区的一半,10G

    第三个分区类似,大小为C00000H个扇区,6G,起始扇区03C0003FH

    值得注意的是第4个分区,大小为02FFEFC0H,计算为50327488个扇区,23.998016357421875GB,不是恰好24GB。起始位置0480003FH

    打开第四个分区,可见分区表。

    G盘,H盘的信息。

    G盘大小01400000H个扇区,10GB,起始位置0000003FH。这里的起始位置是相对于主分区表中0480003FH的偏移。

    H盘大小01BFEF81H29335905个扇区,13.99844GB,起始位置0140003FH

    第三阶段:

     熟悉FAT32文件格式。

    n 用WinHex打开某个FAT32分区格式的逻辑盘。

    n 查看该逻辑盘的起始扇区,分析起始扇区中的相关字段(BPB:BIOS Parameter Block)。

    n 查看FAT1和FAT2的内容和大小。

    n 查看该逻辑盘的根目录区。

    n 查看某个文件的目录项结构和FAT链以及具体存储位置。

    n 在根目录下建立文本文件test.txt,其中填充60K左右的文本字符保存。

    n 查看该文件的目录项,对其进行分析,并得到该文件所在位置以及大小。

    n 查看首簇位置,并得到簇链表。通过簇链表查看该文件内容。

    n 记录首簇位置(14H-15H,1AH-1BH)和文件大小(1CH-1FH)。

    这里F盘就是FAT32格式的盘。00行,BC列0200H代表一个扇区512字节,D行20H代表一簇32扇区。于是一簇16kb。

    F盘6GB,计算6*1024*1024/16得簇数,一簇在FAT表中占4字节,故计算得FAT表大小应为1.5M,事实上查看下图,确实为1.5M,计算正确。

    以上信息也可以在Disk中右键template查看。

     

    F盘建立txt文件,test.txt,大小为57kb

     

    右键test.txtgo to directory entry可以查看目录项。

     

    八位00H-07H文件正名,08H-0AH三位扩展名,14H-15H为起始簇号高16位。1AH-1BH为起始簇号低十六位。1CH-1FH为文件字节长度。这里0000E219H,为57881字节。起始簇号000003C9H,为969号。

    然后点击FAT32,右键go to FAT entry,输入969,可以转到test.txt的簇链表。如下图。

    注意簇号从零开始,四字节一个簇号。然后每个位置的内容指向下一簇。最后一簇内容为0FFFFFFFH。

     

    第四阶段:

     手工恢复被删除的文件

    n 删除前面所建立的文件test.txt。(del&shift+del)

    n 利用WinHex在该文件所在盘符查找test.txt文件的目录项。

    n 查看目录项的变化。

    n 利用该残余目录项来计算被删除的文件所在的位置。

    n 手工恢复该文件(文件名、首簇高位、簇链表修复)。

    Shift+delete彻底删除。

    删除后查看目录项变化。

     

    可见第一个字节变为E5。同时首簇号高位清零。(这里原本就是0,固待会恢复时无需再改)

    看一下簇链表,发现被清空。

     

    然后开始恢复。

    E5改为54T)。然后修复簇链表。

    由于文件大小57kb,固分配四簇。

    000003C9H处,根据上文,填上CA 03 00 00...

    第四簇填0FFFFFFF

    恢复完毕,这时打开F盘可以查看test.txt

    磁盘结构分析

    (1)磁盘结构图

     

     

    (2)磁盘结构分析重要过程、数据及分析结果

    Winhex打开物理磁盘。查看start sectors

    LBA0即为设备的第0个逻辑存储块。

    LBA0可知格式为0xEE,为GPT分区表。

    LBA1

    02 00 00 00 00 00 00 00表示分区表项从LBA2开始。0x250行0-3列,80 00 00 00 表示共128个分区。4-7列,80 00 00 00表示每个分区表项大小128字节。

     

    LBA2

    8A800H为分区3C盘,系统盘)起始扇区,结束扇区为C88A7FFH,计算得共99.999999523162841796875GB

    还有分区名。

     

    类似的有F盘,分区6,起始扇区5788E800H,结束扇区74511FFFH,共482883583扇区,230.256835460662841796875GB

     

     

    其余扇区类似,不再赘述。

    打开C盘观察DBR

     

    可知文件系统IDNTFS,每扇区占用字节数为0200H,512字节。每簇扇区数08H,故每簇4kb

    hard disk 右键template也可查看相关信息。

     

    0x30开始8字节为MFT起始簇号。C0000H786432 786432*8 = 6291456扇区(字节偏移为 6291456*512= 3221225472 ( 十六进制0xC0000000)

     

    Go to sector 转到 MFT

     

     

    MFT表一项1kb,固下一项偏移为1024/16=40H

    再看F盘。与C盘类似。

     

     

    FAT32分区数据恢复

    在虚拟机格式为FAT32H盘进行操作。

    1FAT32逻辑磁盘基本信息描述

    在H盘新建了2017301510029.txt,大小103kb

    FAT32数据恢复过程

    Shift+delete删除

    打开winhex

    查看到每扇区512字节,一簇8扇区。即4kb

     

    winhex查看目录项

     

    修改首字节,首簇高位。

     

    E5改为322),高位仍为00 00(这里是推测原来就是0000而不是不改)

    得首簇号0000000AH。转到FAT表,第10簇。

    103kb26簇。

    恢复簇链表。

    恢复成功。

  • 相关阅读:
    containerd 与安全沙箱的 Kubernetes 初体验
    dubbo-go 中的 TPS Limit 设计与实现
    MVC
    DataGridView移动上下行
    Jquery hover 事件
    MVC
    MVC 基本概念
    AJAX简单封装
    ViewState
    PostBack
  • 原文地址:https://www.cnblogs.com/lqerio/p/10539748.html
Copyright © 2020-2023  润新知