MBR扇区数据计算硬盘大小解疑

题目:

第2章作业-1
下图为某硬盘MBR扇区的部分数据,从该图可知,该硬盘的大小应为_______GB。(按照1K=1000,1个扇区500字节算)
A.80 B.160 C.320 D.250QQ图片20230319170732.jpg
QQ图片20230319170747.jpg

预备知识:

一 0x01C2

首先,MBR与GPT是分区表的格式,0x01C2的值既可以表明分区表格式,也同时表明了文件系统格式。例如fat32,ntfs为文件系统格式。
注意:分区表是对整个磁盘而言的,用来划分分区的界限以及存储每个分区的元数据。而文件系统则是对于一个分区而言的,用来管理在分区里存储的文件结构和相关的元数据。
QQ图片20230319171259.jpg

	UNVALID = 0x00,	//无效值,windows下不允许使用
	FAT12 = 0x01,
	FAT16 = 0x04,	//小于32M的FAT16
	FAT16 = 0x06,	//大于等于32M的FAT16
	WIN_FAT16 = 0x0E,	//不知道与0x06有什么区别
	FAT32 =0x0B,0x0C,	//资料上记录的是win95的FAT32,但没找到其他的fat32啊
	HIDDEN_FAT32 = 0x1B,0x1C,	//不清楚什么意思
	NTFS = 0x07,
	NTFS_VOLUME_SET = 0x86, 0x87, //不清楚什么意思
	WIN_EXTENDED = 0x05,0x0F,	//扩展分区,没猜错的话应该就是电脑上显示的逻辑分区和扩展分区,貌似0x0F是大于8G的,0x05不清楚
 
	LINUX = 0x83,	//ext2/ext3都是这个值,其他linux下的文件系统不清楚是否也是这个值
	LINUX_SWAP = 0x82,	//linux的swap分区
	LINUX_EXTENDED = 0x85,	//linux下的扩展分区?不清楚什么意思
 
	EFI GPT = 0xEE,	//硬盘使用GPT引导方式时为了防止不支持GPT的设备对硬盘误操作赋的一个非法值

二 扇区数据的小端读法

例如64位系统在内存中存在如下数据 : 02 13 ab 32 ----> 小端序读出应是 0x 32ab1302
MBR(0x01C2 != 0xEE)支持的单个分区的最大容量0xFFFFFFFF扇区(约等于2T),故在指定位置应该按照小端序一次性读取8位16进制数(BIN 32位)。
下图中 0x01CA 指第一分区表扇区总数,读取时应该从0X01CA处向后读8位(16进制),在题中,读作0x 012A1481。
QQ图片20230319170742.jpg
QQ图片20230319170732.jpg

三 读取硬盘大小

首先,应该知道,在MBR分区表下,主引导分区为446字节,每一个分区表项为16字节( 两位16进制数为一个字节 ,如 FF ),从0x01BE开始,每16字节为一个表项。故图中红线与蓝线圈定的地方分别为第一第二分区表项,且该分区扇区总数依次为0x01CA 与 0x01DA,类推。注意,计算时不需要看0x 01C6的值。
QQ图片20230319170737.jpg

解题:

0x01CA : 012A1481
0x01DA : 08606B2C
0x01EA : 00000000
0x01CA + 0x01DA = 98A7FAD
(0x 98A7FAD) * (+ 500) / (+ 1000) / (+ 1000) / (+ 1000) = 80
注: 题目要求512近似500 ,1024近似1000
乘512 —> MBR 默认一个扇区为512字节
除1024 —> byte 转 KB 转 MB 转 GB

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值