查看原文
其他

【技术分享】由ATA密码浅谈西部数据硬盘固件模块

Orichen 天鉴科技 2022-12-10

TIMEHOST

     最近发现有小伙伴对于硬盘的固件比较感兴趣,所以正好通过实际工作中会遇到的一个场景对西部数据硬盘的固件模块做个简单的介绍。


      在取证工作中,经常会遇到硬盘加密的情况,如图1。电脑正常开机,但需要正确输入硬盘口令,才可解除硬盘锁定状态,否则硬盘无法被访问。

      这就意味着,如果我们不解锁硬盘,就没有办法访问数据做数据固定。此类加密我们称之为ATA加密,此类加密允许密码长度为32个字符,密码可以是大小写字母、数字和特殊符号。


(图1)


     遇到此类问题,我们通常需要借助PC3000、Atola、FRX7000等专业工具对硬盘进行解锁后才可正常访问或者制作磁盘镜像。当然,本文不是专业工具的使用介绍,而是意在为大家介绍解锁原理以及固件的相关知识。所以文章中将主要使用免费、开源的工具为大家介绍。


    首先,我们将加密的硬盘挂载到MHDD(MHDD是一款俄罗斯的免费硬盘测试软件)查看硬盘状态,通过状态寄存器可以看到,硬盘正常复位,其中DRSC表示硬盘寻道完成、DRDY表示硬盘准备就绪;通过硬盘错误寄存器可以看到,硬盘PWD状态指示灯处于高亮状态,表示硬盘被加密。另外软件也做出了相应的提示:“WARRING:THIS DRIVE IS LOCKED BY ATA PASSWORD”,如图2 


(图2)


      此时硬盘处于ATA加密状态,前文交代,处于ATA加密状态是不可能正常访问硬盘数据的。我们可以对硬盘进行逻辑扫描测试加以验证,如图3


(图3)


       我们可以清楚的看到,错误寄存器,ABRT处于高亮,ABRT表示指令被终止,由于全盘不可访问,所以发送的硬盘检测指令不能被执行。此状态下就更不可能做数据固定了。


讨论密码前,先了解一下什么是硬盘固件?


       对于硬盘固件的解释有很多种,通俗易懂的解释就是:固件相当于硬盘的操作系统(这只是小编的理解),文件系统下硬盘是以簇为单位进行数据读写的,一簇包由若干扇区组成,而扇区又包含在磁道之中,如图4。这只是“用户区”,也就是硬盘用来存储数据的部分。除此之外,还有位于负磁道的固件区(SA区)以及保留扇区。(这里需要说明一下,很多人认为硬盘的固件是存在电路板上的,当然这也没错,但是大部分固件还是存在盘片上的负磁道里)


(图4:来自网络)


拓展:

SPT(sector per tracks)我们称之为磁道密度。也就是每磁道扇区数。那可能有人会问,每个磁道有多少个扇区应该是固定的吧?其实不然,莫不要说不同硬盘了,即使是同一块硬盘的不同磁道,密度也是有所差异的,我们可以想象,盘片的外圈磁道和内圈磁道互为同心圆。但外圈磁道的面积显而易见比内圈磁道面积大,如果相同的密度势必会造成盘片空间的浪费,所以硬盘引入了SPT磁道密度的概念。如图5,颜色相同部分的磁道密度也相同,我们称之为一个Zone。


(图5:来自网络)


       言归正传,回到固件。其实硬盘的ATA密码就被保存在硬盘的固件区,密码信息被记录在一个模块里,这个模块就是02模块,如图6


(图6)


西数02模块介绍


       西数的02模块主要是硬盘的配置信息,以及硬盘的一些参数,比如型号、SN号、容量以及我们今天讨论的密码等内容。硬盘的固件读取需要借助一些专业工具,比如上面提到的PC3000、Atola、FRX7000等设备。02模块的数据结构如图7,颜色鲜艳部分是我们今天研究的内容,其余部分以后我们再继续交流。


(图7)


  • 偏移地址00H-03H:ROYL标志(俗称三角板);

  • 偏移地址06H:有效数据的起始地址,由偏移地址30H开始是该模块的有效数据部分;

  • 偏移地址08H-09H:模块ID,本模块的ID;

  • 偏移地址0AH-0BH:模块长度;

  • 偏移地址0CH-0FH:模块的校验信息;

  • 偏移地址0x10H-0x17:模块的版本号;

  • 偏移地址0x32H-0x33H:SN号的起始位置;

  • 偏移地址0x34-0x35H:SN号长度;

  • 偏移地址0x36H-0x37H:LBA起始地址;

  • 偏移地址0x38H-0x39H:LBA长度;

  • 偏移地址0x72H-0x73H:Model起始地址;

  • 偏移地址0x74H-0x75H:Model长度;

  • 偏移地址0x76H-0x77H:DCM起始地址;

  • 偏移地址0x78H-0x79H:DMC长度;

  • 偏移地址0x7AH-0x7BH:密码信息起始位置;

  • 偏移地址0x7CH-0x7DH:密码信息长度。


       以上是02模块里记录的一些重要信息,当然02模块里还记录一些其他重要信息,但我们这次不做过多说明,接下来我们逐一看下其中参数内容。


  • 0x32H-0x33H处记录的数值为“C200H”表示SN号起始地址为C2H,长度为17H也就是23个字节。SN号为:“WD-WX71E32XC177”。如图8


(图8)


       在我们的认知中,认为硬盘的SN号是唯一的,不可改变的。但是今天通过我们深入的固件模块研究,是不是对此有所疑问?

 

  • 0x36H-0x37H处的数值为“D900H”,表示硬盘LBA起始地址为D9H,长度为18H,24个字节。LBA为:“2542EAAF”也就是625142447,320G硬盘标准LBA值(320G标准LBA为625142448,由于硬盘是从LBA=0开始,所以此处少1)如图9


(图9)


  • 0x72H-0x73H处数值为“BB03H”,表示硬盘型号信息记录地址为03BBH处,长度为44H,68字节。型号为:“WD3200BEVT-00A23T0”如图10


(图10)


  • 0x76H-0x77H处数值为“FF03”,表示硬盘DCM信息记录位置为3FFH处,长度为46H,70字节,如图11


(图11)


  • 0x7AH-0x7BH处数值为“4504H”,表示硬盘的密码信息位置为0445H处,长度为4A,74字节,如图12


(图12)



到此我们可以看到,我们设置的用户密码其实就是“12345”。

那么问题来了,我们该如何解密呢?如果有专业工具那就轻而易举了。

但我们这里讲原理,有两个办法:

第一,更改密码开关位,使之处于关闭状态,然后回写模块

改完模块后需从新校验,生成新的校验值。

第二,使用通过“通用密码”解密。

那么什么是“通用密码”?ATA密码分两个级别,User和Master,也就是用户密码和主密码。可以使用主密码来解锁用户级别的锁定状态,如图13


(图13)


      通过MHDD使用“通用密码(Master)”对硬盘进行解密,输入“unlock”密码等级选择master级别,然后输入Master密码,出现Done字样表示解锁成功。但此时硬盘依旧处于加密状态,因为当前只解除了硬盘的锁定状态,还需要对硬盘进行解密操作。如图14


(图14)


    继续输入“dispwd”,密码级别选择Master主密码,输入Master密码,出现Done字样表示硬盘彻底解密成功。此时我们可以看到,硬盘的错误寄存器中的PWD状态已经解除了,表示硬盘彻底处于解锁状态。



总结

1、硬盘一旦处于ATA密码保护状态,用户将无法正常访问硬盘数据、无法数据固定;

2、ATA密码分为User和Master级别,Master主密码可以用来解除User级别的锁定状态;

3、我们用户设置的密码,其实在硬盘的02固件模块中有所记录;

4、西部数据硬盘Master密码有两个,第一个,本案例中的“WDCWDCWDCWDCWDCWDCWDCWDCWDCWDCW”(10个WDC+1个W);第二个,“WDCWDCWDCWDCWDCWDCWDCWDCWDCWDCWD”(10个WDC+1WD);

5、新款硬盘,Master密码不一定适用,还需要通过更改02模块来实现硬盘解锁。




本文主要为大家介绍西部数据硬盘ATA密码保护状态的清除原理,后续还会对希捷ATA解锁、希捷新款固件锁原理等内容进行介绍,敬请关注。


END

如在阅读过程中发现错误,欢迎指正。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存