恢复已删除的加密OS X扩展卷


5

我不小心使用Mac OS中的“磁盘工具”将外部1TB HD格式化为FAT文件系统。该磁盘曾经被HFS +加密。当我创建OS X Extended分区时,没有使用File Vault进行加密。

有机会完全恢复任何数据吗?我可以以某种方式恢复分区信息并重建表吗?


是快速格式化(即花费了2-3秒)还是花费了几分钟?如果是后者,则几乎没有机会。如果是前者,也许 ...
bjb

快速格式化。但请记住,它是加密的。
华夫饼

1)什么是“ OS扩展分区”?2)您使用了什么软件来加密分区?
Max Ried

@waffle请添加您的系统版本!
klanomath's

OS Extended Encrypted表示已加密HFS +。我使用Mac OS X的“磁盘工具”来创建和加密HD。系统版本为Mac OS X 10.11.3。
华夫饼

Answers:


7

在某些情况下,将磁盘格式化为FAT32卷后,可以恢复已删除的外部HFS +加密卷:

  • 整个磁盘已加密(到一个卷)。
  • 整个磁盘已格式化为一个FAT32卷。没有将GUID分区表替换为MBR。磁盘仍然具有 MBR(而不是PMBR)。

  • 某些内部不可见的CoreStorage数据结构不得被覆盖。
    • (上一个)卷块0(=磁盘块409640)处的CoreStorage卷标头结构
    • (上一个)卷块8(=磁盘块409648)的第二个块
    • 加密的元数据块,从最后一个577456个块开始,到最后一个573360个块结束(大小为4096个块)
    • (上一个)卷的最后16392个块中的几个磁盘标签元数据项

如果未将任何内容写入FAT32卷,则不应覆盖这些部分。


要恢复加密的卷,您必须使用终端并做一些数学运算。

  1. 卸下格式不正确的任何外部驱动器
  2. 打开终端并输入:

    diskutil list
    

    获取概述和外部磁盘的磁盘标识符。下面我假设磁盘标识符是disk1

  3. 备份整个磁盘,sudo dd if=/dev/disk1 of=/Volumes/BackupVolume_Name/disk1.bin以防万一出问题或将来使用高级恢复工具进行备份。
  4. 现在使用以下命令获取磁盘的分区表:

    sudo gpt -r show /dev/disk1
    

    您应该得到与此类似的结果:

          start       size  index  contents
              0          1         MBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640       2008         
         411648  133804032      2  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
      134215680       2015         
      134217695         32         Sec GPT table
      134217727          1         Sec GPT header
    

    第一个分区是EFI卷,第二个分区是外部磁盘的FAT32卷。分区2比示例中的分区大得多。

    即使您获得没有GUID分区表但只有MBR的其他输出

          start       size index   contents
              0          1         MBR 
              1          1 
              2  134217726     1   MBR part 11
    

    您可以继续:使用FileVault加密磁盘需要一个GUID分区表-因此您的磁盘以前有一个。但是,使用MBR在磁盘上恢复FAT卷的可能性似乎要低得多。显然,部分(即某些元数据和卷标头)可能会被FAT32文件系统内容覆盖。

    包含加密的外部HFS +卷的同一磁盘应如下所示:

          start       size  index  contents
              0          1         PMBR
              1          1         Pri GPT header
              2         32         Pri GPT table
             34          6         
             40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
         409640  133545904      2  GPT part - 53746F72-6167-11AA-AA11-00306543ECAC
      133955544     262144      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
      134217688          7         
      134217695         32         Sec GPT table
      134217727          1         Sec GPT header
    

    第一个分区是具有固定大小和起始块的EFI分区,第三个分区是具有固定大小和起始块的Apple_Boot分区,相对于磁盘的最后一块以及分配给加密的Core Storage Logical Group的剩余磁盘空间。所有分区都与磁盘的物理块大小(4096字节)对齐。

  5. 要恢复旧的分区表,您必须卸载磁盘,删除实际的分区表并做一些数学运算以创建一个新的分区表:

    diskutil umountDisk /dev/disk1
    sudo gpt destroy /dev/disk1
    diskutil umountDisk /dev/disk1
    sudo gpt create -f /dev/disk1
    gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk1
    
  6. 现在获取磁盘的最后一个块号(在我的示例中为134217727),然后减去262183:LastBlockNumber-262183是第三个分区(Apple_Boot)的起始块。使用以下方法添加该分区:

    gpt add -b LastBlockNumber-262183 -i 3 -s 262144 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk1
    
  7. 使用以下方法检查分区1和分区3之间未分配的磁盘空间的大小:

    sudo gpt -r show /dev/disk1
    
  8. 索引1和索引3之间的未分配磁盘空间(UnAlloc)的大小可能是旧加密卷的大小。大小必须被8整除-请检查此内容!使用以下命令将其添加为分区:

    gpt add -b 409640 -i 2 -s UnAlloc -t 53746F72-6167-11AA-AA11-00306543ECAC disk1 #with UnAlloc= size of unallocated disk space found above
    
  9. 输入最后一条命令后,将要求您输入加密磁盘的密码。如果没有,请尝试:

    diskutil cs list
    

    获取CoreStorage项目列表。尝试通过以下方式挂载加密卷:

    diskutil cs unlockVolume LVUUID
    

    与LVUUID:加密的逻辑卷的UUID(通常是列出的最后一个)。如果您的主卷也已加密,请选择正确的LVUUID!

    如果成功挂载该卷,则将最重要的文件和文件夹保存到一个外部卷中,因为挂载加密的卷并不一定意味着该卷没有损坏。

    卸载卷并运行diskutil verifyDisk /dev/disk1diskutil repairDisk /dev/disk1最后一条命令可能会完全损坏磁盘!


这可能仍然失败。不过,加密后的卷仍然可以恢复。但是然后我需要更多信息,因为特殊的(不可见的)非文件系统项必须使用HexEditor直接从磁盘读取,然后进行还原/替换。


当我得到表格时,我看到以下内容:起始大小索引内容0 1 MBR 1 1 2 1953458174 1 MBR第11部分
华夫饼

换句话说,整个磁盘曾经是HFS +加密的,现在整个磁盘是FAT。分区之间没有缝隙可以提供线索,因为只有1个分区。
华夫饼

您介意通过这个指导我吗?给我发送电子邮件至rchangwu@gmail.com,其中包含您的联系方式。
华夫饼

@klanomath您知道是否可以恢复格式化为非加密hfs +的加密hfs +分区吗?
rafalio

2

我按照上面Klanomath的答复成功恢复了Macintosh HD。我曾尝试从ubuntu(Bootcamp)调整它的大小,然后完全停止看到我的Macintosh HD分区。我曾尝试过数篇文章和工具来编写和重写分区表,但均未成功,因此我放弃了。我按照帖子中的步骤5到8进行了操作。

我做了#5,并假设我的EFI会从40开始,并且具有相同的大小409600。以下来自恒星恢复的屏幕截图显示,高级的交易量是从40开始的,这给了我一些希望,我的EFI至少在同一部门开始。 在此处输入图片说明 我的机器结果:

 diskutil umountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
 sudo gpt destroy /dev/disk4
 diskutil umountDisk /dev/disk4
Unmount of all volumes on disk4 was successful
 sudo gpt create -f /dev/disk4
 gpt add -b 40 -i 1 -s 409600 -t C12A7328-F81F-11D2-BA4B-00A0C93EC93B disk4
disk4s1 added

对于#6,这是我机器的输出:

$ sudo gpt -r show /dev/disk4
Password:
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  976695387
  977105027         32         Sec GPT table
  977105059          1         Sec GPT header

我有硬盘的最后一块(977105059),现在应该是我的第三个(最后一个)分区,该分区的大小应从末尾减去?(我记得我曾经有一个Recovery磁盘,除了Macintosh HD之外还有一个ubuntu磁盘。此外,testdisk向我展示了数十个丢失的恢复分区,我根据它们的大小猜测,但是我无法在它们之间进行选择)。因此,我再次参考了上面的屏幕截图(恒星恢复)。在这一点上,我已经看到并知道一个Mac Recovery HD大约为600ish MB,因此上面的屏幕截图中有一些候选对象。根据这篇文章,起始扇区必须能够完全除以8,后者只能用于屏幕快照中的“丢失的卷6”。

这样就给了我一个开始的领域(975835488),但是大小呢?好吧,从几天前测试磁盘扫描结果的一些屏幕截图(向我显示了数十个丢失的恢复磁盘分区)中,我注意到,尽管它们的所有起始扇区都不同,但是它们的大小相同,即1269536(请参见下面的屏幕截图) )。这使我充满信心,这对于Mac Recovery HD来说是正确的大小(以扇区为单位)。 在此处输入图片说明 因此,我运行了以下命令(使用起始扇区:975835488,扇区大小:1269536)

gpt add -b 975835488 -i 3 -s 1269536 -t 426F6F74-0000-11AA-AA11-00306543ECAC disk4
disk4s3 added

对于#7,显示'gpt -r show'的最新状态:

$ sudo gpt -r show /dev/disk4
Password:
      start       size  index  contents
          0          1         PMBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  975425848
  975835488    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  977105024          3
  977105027         32         Sec GPT table
  977105059          1         Sec GPT header

在这一点上,我当时想,“哦,好吧,所以我的分区表看起来与帖子中那个家伙的略有相似,但这显然不会做任何事情”。

那时大约是凌晨2点,我只想完成所有步骤以丢弃另一篇帖子,因为“我也尝试过”。所以我有点想解决这个问题,但仍想弄清楚这些数字。

因此,现在对于#8,在我的上一个屏幕截图中,975425848是该大小,而409640是该分区的起始扇区,该分区应该位于中间(又名Macintosh HD)。因此,我仍然没有多大希望,继续执行以下命令:

gpt add -b 409640 -i 2 -s UnAlloc -t 53746F72-6167-11AA-AA11-00306543ECAC disk4
usage: gpt add [-b lba] [-i index] [-s lba] [-t uuid] device ...

糟糕,实际上我必须写上“ UnAlloc”的大小。我从家伙的评论中错过了这一点:UnAlloc =上面找到的未分配磁盘空间的大小

第二次尝试:

gpt add -b 409640 -i 2 -s 975425848 -t 53746F72-6167-11AA-AA11-00306543ECAC disk4
disk4s2 added

这次命令花了几秒钟来产生输出,这让我心跳加速。产生结果(添加了disk4s2)后,它要求我输入“ Macintosh HD”的密码,输入要记住的密码后,我跳到座位上,瞧瞧,磁盘出现了,所有我的数据!

经过4天的努力和疯狂,我失去了所有工作和照片库,我简直不敢相信它能奏效。谢谢,克拉诺玛斯。谢天谢地。

ps我在另一台Mac上完成了所有这些操作,而原始Mac通过目标磁盘模式下的雷电连接到了Mac。Stellar Recovery软件也在Mac上执行,而测试磁盘结果来自原始Mac上的ubuntu live CD(尽管我确信我也可以在第二台Mac上运行testdisk,尽管速度较慢)


2
TL; DR。看来这是对答案的冗长答复,而不是本身的答案。如果那里有后续问题,应将其添加到原始问题中,而不是作为答案。
阿兰

1
详细说明步骤的出色工作,但不幸的是,这不能作为答案。我将创建1.包含此注释的一系列注释,或2.将其发布到其他位置并从注释链接至该注释
JMY1000,2016年

1
尝试将其添加为评论,但由于我刚加入,所以我不允许这样做。只是感谢所有解决方案。谢谢!
saudbeig's

-1

要破坏硬盘驱动器加密,应使用终端格式化磁盘或破坏加密算法。两种情况都将导致在Mac硬盘驱动器上创建新的文件结构,并导致数据丢失。

有机会完全恢复任何数据吗?

我想唯一的机会就是数据恢复软件了。我发现了这篇文章如何加密,解密和恢复Mac硬盘?。它可能会帮助您。

我可以以某种方式恢复分区信息并重建表吗?

磁盘格式化后,硬盘驱动器表是否损坏?将其重新格式化为HFS,以便生成新的分区表。


此解决方案不适用于我的情况。
华夫饼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.