winhex与磁盘格式与 数据恢复
第一阶段:
熟悉WinHex的使用。
n 熟悉磁盘工具的使用。
n 利用WinHex查看物理磁盘和逻辑磁盘。
n 了解WinHex中相关工具的用法。
以管理员身份运行winhex(以便之后修改)
上方工具栏,工具,打开磁盘,可以按逻辑盘和物理盘来打开磁盘。
位置可以按扇区,偏移,FAT表跳转。
右键单击分区,点击template可以查看一些信息。
第二阶段:
分析本地硬盘的主引导扇区
利用
n 主引导扇区由哪些部分组成?
n 四个主分区项的内容各代表什么?
n 分析主扩展分区表的结构。
n 通过分区项来确定每个本地逻辑盘的位置以及大小,并画出本地硬盘的逻辑结构。
n 每个本地盘的开始扇区位置,总扇区数,结束扇区位置,各扩展分区表扇区位置,保留空间数量。
下图为实验室虚拟机的磁盘。

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

从1B行E列开始为分区信息。
第一个分区: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个扇区保留,固从3fH即63号扇区开始)。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盘大小01BFEF81H,29335905个扇区,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.txt,go 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改为54(T)。然后修复簇链表。
由于文件大小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为分区3(C盘,系统盘)起始扇区,结束扇区为C88A7FFH,计算得共99.999999523162841796875GB。
还有分区名。


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


其余扇区类似,不再赘述。
打开C盘观察DBR。

可知文件系统ID为NTFS,每扇区占用字节数为0200H,512字节。每簇扇区数08H,故每簇4kb。
在hard disk 右键template也可查看相关信息。

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

Go to sector 转到 MFT表


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

再看F盘。与C盘类似。


FAT32分区数据恢复
在虚拟机格式为FAT32的H盘进行操作。
(1)FAT32逻辑磁盘基本信息描述
在H盘新建了2017301510029.txt,大小103kb。
FAT32数据恢复过程
Shift+delete删除
打开winhex。
查看到每扇区512字节,一簇8扇区。即4kb。

用winhex查看目录项

修改首字节,首簇高位。

E5改为32(2),高位仍为00 00(这里是推测原来就是0000而不是不改)
得首簇号0000000AH。转到FAT表,第10簇。
103kb为26簇。
恢复簇链表。


恢复成功。

winhex与磁盘格式与 数据恢复的更多相关文章
- 调整ESX的VMFS磁盘格式的块大小,让单个虚拟磁盘支持更大容量
调整ESX的VMFS磁盘格式的块大小,让单个虚拟磁盘支持更大容量 前因:客户搭建了VMware ESX企业版的测试平台:有一天接到一个需求,是测试数据库的,需要一个300G的磁盘. 解决过程: 1.按 ...
- Mac上因磁盘格式导致gulp无限刷新问题
今天遇到个超奇葩的问题,使用gulp.watch监控文件变化,但是并没有修改文件,却一直执行change,导致浏览器无限刷新 调试了10小时,代码各种删改,一直不得其解.切换到Windows运行,又正 ...
- linux (1)基本知识/目录/磁盘格式/文件系统
一.linux基本知识介绍1.命令行格式:(按两次tab可以知道有多少个可执行命令,我的有1980个,用户有1960个)[用户名@linux主机名 ~(当前目录)]$ 命令 选项 参数1 参数2[ro ...
- 如何将Windows8系统的磁盘格式(GPT格式)转换成Windows 7系统的磁盘格式(MBR格式)
知识点分析:随机预装Win8的电脑,磁盘为GPT格式的,如果需要安装Win7等早期版本系统,需要转换为MBR格式的,使用Diskpart命令即可完成转换.操作步骤: 注意:转换磁盘格式需要清空磁盘中的 ...
- CentOS 7 挂载ntfs磁盘格式的U盘
因为CentOS 默认不识别NTFS的磁盘格式,所以我们要借助另外一个软件来挂载,那就是ntfs-3g了 自带的yum源没有这个软件,要用第三方的软件源,这里我用的是阿里的epel. 1. 切换到系统 ...
- APFS 宗卷 • APFS(加密)磁盘格式怎么去掉?Mac磁盘加密怎么解除?
相信很多朋友都因为APFS 宗卷 • APFS(加密)磁盘格式而困扰,这种磁盘加密,导致很多破解版软件都不能安装.那么磁盘加密怎么解除?小编翻阅了一些教程,为您带来APFS 宗卷 • APFS(加密) ...
- WinHex分析PE格式(1)
最近在一直努力学习破解,但是发现我的基础太差了,就想学习一下PE结构.可是PE结构里的结构关系太复杂,看这老罗的WiN32汇编最后一章 翻两页又合上了..把自己的信心都搞没了.感觉自己的理解能力不行, ...
- esxi 改变虚拟机磁盘格式为精简存储
最近在部署虚拟机,导入几个之前保存的ovf模板,发现存储已经被耗费的差不多了.检查了下磁盘存储格式 存储类型是 后置备延迟置零 占用空间 简单了解下 三种存储类型 1.厚置备延迟置零: 默认的创建格式 ...
- MySQL基于ROW格式的数据恢复
大家都知道MySQL Binlog 有三种格式,分别是Statement.Row.Mixd.Statement记录了用户执行的原始SQL,而Row则是记录了行的修改情况,在MySQL 5.6以上的版本 ...
随机推荐
- Flutter实战视频-移动电商-10.首页_FlutterSwiper轮播效果制作
10.首页_FlutterSwiper轮播效果制作 博客地址: https://jspang.com/post/FlutterShop.html#toc-5c2 flutter_swiper http ...
- 3-8 & 3-9Unicode 编码
3-9Unicode 编码 主要支持英文字母和一些特殊字符,中文不支持, 为了支持世界上所有的字符集 就是Unicode编码的出现 char c='\u005d';表示十六进制的. c表示一个尖括号:
- python-re使用举例
代码: import re text = "JGood is a handsome boy, he is cool, clever, and so on..." print(tex ...
- Jmeter + Junit
在使用jmeter中Junit的功能之前,最好将接口以手动的方式调通,可以参考 Jmeter之HTTP Request 下面开始讲一下如何使用Junit功能 1. 编写测试类 JmeterJunit ...
- js点击复制某段文本方法
百度很多说这个方法 window.clipboardData.setData ("Text", "demo"); 实践证明只有ie支持. 改成下面这个方式来复制 ...
- Linux下mysql启动失败
原因:强制重启服务器之后,发现mysql启动 失败 解决方法:强制清空 报错路径下的tmp文件,清空之后在tmp下面新建一个文件夹,文件夹的名字在你清空tmp之后启动mysql系统会给你提示 欧克,完 ...
- KM算法萌新讲解篇
KM算法 首先了解问题:也就是最大权值匹配: 二分图里,边带了权值,求整幅图里匹配最大/最小的权值 因为接触匈牙利算法的时候看的是找对象系列的博文,所以也自己写一发找对象的博文吧: 算法背景: 信 ...
- Codevs 1312 连续自然数和
1312 连续自然数和 题目描述 Description 对于一个自然数M,求出所有的连续的自然数段,使得这些连续自然数段的全部数字和为M.eg:1998+1999+2000+2001+2002=10 ...
- [Xcode 实际操作]八、网络与多线程-(3)使用UIApplication对象拨打电话
目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,拨打电话的功能. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] 注:需要使用真机进行测 ...
- Centos 7.x 安装 MongoDB
官方安装资料:点击直达 本次以Centos为安装主机 1:首先先导入MongoDB的yum源,因为Centos默认是没有MongoDB的yum源,创建文件:/etc/yum.repos.d/mongo ...