WinHex文件提取

目录

WinHex文件提取... 1

一、NTFS文件提取... 1

二、FAT32文件提取... 1

三、FAT16文件提取... 2

四、ExFAT文件提取... 2

WinHexDBR修复... 2

一、ExFAT的DBR修复... 2

二、NTFS的DBR修复... 2

三、FAT32的DBR修复... 3

四、FAT16的DBR修复... 3

NTFS计算扇区大小的方法... 3

一、NTFS文件提取

首先通过MBR查找文件的类型接着跳到NTFS的DBR处,然后向下跳转70个扇区,通过侧栏查找文件名,找到80属性后记录每簇扇区数以及文件大小后,回到DBR处后进行跳转

注意事项:

1.通过80属性查找的文件大小是扇区,需要与通过DBR查看的每簇扇区数相乘在进行跳转。

2.当磁盘被误格式化时,磁盘中的非常驻属性文件会被保留,常驻属性则不会。

3.当磁盘中的文件被误删除时,无论是常驻属性还是非常驻属性的文件都会在win hex中保留原文件

4.在计算提取文件的所在簇号时,需要将查看到的簇号进行减2。因为0号FAT项和1号FAT项有特殊用处。

二、FAT32文件提取

首先通过MBR查看DBR的大小并跳转到DBR,通过FAT32的DBR查看每簇扇区数、FAT表大小以及保留扇区数进行跳转,跳转至DATA数据区。通过目录项查找需要提取文件的所在簇号,将需提取文件所在簇号与每簇扇区数进行相乘,并从目录项向下跳转所提取文件的簇号与每簇扇区数的结果。(在跳转前最好将文件大小记录下来)

注意事项:

1.在计算提取文件的所在簇号时,需要将查看到的簇号进行减2。因为0号FAT项和1号FAT项有特殊用处。

2.FAT32与FAT16系统不同,FAT32在目录项向下跳转查找文件所在簇时不需要向下跳转32个扇区。

3.FAT32与FAT16在DBR中查找FAT表大小的位置时不相同的。

三、FAT16文件提取

FAT16的文件提取与FAT32的文件提取基本无异,但是要记住FAT16的分区起始扇区与FAT32的分区起始扇区是不一样的。

四、ExFAT文件提取

首先通过MBR查看DBR的大小并跳转到DBR,找到簇位图(查看十进制),直接跳转至簇位图所在的扇区然后向下跳转至大写字母表。再从大写字母表向下跳转256个扇区到达DATA。到达DATA数据区时找到C0属性,查看文件所在的扇区和文件的大小

注意事项:

1.在从簇位图跳转至大写字母表时,有时候可能要跳的扇区数超过256.

2.在查找文件的大小时需要注意它的文件大小有两个,一般来说这两个文件的大小是一样的但难免会有些特殊情况,当两个文件大小不相同时需要查看的是上面的文件大小。

WinHexDBR修复

一、ExFAT的DBR修复

(1)通过查找DBR备份进行修复:直接从MBR向下跳转至DBR,然后再从DBR向下跳转12个扇区到达ExFAT的DBR备份。最后只需要将DBR的备份复制写入就可以了。

(2)手动修复DBR:只能修复每簇扇区数的大小,,当DBR和备份都被清空时整个文件就修复不了了

注意事项:

1.当ExFAT的DBR和备份DBR被清空时,重新创建一个磁盘将DBR写入是无法将ExFATDBR修复好。因为每个ExFAT的DBR都有一个专属的卷序列名,当卷序列名错误时是打不开系统的。而卷序列名只存在于ExFAT的DBR和ExFAT的DBR备份里。

二、NTFS的DBR修复

(1)通过查找DBR备份进行修复:首先在MBR文件中记录NTFS的分区总大小和隐藏扇区数,然后向下跳转隐藏扇区数到达DBR。再从DBR向下跳转分区总大小到达NTFS的DBR备份,最后将备份复制写入即可。

注意事项:

1.MBR被破坏时不记得NTFS的隐藏扇区,可以用Ctrl+Alt+X搜索55AA。就可以到达NTFS的DBR了。

三、FAT32的DBR修复

(1)手动修复:通过MBR查找FAT32的隐藏扇区数,然后向下跳转到达FAT32的DBR。通过性创建的一个FAT32的磁盘将新的FAT32的DBR复制下来,回到损坏的FAT32的DBR将复制的文件写入,通过向下查找F8FFFF到达FAT表,然后将FAT表的所在扇区数减去DBR的所在扇区数就是DBR的保留扇区,接着将得出的结果写入DBR中的保留扇区。

(2)通过查找DBR备份进行修复:从DBR向下跳转6个扇区到达FAT32的DBR备份,然后复制,回到损坏的DBR扇区将备份写入即可。

四、FAT16的DBR修复

(1)手动修复:通过MBR查找FAT16的隐藏扇区数,然后向下跳转到达FAT16的DBR。通过性创建的一个FAT16的磁盘将新的FAT16的DBR复制下来,回到损坏的FAT16的DBR将复制的文件写入,通过向下查找F8FFFF到达FAT表,然后将FAT表的所在扇区数减去DBR的所在扇区数就是DBR的保留扇区,接着将得出的结果写入DBR中的保留扇区。

NTFS计算扇区大小的方法

一、从DBR扇区向下跳转6291456个扇区到达MFT,然后再向下跳转12个扇区找到这个扇区的80属性,查看文件的大小,再将文件的大小乘以每簇扇区数再乘以8就是NTFS的文件大小。

JPG图片文件

二、蓝底JPG一般分辨率为600*600

三、JPG文件数据里FF C4的数量固定为4个,其中两个记录亮度,两个记录色度  

四、分辨率大时图片向左偏,分辨率小时图片向右偏

五、如果文件色彩出现问题大概率是在ffc0出现问题

六、要替换数据区时从3f后面的00开始到ffd9.

BMP图片文件

RTF文件替换

向下搜索7B5c7274到达数据区的开头,在向下搜索7d7d到达数据区结尾,再向上搜索7d7b即是数据区。用相同步骤在一个好的文档中找到他的数据区并替换掉就可以了。

HFS+文件系统

该文件系统从DBR两个扇区全为0,DBR第二个扇区才是文件开头到达文件目录区后查看需提取文件的后缀名,如:.doc、.xls等的后一个字节再向下跳88个字节就是文件的描述信息,查看64位要用大端就是文件的所在位置,下一行则是文件大小,回到DBR向下跳转每块大小为8.在一段只有FF的数据区的开头向上跳转8个扇区就是这个分区的开头。从FF跳到80的字节数*8乘每簇就是这个分区的大小。在超级块的第三行的后八个字节用大端看32位就是块大小。在卷头看每块字节数(0X28~0X2B),1号节点位置 (卷头倒数第14行),或

寻找目录区:向下搜FFFE偏移248字节

再跳16个扇区到根目录,或向下搜FF01偏移8字节,

找文件大小和位置需要在文件名后一个字节跳88字节64bit到大小,

再跳转16字节(即下一行)32bit为文件的位置。

要切换大端

跳转位置要在卷标起始开始跳o

EXT4文件系统

超级快起始扇区在DBR后的2个扇区(DBR的数据全为00),0X10~0X14是EXT4的总块数,超级块每块大小为2N (N的数据0X18~0X1d)再乘于总块数等于总扇区数。通过搜索53EF到达1号超级块,将1号超级块所在扇区减去超级块起始扇区+2的得数是第1块超级块到第2块超级块的扇区数也是第1块超级块到第0块超级块的扇区数的固定数。从超级块起始扇区向下跳转6个扇区到达i节点表,i节点表的第一行的后8个字节的前4个字节的数值乘于8回到DBR的位置向下跳转得数到达组块描述符。将组块描述符所在扇区先记录下来,找到组块描述符中间有数据那一串最后的四个字节的数,将数据乘于8回到超级块起始扇区向下跳转的数到达根目录,文件夹名前8个字节就是文件夹所在块,所在块减1再乘于256得数,就是文件夹信息所在字节。回到组块描述符向下跳转算出来的数(byte),到达文件夹的所在扇区。中间数据的最后4个字节的数据乘于8就是文件夹根目录所在扇区,回到超级块起始扇区向下跳转刚刚算出来的数据。就到达文件夹所在扇区,找到需提取文件向前8个字节就是文件所在块,文件所在减1乘于256的得数文件所在字节,回到组块描述符向下跳转算出来的字节查看文件的文件位置乘于8就是文件所在位置,四个字节为一块,一块为8个扇区,N*8个扇区

RAR结构修复

头52 61 72 21 1A 07 00 CF 90 73 00 00 0D 00 00

00 00 00 00 <==(后面四个为保留字节)

(0X19-0X1A)为文件头大小(算法:从文件头的最后的保留字节的后面一个字节到文件名的最后一个字母/+5字节)

(0X1B-0X1E)为压缩后文件大小(算法:从文件名的最后一个字母/+5字节的后一个字节到文件尾的C4 3D 7B前的一个字节)

RAR结尾(C4 3D 7B)h

RAR头:

ANSI:Rar!

(52 61 72 21)h

RAR头占20个字节(0x00-0x13)

!固定!

0x1b-0x1f(“08-11”字节)为文件压缩后的大小

0x2e-0x2f(“27-28”字节)为文件名大小

脚本

1073741824是1个G的字节数

Goto是从文件起始跳转

Move是从光标所在位置跳转

Block a  b是选择区域

Block是区域结束

Write写入

Terminate中断脚本

Endif结束if条件命令

Exitloop退出循环

Debug检查脚本命令是否出错

CurrentPos表示光标(常量)

Assign把X写入(变量)

GetSize表示文件大小(常量)

Unlimited整数2147483547(常量)

Read读取多少字节到定义量  (READ 定义量 字节数)从光标所在位置开始;如果字节数为8个字节之内的话输出的是64位的值。

Messagebox输出

计算机用最高位,1代表负数,0代表正数,以8位来表示就是 0xxxxxxxx 的第一个0代表正数, 1xxxxxxxx的第一个1代表负数 ,那么8位的第一个位(最高位)就不能算,也就是说只有7位, 2^7=128 个数字,一共正负各128种状态,如果不采用特殊处理,这时候0占用2个编码(1000000000000000),数据表示范围为-127-0+0127,这样总体上一个字节只有255种状态,因为其中0具有正0和负0之分,这不符合数学意义也浪费一个编码(早期硬件很昂贵,一位或者一个编码的浪费都是不可饶恕的)。所以计算机规定,如果是正0,也就是说遇到00000000这个编码(0)就算它为0,如果遇到10000000(0)这个编码会特殊处理一下,用下面的算法处理

遇到10000000(0)这个编码

先取反,得到值为:01111111

再加1,得到值为 10000000

此时10000000的最高位还是1代表负数的定义,同时原先表示负0的编码被利用起来表示-128

现在能理解为啥一个字节(8)的范围为-128  ~  127,即范围就是最小值是-128,最大值是127

接下来 继续:

9 =  2^ 9=512

10 = 2^ 10 =1024

..... 以此类推直到第32位,也就是int的存储(4个字节),我们知道int的取值范围是-2147483648 ~ 2147483647 ,那为啥是这个范围呢?结合上面8位的取值范围-128  ~  127的原理,可以推倒其32位范围的原理

首先公式还是一样,2^32 = 4294967296,总共32位可以代表有这么多个数字,因为知道了计算机是分正负数的,所以4294967296 / 2 = 2147483648 ,也就是说从 -2147483647 ~ -0 +0 ~ 2147483647 这么个范围了,但是上面说了-0是浪费的,因为计算机是以补码的形式来存储数字的,

不管-0 (对应的码是1000 0000 0000 0000)

还是+0(对应的码 0000 0000 0000 0000)

补码都是0000 0000 0000 0000,这就造成了没有任何一个数的补码后值是1000 0000 0000 0000,所以就可以把这个补码用来存储一个数(不能浪费资源),就规定用它来存储一个数-214748364

2147483647怎么来的

                                                                 各类文档数据区

docx数据区:

word\document.xml:

<w:t>   (data)  <w:t>

带图片:

word\media\

0304数据头后马上跟着图像数据;

xlsx数据区:

xl\sharedStrings.xml:

<t> (data)  </t>

pptx数据区:

ppt\slides\slide:

<a:t>   (data)  <a:t>

Doc数据区:

在一大片空白后面。

winhex入门基础知识相关推荐

  1. Python培训入门基础知识学什么?

    Python培训基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python培训入门基础知识学什么呢?来看看下面小编 ...

  2. NLP汉语自然语言处理入门基础知识介绍

    NLP汉语自然语言处理入门基础知识介绍 自然语言处理定义: 自然语言处理是一门计算机科学.人工智能以及语言学的交叉学科.虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部 ...

  3. 负荷计算的时候assert失败_负荷计算的入门基础知识,小白入门必备!

    负荷计算是电气设计人员必须掌握的一必修课,选导体.设备还有保护开关的选择,电网系统分析,都离不开负荷计算的内容,为此小编特意总结9个负荷计算的入门基础知识,分享给大家,希望能在工作和学习中作为一份参考 ...

  4. python笔记基础-Python入门基础知识学习笔记之一

    为什么要写这篇文章? 本人做过Objective-C开发,现在在用C#做WinForm开发.近段时间在学习Python入门基础知识时,发现有很多知识点和Objective-C的不一样.故想通过本文记录 ...

  5. 电脑的基础知识_电脑入门基础知识

    电脑入门基础知识 学习电脑应该先了解电脑的基本的组件,然后学习操作,包括键盘.鼠标的使用,能基本使用操作系统,再学习打字. 作为一个电脑小白,想要学习电脑,首先要知道如何操作,学习打字,接着就是熟练使 ...

  6. ***入门基础知识(超全)

    ***入门基础知识(超全) [sell=2]  DOS 常用命令: dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 de ...

  7. Python入门基础知识学什么?

    Python基础知识主要是针对一些零基础的同学安排的,虽说Python是相对比较简单的一门编程语言,但是没有基础的同学还是要进行系统的学习,那么Python入门基础知识学什么呢?来看看下面小编的详细介 ...

  8. 半小时入门MATLAB编程入门基础知识:

    https://learnxinyminutes.com/docs/zh-cn/matlab-cn/ 半小时入门MATLAB编程入门基础知识: % 以百分号作为注释符 %{ 多行注释 可以 这样 表示 ...

  9. C语言入门基础知识有哪些?

    众所周知C语言经久不衰,并且很多人都想要成为C语言工程师,为了能够做好C语言技术学习,需要知晓C语言入门基础知识有哪些. 用一个简单的C程序例子,介绍C语言的基本构成.格式.以及良好的书写风格,使小伙 ...

最新文章

  1. 这是一份不完整的数据竞赛年鉴
  2. requirejs 使用实例
  3. “Usage of API documented as @since 1.8+”
  4. JRockit – JRCMD有用的命令
  5. 95-080-054-源码-启动-启动TaskManager
  6. memcached linux 配置文件,Linux下Memcached服务器部署 | 系统运维
  7. ERP系统重新打开订单的后台限制解析
  8. 又被分治题卡住好几个小时!用最笨的方法搞懂分治法边界,告别死循环!
  9. webpack2.0构建Reactjs基础工程
  10. 美国当地时间4月17日中国概念股收盘行情
  11. Notepad++ 安装 Zen Coding / Emmet 插件
  12. 《与孩子一起学编程》书评
  13. sql优化常见的几种思路
  14. Java集合、泛型和枚举
  15. html文档怎么设置默认浏览器打开,win10系统如何设置HTML文件指定浏览器打开?...
  16. Contest1389 - 2018年第三阶段个人训练赛第四场. Transit Tree Path(DFS)
  17. LTE 核心 MME SGW PGW作用:
  18. 三国志战略版:登庸令队伍_貂蝉与贾诩的武锋组合
  19. 基于GNN网络的session推荐模型(知识图谱技术在推荐场景的应用)
  20. 【go 科学计算】用于统计、机器学习和数据操作

热门文章

  1. #define定义宏常量和宏函数
  2. 总谐波失真计算公式_IEC61000-4-3测试系统的谐波场强分量测量方法
  3. UDP Socket接收缓冲区与netstat Recv-Q
  4. linux 下的 包过滤器 BPF
  5. 服务器2003共享文件夹设置密码,win2003 server r2 设置不需要密码验证的共享文件访问权限(即匿名访问)...
  6. 利用Win10自带的计算器把十六进制,八进制转换成十进制
  7. 解决Error inflating class com.google.android.material.appbar.CollapsingToolbarLayout
  8. linux u盘插入事件,Linux 下监控USB设备拔插事件
  9. java json parser_自己实现JSON解析器 JsonParser
  10. [4G5G专题-90]:流程 - 4G LTE 终端在RRC IDLE状态下的行为