解析DBR操作系统引导记录数据
理解文件系统。你必须要熟悉DBR,下面我们就来看看文件系统解析DBR数据。
Dos Boot Record(DBR)操作系统引导记录是由操作系统的格式化程序建立的。在文件系统驱动操作不论什么一个磁盘卷时,这一部分的信息将被读取并作为文件系统在这个磁盘卷上的參数被使用。它包括了有效的引导程序、厂商标志、BPB数据块等。
1.那么怎么得到DBR呢?它位于分区的第一个扇区。而分区的地址能够从磁盘的第一个分区的分区表项中获得。
详细可參考http://blog.csdn.net/liyun123gx/article/details/38420665
2.分析本扇区数据
以下是一个FAT文件系统的DBR的信息
(注意 数据以小端格式存储的)
0x01~0x02: 3个字节。跳转指令。
跳转到DBR后面一点的引导程序处。引导程序是一段用来载入真正操作系统的程序。
0x03~0xA: 8个字节,OEM串。本例中是MSDOC5.0
0X0B~0X0C: 2个字节,每扇区的字节数。
本例是0X0200,512
0X0D 1个字节,每簇的扇区数。
本例是0x8
0X0E~0X0F: 2个字节,保留扇区数。本例是0x0026
0X10: 1个字节,FAT表个数。本例是0x02
0X11~0X12: 2个字节。根文件夹最多可容纳的文件夹项数。FAT12和FAT16通常为512,FAT32不使用此值,为0.本例中是FAT32,所以为0.
0X13~0X14: 2个字节,扇区总数。
小于32MB时使用该处存放,超过32MB的使用偏移0x20~-x23字节处的4字节存放。
本例中磁盘为7G多,故为0.
0X15: 1个字节,介质描写叙述。
本例中0XF8表示本地硬盘。
0X16~0X17: 2个字节。每一个FAT表的扇区数。相同。FAT32不使用,为0.
0X18~0X19: 2个字节,每一个磁道的扇区数。
本例是0X3F,63
0X1A~0X1B: 2个字节,磁头数。本例是0XFF,255
0X1C~0X1F: 4个字节。分区前已经使用的扇区数,隐藏扇区数。本例是 0X 00 00 00 3F,63
0X20~0X23: 4个字节,文件系统扇区数。本例是 0X00 EA 58 78,15358072
0X24~0X27: 4个字节,每一个FAT表的扇区数。本例是 0X00 00 3A 79。14969
0X28~0X29: 2个字节,标记。
0x2A~0x2B: 2个字节,版本。
0x2C~0x2F: 4个字节。根文件夹簇号,2。(尽管在FAT32文件系统下。根文件夹能够存放在数据区的不论什么位置,可是通常情况下还是起始于2号簇)
0x30~0x31: 2个字节,FSINFO(文件系统信息扇区)扇区号。1。该扇区为操作系统提供关于空簇总数及下一可用簇的信息。
0x32~0x33: 2个字节,备份引导扇区的位置。6。
备份引导扇区总是位于文件系统的6号扇区。
0x34~0x3F: 12个字节。未使用。
0x40~0x40: 1个字节,BIOS INT 13H 设备号,0x80。
0x41~0x41: 1个字节,未用。
0x42~0x42: 1个字节。扩展引导标志。0x29。
0x43~0x46: 1个字节,卷序列号。通常为一个随机值。
0x47~0x51: 11个字节,卷标(ASCII码)。假设建立文件系统的时候指定了卷标,会保存在此。本例中是NO NAME
0x52~0x59: 8个字节。文件系统格式的ASCII码,FAT32。
0x5A~0x1FD: 410个字节,未使用。
该部分没有明白的用途。
0x1FE~0x1FF: 签名标志“55 AA”。
3.FSINFO信息扇区
FSINFO一般位于文件系统的1号扇区。就是DBR的下一个扇区。它用来记录文件系统中空暇簇的数量以及下一可用簇的簇号等信息。
以下介绍一下FSINFO的结构
0x00~0x03: 4个字节,扩展引导标志“52526141”。
0x04~0x1E3: 480个字节,未使用,所有置0。
0x1E4~0x1E7: 4个字节,FSINFO签名“72724161”。
0x1E8~0x1EB: 4个字节,文件系统的空簇数。41207688(0x00 12 6D 88)。
0x1EC~0x1EF: 4个字节。下一可用簇号,663(0x00 00 02 97)。
0x1F0~0x1FD: 14个字节,未使用。
0x1FE~0x1FF: 2个字节,“55 AA”标志。
注意:通常情况下,文件系统的2号扇区结尾也会被设置“55 AA”标志。6号扇区也会有一个引导扇区的备份,对应的,7号扇区应该是一个备份FSINFO信息扇区。8号扇区能够看做是2号扇区的备份,它的结尾也会有一个“55 AA”标志。
4.以下是一个NTFS文件系统的DBR
0x01~0x02: 3个字节。跳转指令。
0x03~0xA: 8个字节。文件系统的字符串。
本例中是NTFS
0X0B~0X0C: 2个字节,每扇区的字节数。本例是0X0200,512
0X0D 1个字节,每簇的扇区数。本例是0x8
0X0E~0X0F: 2个字节。保留扇区数。本例是0x0000
0X10~0X13: 4个字节。未使用
0X15: 1个字节,介质描写叙述。本例中0XF8表示本地硬盘。
0X16~0X17: 2个字节,总为0.
0X18~0X19: 2个字节,每一个磁道的扇区数。本例是0X3F,63
0X1A~0X1B: 2个字节。每一个柱面的磁头数。
本例是0XFF,255
0X1C~0X1F: 4个字节,隐含扇区数。本例是 0X 0C 81 98 00,209819648
0X20~0X23: 4个字节,未使用
0X24~0X27: 4个字节,未使用。一般都为0X80 00 80 00
0X28~0X2F: 8个字节,该分区的扇区数。
本例为0X00 00 00 00 19 01 8F FF,419532799
0x30~0x37: 8个字节,$MFT的起始逻辑簇号。本例为0X00 00 00 00 00 0C 00 00
0x38~0x3F: 8个字节。$MFTMirr(MFT文件的镜像文件)的起始逻辑簇号。本例为0X00 00 00 00 00 00 00 02
0x40~0x43: 4个字节。每一个MFT记录所占的簇数。
本例中为0XF6 00 00 00
0x44~0x47: 4个字节,每索引簇数,通常每索引簇数为1个簇。
本例为0X00 00 00 01
0x48~0x4F: 8个字节。分区的逻辑序列号。这个序列号是硬盘格式化时随机产生的。本例为0X14 A2 8F A3 A2 8F 87 C6
0x50~0x53: 4个字节,校验和。
为0X00 00 00 00 00
0x54~0x1FD: 426个字节,自举代码
0x1FE~0x1FF: 结束标志
版权声明:本文博客原创文章,博客,未经同意,不得转载。
解析DBR操作系统引导记录数据的更多相关文章
- Gson解析复杂的json数据
最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的json解析方法即JsonObject ...
- Fresco源码解析 - DataSource怎样存储数据
Fresco源码解析 - DataSource怎样存储数据 datasource是一个独立的 package,与FB导入的guava包都在同一个工程内 - fbcore. datasource的类关系 ...
- 【翻译】《深入解析windows操作系统第6版下册》第10章:内存管理
[翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第一部分) [翻译]<深入解析windows操作系统第6版下册>第10章:内存管理(第二部分) [翻译] ...
- 使用Gson解析复杂的json数据
Gson解析复杂的json数据 最近在给公司做一个直播APK的项目,主要就是通过解析网络服务器上的json数据,然后将频道地址下载下来再调用Android的播放器进行播放,原先本来打算使用普通的jso ...
- C#解析json和xml数据
C#解析json和xml数据 // 用到的包using Newtonsoft.Json; // using Newtonsoft.Json.Linq; const string value = &qu ...
- Gson解析第三方提供Json数据(天气预报,新闻等)
之前都是自己写后台,自己的server提供数据给client. 近期在看第三方的数据接口,訪问其它站点提供的信息.比方.我们可能自己收集的数据相当有限.可是网上提供了非常多关于天气预报.新闻.星座运势 ...
- 解析Linux操作系统文件目录
解析Linux操作系统文件目录 随着Linux的不断发展,越来越多的人开始使用Linux,对于那些刚刚接触的人来说,恐怕最先感到困惑的就是那些“不明不白”的目录了.如果想熟练使用Linux,让Linu ...
- 解析form表单数据
//解析form表单数据 function parseFormData(params) { var args = new Object(); for(var key in params){ if(!p ...
- 【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据
<H.264/AVC视频编解码技术具体解释>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战project的形式对H.2 ...
随机推荐
- Cocos2d-x 游戏存档
游戏存档功能能够保存游戏中数据.让玩家游戏能够延续. 单机游戏更为重要.而CCUserDefault能够作轻量级数据库使用,用来存储数据,支持数据类型bool,int, float, double, ...
- Python学习入门基础教程(learning Python)--5.3 Python写文件基础
前边我们学习了一下Python下如何读取一个文件的基本操作,学会了read和readline两个函数,本节我们学习一下Python下写文件的基本操作方法. 这里仍然是举例来说明如何写文件.例子的功能是 ...
- Amazon.com: NEW VI AND VIM EDITOR KEYBOARD STICKER: Office Products
Amazon.com: NEW VI AND VIM EDITOR KEYBOARD STICKER: Office Products NEW VI AND VIM EDITOR KEYBOARD S ...
- [PHP]利用MetaWeblog API实现XMLRPC功能
[PHP]利用MetaWeblog API实现XMLRPC功能 | OWNSELF [PHP]利用MetaWeblog API实现XMLRPC功能 Windows Live Writer是一款小巧的写 ...
- Delphi 基本数据类型列表 高级数据类型列表 字符类型查询列表清单
原文:Delphi 基本数据类型列表 高级数据类型列表 字符类型查询列表清单 长长的列表文字类型文件 分类 范围 字节 备注 简单类型 序数 整数 Integer -2147483648 .. 214 ...
- FZU2179(数位dp)
传送门:Chriswho 题意:求区间[1,n]内能整除自己本身各位数字的数的个数. 分析:这题跟CF 55D Beautiful numbers一样的,一个数能被它的所有非零数位整除,则能被它们的最 ...
- MFC模态对话框的消息循环
MFC模态对话框的消息循环 单线程程序, 当主窗口响应函数中弹出模态对话框时,为什么主窗口响应函数可能照常工作? 当弹出模态对话框时,线程的消息循环无法返回,父窗口的事件本应没人处理,应该处于卡死状态 ...
- PostgreSQL代码分析,查询优化部分,pull_ands()和pull_ors()
PostgreSQL代码分析,查询优化部分. 这里把规范谓词表达式的部分就整理完了,阅读的顺序例如以下: 一.PostgreSQL代码分析,查询优化部分,canonicalize_qual 二.Pos ...
- NOJ1184 失落的邮票 哈希表
意甲冠军 我们共收集N邮票.现在失去了2张,剩下N-2张-..原集邮收集了所有对.因此,找到什么两枚邮票是一个.它们输出. (确定缺少邮票是不一样的) 思路 由于编号比較大,能够用hash表压缩成数组 ...
- C#的百度地图开发(四)前端显示与定位
原文:C#的百度地图开发(四)前端显示与定位 有了这些定位信息,那要如何在前端的页面上显示出来呢?这需要用到百度地图的JavaScript的API.下面是示例代码. 前端代码 <%@ Page ...