无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3609|回复: 16
打印 上一主题 下一主题

ATA硬盘“保护区域”特性及应用剖析

[复制链接]
跳转到指定楼层
1#
发表于 2008-5-24 22:41:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
说明:本文是引用 “希捷北京代表处 周学锋” 的文章

为了增强自身PC与其他厂商及DIY式 PC的差异性, PC厂商已越来越多地将各种特色“增值”功能加进产品中,利用ATA硬盘的“保护区域”特性来增强PC系统安全性,实现多重启动即为此类功能设计。从下面由希捷公司硬盘工程师周学锋所做的介绍中,我们就可以了解利用ATA硬盘的“保护区域”特性实现某些PC特色功能的原理。
硬盘“保护区域”简介
为提升PC的多功能性、易用性和安全性, PC厂商开始将一些程序或数据 “隐藏”在PC硬盘中,而隐藏起来的区域一般叫做“隐藏分区”—— 普通用户在操作系统中将看不到这些程序和数据,他们可能会奇怪,硬盘容量怎么好像被“偷” 走了一部分,到底是谁“动”了我的硬盘?
其实“隐藏分区”的概念早已有之:在386、486时代,一些世界知名PC制造厂商就开始在硬盘上划出一个很小的区域,将BIOS和应用工具放入其中,用户无法直接访问,只能通过特定软件来调用它们。严格来讲,通常所说的“隐藏分区”不一定是一个分区,也可能是硬盘上的一个保护区域。在硬盘上设定“隐藏”区域通常有以下两类方式:
一、在操作系统层隐藏一块空间
先在硬盘上分区,然后将某一分区的属性设为不可见,从而实现真正的“隐藏分区”。比如一个容量为80GB、具有四个分区的硬盘的最后一个分区有10GB容量,那么将此最后分区设成“隐藏分区”后,用户再用FDISK等分区软件去读硬盘时,就会发现硬盘总容量只有70GB,或者将看到一个无法识别的分区。
此方式的优点是隐藏区域的设置较方便,不需对ATA协议中的特别命令有过多了解,要删除此隐藏区域也较简单;缺点则是由于属于操作系统层的隐藏,所以如果分区表损坏,则隐藏分区很难幸免,隐藏在其中的数据也比较容易丢失。
如欲去掉隐藏分区,得到硬盘全部容量,只要用生成隐藏分区的工具将分区变为可见即可。如无相应工具,那么将硬盘数据备份好后,用PowerQuest PartitionMagic等分区工具软件将该隐藏分区删掉就可以了(当然数据会损失掉)。
二、采用ATA协议中的硬盘HPA方式
HPA(Host Protected Area,主保护区域)是通过用ATA命令对硬盘后部的一块区域进行保护来实现的,其操作结果不同于FDISK之类的分区软件,不仅操作系统无法看到该区域,连BIOS都无法读取处于保护状态下的“主保护区域”。ATA协议还定义了一些锁住保护区域、对保护区域加口令的命令,进一步加强了HPA的可靠性和安全性。
保护性强、不易被破坏是HPA的最大优点。只要不用ATA协议中定义的特别命令打开“保护区域”,就不可能对此区域进行读写操作(口令保护机制的引入进一步提高了安全性)。未被保护的区域与一个普通的硬盘完全一样,可进行正常的读写、分区格式化,而不会对“保护区域”内的数据有任何影响。当然任何事情都有两面性,由于“保护区域”的保护性强,故如没有软件厂商提供的去掉“保护区域”的软件,则很难将其删除。
利用“主保护区”实现的功能
自从ATA协议中引入了“主保护区域”概念、加入了相关命令后,很多包括PC厂商在内的软硬件厂商开始利用它实现以前难以实现或实现后不够完善的功能,试举以下两个例子:
一、数据的硬盘备份和恢复
对于安装了这种硬盘保护软件的PC(有一些品牌机在出厂时预装此软件),当用户系统在使用过程中出现问题或崩溃之后,按PC机厂商提供的指导,按住特定按键或者用随机带的恢复软盘启动主机,硬盘中的系统和软件将恢复到出厂时的状态。
此功能的原理是:PC厂商在主机出厂之前将硬盘的一部分容量做成“保护区域”,比如80GB的硬盘隐藏了5GB;将操作系统、预装软件备份在其中;当用户按住特定按键或者用恢复软盘启动主机时,硬盘收到ATA命令打开“保护区域”;备份数据恢复到用户区域,系统就得到了恢复。
二、多重启动给PC增加特色功能
现在已经有了这样的PC:既可开机进入普通的操作系统,完成和普通PC一样的功能,还可进入另一种模式以实现信息家电等用途(如联想天骄系列电脑即有此功能)。
以上功能的实现也是基于“保护区域”的特性:PC厂商在硬盘中建立“保护区域”,将独立于主操作系统的一套系统装到“保护区域”中;正常开机时,“保护区域”处于保护状态 ,进入操作系统过程与普通PC无任何区别;当选择厂商定制模式开机时,“保护区域”被打开,PC加载厂商自己的系统,并实现信息家电等特色功能。至于进入厂商定制模式后可以实现播放DVD/CD,还是浏览照片、上网等功能,则完全取决于厂商在自己系统中预置了什么功能模块。
有时用户买的品牌机标明硬盘容量为80GB(比如在BIOS中明明看到硬盘型号是希捷ST380011A),但显示容量却为75GB,这就是因为在硬盘中有“保护区域”;当然操作系统中的显示容量小于80GB是正常的,因为硬盘厂商普遍采用的单位是1GB=109bytes,而软件厂商一般采用的单位是1GB=10243bytes = 1073741824bytes,这就使得标明80GB的硬盘在操作系统界面中显示为约74.5GB。
“主保护区域”的实现
ATA协议规范里定义了一些命令,以实现对一定大小的区域进行保护和解除保护。要在一个硬盘上实现HPA,至少需要以下两个命令:read native max address(读出硬盘本身的实际容量);set max address(设置最大的可寻址容量)。
利用read native max address可以读出硬盘的原始容量,且无论硬盘上是否有HPA都不会受到任何影响。set max address命令是用来设置硬盘最大可访问容量的, 此容量只能小于或等于硬盘的出厂原始容量,如果设置容量大过硬盘出厂值就会报错。设置中,小于硬盘原始容量的部分将被保护起来。例如,硬盘的出厂大小为80GB,用set max address将它设为60GB,在BIOS中硬盘就是60GB了,余下的20GB被保护了起来。
以上只是两个基本命令,如要加强“保护区域”的安全性,还需要使用更多的命令,例如:set max set password;set max lock;set max freeze lock;set max unlock。
随着硬盘容量的增大,现在出现了48位寻址(原28位寻址支持137GB容量,48位支持144TB),如果硬盘支持48位寻址,就可以使用以下命令:set max address ext;read native max address ext。这两个命令专门针对支持48位寻址的硬盘,如果在不支持48位的硬盘上使用则会报错。
如果在小于137GB但支持48位寻址的硬盘上使用read native address和set max address,也是可以工作的。也就是说新的支持48位寻址的硬盘只要容量没有超过限制,是与不支持48位寻址的硬盘兼容的。不过要提醒的是,虽然二者有兼容性,但是在应用中决不能混用命令,如用set max address设置“保护区域”,就一定要用set max address打开“保护区域”;同理,如用set max address ext设置“保护区域”,也一定要用set max address ext打开“保护区域”。
综上所述,利用ATA协议所定义的命令,在硬盘中建立HPA,理论上并不难,不过要付诸实用并考虑到安全性等因素,就还要更加深入地研究ATA协议。实际上,许多软硬件厂商已在这方面做出了努力,真正将“保护区域”引入PC产品,从而使PC系统数据得到了更稳妥的保护,同时也带来了多样的家电化操控、数码娱乐等功能——PC正变得越来越可靠,也越来越富有个性和生活气息。



[ 本帖最后由 crcok 于 2008-6-4 04:20 AM 编辑 ]
2#
发表于 2008-5-25 22:02:26 | 只看该作者
好文章,看了受益不浅,谢谢LZ!
回复

使用道具 举报

3#
发表于 2008-5-25 22:10:22 | 只看该作者
过时了点,英文的资料早在06年看了,不知道这个是谁翻译的
回复

使用道具 举报

4#
发表于 2008-5-25 22:16:06 | 只看该作者
新的(三星2007-05-18)也就增加了口令保护这些内容,但口令保护是个双面刃,如果口令遗失,可能会导致硬盘容量永久性减少(猜测内容存放在盘体上,可能更换电路板都没用)。

[ 本帖最后由 netwinxp 于 2008-5-25 10:19 PM 编辑 ]
回复

使用道具 举报

5#
发表于 2008-5-26 08:00:03 | 只看该作者
原帖由 netwinxp 于 2008-5-25 10:16 PM 发表
(猜测内容存放在盘体上,可能更换电路板都没用)。

猫兄这个判断我不赞成,因为我曾经遇到一个硬盘,它的故障现象是容量变小,原74G容量左右,变为27G,用MHDD可以看到原始容量,亦能够恢复其全部容量值,但仅当时有效,重启后容量又丢失,这种现象表明存贮容量值的存贮体有故障,它失效的现象跟比特位相关,最多也是与字节相关,如果是放在盘体上,则应与扇区相关才对,扇区一旦发生读写故障,就不是按位和字节来表现了,而应该是整个扇区的信息丢失,所以我认为该表示硬盘容量的数值,一定是记录在一个类似于网卡串行数据芯片那样的存贮体上的,不在磁盘上。
回复

使用道具 举报

6#
发表于 2008-5-26 09:22:18 | 只看该作者
原帖由 lvyanan 于 2008-5-26 08:00 发表

猫兄这个判断我不赞成,因为我曾经遇到一个硬盘,它的故障现象是容量变小,原74G容量左右,变为27G,用MHDD可以看到原始容量,亦能够恢复其全部容量值,但仅当时有效,重启后容量又丢失,这种现象表明存贮容量 ...

判断是来自酱紫的:
1、HPA分区是符合分区的分布规律,可设置容量也颇具连续性。而从你的例子可以看出某位的屏蔽会导致前面的所有位全被屏蔽(即屏蔽前面的位),酱紫容量会出现很大的跳跃性或扇区呈跳跃分布,扇区跳跃分布会严重影响硬盘性能(所以此方式应该不会被选择)。比如说想屏蔽若干柱面则会造成磁头被钳位成0。屏蔽位很显然极不利于地址转换。
2、PC3000之类工具可以强行打开被厂家封闭的容量,比如120G硬盘,按照道理它原容量可能是160G(每磁头对应两个盘面,和160G不应有太大的区别,每个盘面恰好是40G,这里的磁头是指真正意义上的磁头,一个磁头对应2的倍数个外面"看到"的磁头)。
3、事实上我们现在访问的0扇区并不是真正的物理0扇区(早期的CHS方式硬盘则是),并且每柱面扇区数并不相等,而是外面的多,里面的少。真正物理0扇区(或者0磁道)存放硬盘FireWare(显然比放在ROM/FLASH容量更大,且更省钱),这个FireWare管理着磁盘地址转换程序、一个类分区表、坏道表(不是坏柱面)。出现在坏道表上的坏道会被地址转换程序翻译成保留的磁道,酱紫即使出现坏道,经处理后,在外部看来磁盘地址仍然是连续可用的,而不像我们软处理一样会出现分区之间有间隙。(这里的磁头、柱面、磁道、扇区都是指真正物理上的地址)。
4、你再回想一下,你隐藏分区的方法是否采用位屏蔽?很显然HPA应该是采用类似隐藏分区的手段。

[ 本帖最后由 netwinxp 于 2008-5-26 12:30 PM 编辑 ]
回复

使用道具 举报

7#
发表于 2008-5-26 15:38:29 | 只看该作者

回复 #6 netwinxp 的帖子

这个标称硬盘容量的值与柱面、磁头等参数无关,就是用一个磁盘总扇区数来表示,当然它应该是每道扇区数以及磁头数的公倍数,以便在分区时可以模拟出逻辑上的CHS,事实上我们在用INT13H的扩展读写功能寻址硬盘扇区时,已经不用CHS参数了,比如在寻址某分区的引导扇时,只要将其分区表的保留扇区数送入服务包,然后调用INT13H,即可装入该分区引导扇,没有柱面、磁头和所在磁道扇区号等参数,大硬盘对容量的表示方式已经改为用扇区总数来描述了,CHS只是驱动时的一种逻辑转换而已。
回复

使用道具 举报

8#
发表于 2008-5-26 16:04:12 | 只看该作者

回复 #7 lvyanan 的帖子

在硬盘内部肯定还是使用CHS方式,因为这种方式可以非常方便地进行硬盘伺服机构的控制,盘基表(步进率、磁头加载/卸载时间、马达等待时间、寻道稳定时间、命令等待时间、扇区间隙长度、扇区间隙填充字节、扇区数据区填充字节、扇区长度等)仍然是必需的(尽管真正的盘基表可能存放硬盘FireWare区而很难被我们所访问)。简单地说早期的INT 13H是真正地控制硬盘的物理访问,而现在的dap反而是通过硬盘FireWare翻译成真正的CHS(当然这个CHS和BIOS里面的CHS差别很大,并且每柱面的扇区数也不是固定的,而是越外圈越多--JS通常用未格式化容量表示存储容量,他是不会放过这块地盘的----外圈的长度几乎是内圈长度的两倍以上,采用此技术可以使硬盘容量增加相当多),简单地说现在的dap里面的地址反而是假的。我曾经对某严重退磁的早期小硬盘(好像1-200M左右)用类似HDCOPY的方法强行格式化多次,发现可以取得像坏软盘仍可以使用一段时间的效果。而现在的硬盘在我们所看到的"0磁道"之前还有非常多的磁道,那里面存放有FireWare、坏道表、类分区表(用来屏蔽一部分磁盘容量,所以我怀疑HPA也在这个范畴),你可以用PC3000、MHDD之类磁盘工具来发现它们。
很多人认为硬盘FireWare放在ROM里面,其实现在的硬盘绝大部分的FireWare放在盘片上(ROM里面的FireWare只有一些非常简洁的控制程序)。这些盘体上的FireWare是通过硬盘上用铝箔贴上的窗口(通常在硬盘侧面)用专用的机器写进去的。而在非常早期的硬盘是不存在这个窗口的(只有一个很小的带过滤的透气孔)。
正因为JS无所不用其极地扩展容量,所以我们现在的硬盘变成了易耗品(磁粉颗粒不可能非常的小,另外粘合力也没有想象的强,加上矫顽力的效应使存储位单位越来越不稳定,一旦主轴电机稍微跑位或FireWare区出现坏块硬盘也就报销了)。

[ 本帖最后由 netwinxp 于 2008-5-26 04:34 PM 编辑 ]
回复

使用道具 举报

9#
发表于 2008-5-26 16:46:03 | 只看该作者
用MHDD恢复容量时,软件提示也是以扇区总数来表达的,至于磁盘内部是用哪种方式寻道我就不知道了,由于磁盘内外道扇区数不一样,这就意味着这个CHS参数表与传统意义上的CHS表示两码事,它不可能会表现在硬盘外部驱动上去,它是由硬盘控制电路自动完成的,属于黑匣子里的东西,我们不必了解它,程序也不能使用这样的表来达到对硬盘操作的目的,我们只要使用其外部特性就可以了,内部的东西各硬盘厂家都有很大的出入,说不清的。
回复

使用道具 举报

10#
发表于 2008-5-26 17:01:07 | 只看该作者

回复 #9 lvyanan 的帖子

如果仅仅是应用,那么简单了解一下编程接口就可以了,但是如果涉及硬盘修复、数据恢复、数据安全,那么这些还是很有必要的。比如:被加了遗忘的口令的HPA如何恢复?另外像PC3000之类的需要对坏道表进行操作、恢复被屏蔽的区域,按现在公开的资料明显是达不到目的的。
据网上了解,国外先进的数据技术是被覆盖(粉碎性覆盖)的磁盘数据仍然有希望被读出来,其依据是磁粉层比较厚,每次写入的位置不可能完全一样,在磁粉层较深处仍然会存在信息,通过不同波长的射线(原来写的X射线是错误的)对盘片进行扫描,根据产生的不同反射、折射、衍射可以把磁粉深层的信息读出来。所以现在所有的拍着胸脯说“绝对不可恢复”的粉碎软件全是瞎话,唯一区别的在于恢复数据所需要的成本。

[ 本帖最后由 netwinxp 于 2008-5-27 01:11 PM 编辑 ]
回复

使用道具 举报

11#
发表于 2008-5-26 17:06:59 | 只看该作者
原帖由 netwinxp 于 2008-5-26 05:01 PM 发表
其依据是磁粉层比较厚,每次写入的位置不可能完全一样,在磁粉层较深处仍然会存在信息,通过X射线可以把磁粉深层的信息读出来。


这个是YY的吧。X射线可以读取磁粉深层信息?
回复

使用道具 举报

12#
发表于 2008-5-26 17:38:35 | 只看该作者
不是YY,网上有信息表明确实有此技术。X射线有很强的穿透力,常用来探测金属内部晶相的缺陷。
回复

使用道具 举报

13#
发表于 2008-5-27 11:04:56 | 只看该作者
原帖由 netwinxp 于 2008-5-26 17:38 发表
不是YY,网上有信息表明确实有此技术。X射线有很强的穿透力,常用来探测金属内部晶相的缺陷。



X-Ray最不擅长穿透金属,要不医院做钡餐就毫无用处了。
回复

使用道具 举报

14#
发表于 2008-5-27 13:05:08 | 只看该作者
原帖由 wang6610 于 2008-5-27 11:04 发表
X-Ray最不擅长穿透金属,要不医院做钡餐就毫无用处了。

不好意思,确实是我弄错了,是使用不同波长的射线。X射线、γ射线确实可以用于金属探伤。

[ 本帖最后由 netwinxp 于 2008-5-27 03:12 PM 编辑 ]
回复

使用道具 举报

15#
发表于 2008-5-27 13:51:56 | 只看该作者
如果确实要研究,在ATA标准就有详细说明
回复

使用道具 举报

16#
发表于 2008-5-27 13:59:13 | 只看该作者
金属探伤是γ(伽玛)射线。。。。。。。

[ 本帖最后由 wang6610 于 2008-5-27 02:00 PM 编辑 ]
回复

使用道具 举报

17#
发表于 2008-5-27 15:16:31 | 只看该作者
原帖由 wang6610 于 2008-5-27 13:59 发表
金属探伤是γ(伽玛)射线。。。。。。。

不用怀疑X射线、γ射线作为金属探伤的可能性,因为它们都有现成品(你可以上网查一下,多如牛毛)。X射线金属穿透力差是指软X射线或针对重金属而言。
探测金属材料或部件内部的裂纹或缺陷。
常用的探伤方法有:X射线探伤、超声波探伤、磁粉探伤、渗透探伤、涡流探伤、γ射线探伤、萤光探伤、着色探伤等方法。

[ 本帖最后由 netwinxp 于 2008-5-27 03:24 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2026-3-11 23:03

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表