尝试从台式电脑恢复硬盘

尝试从台式电脑恢复硬盘

我一个朋友的硬盘由于病毒而崩溃了,至少他是这么认为的。

HDD 的C:\分区显示为未格式化/原始,D:\一切正常,没有任何问题。HDD 来自 Windows 7 计算机,目前位于 USB 扩展坞中,它是 WD Caviar Blue SATA 驱动器。

使用分区查找和挂载我可以安装驱动器并浏览所有不受用户配置文件保护的目录。用户配置文件的设置使其包含的文件无法访问。

我该怎么做才能解决这个问题?我更愿意修复分区,以便硬盘可以重新插入机器并正常运行。但是,如果这不可能,有没有办法绕过加密并访问数据?

答案1

好的,听起来您的 MFT 已损坏。在大多数硬盘上,第一个 NTFS 分区从扇区 63 或扇区 2048 开始。但由于您感染了病毒,我无法保证这些偏移处的数据看起来与此完全相同。

您正在寻找的是位于扇区起始处第 4 个字节的纯字符串“NTFS”。

从 Linux 下的 root shell 发出以下命令:

hexdump -C /dev/sd{your drive letter} | less

接下来直接输入以下内容:

/NTFS<Enter>

其中<Enter>,按 Enter 键就是字面意思。

您会发现自己已经跳转到 NTFS 的第一个实例,它看起来应该类似于以下内容:

00012000  eb 52 90 4e 54 46 53 20  20 20 20 00 02 08 00 00  |.R.NTFS    .....|
00012010  00 00 00 00 00 f8 00 00  3f 00 ff 00 3f 00 00 00  |........?...?...|
00012020  00 00 00 00 80 00 80 00  d8 a6 3f 01 00 00 00 00  |..........?.....|
00012030  00 00 0c 00 00 00 00 00  6d fa 13 00 00 00 00 00  |........m.......|
00012040  f6 00 00 00 01 00 00 00  ad 86 66 60 c8 66 60 7e  |..........f`.f`~|
00012050  00 00 00 00 fa 33 c0 8e  d0 bc 00 7c fb b8 c0 07  |.....3.....|....|
00012060  8e d8 e8 16 00 b8 00 0d  8e c0 33 db c6 06 0e 00  |..........3.....|
00012070  10 e8 53 00 68 00 0d 68  6a 02 cb 8a 16 24 00 b4  |..S.h..hj....$..|
00012080  08 cd 13 73 05 b9 ff ff  8a f1 66 0f b6 c6 40 66  |...s......f...@f|
00012090  0f b6 d1 80 e2 3f f7 e2  86 cd c0 ed 06 41 66 0f  |.....?.......Af.|
000120a0  b7 c9 66 f7 e1 66 a3 20  00 c3 b4 41 bb aa 55 8a  |..f..f. ...A..U.| 
000120b0  16 24 00 cd 13 72 0f 81  fb 55 aa 75 09 f6 c1 01  |.$...r...U.u....|
000120c0  74 04 fe 06 14 00 c3 66  60 1e 06 66 a1 10 00 66  |t......f`..f...f|
000120d0  03 06 1c 00 66 3b 06 20  00 0f 82 3a 00 1e 66 6a  |....f;. ...:..fj| 
000120e0  00 66 50 06 53 66 68 10  00 01 00 80 3e 14 00 00  |.fP.Sfh.....>...|
000120f0  0f 85 0c 00 e8 b3 ff 80  3e 14 00 00 0f 84 61 00  |........>.....a.|
00012100  b4 42 8a 16 24 00 16 1f  8b f4 cd 13 66 58 5b 07  |.B..$.......fX[.|
00012110  66 58 66 58 1f eb 2d 66  33 d2 66 0f b7 0e 18 00  |fXfX..-f3.f.....|
00012120  66 f7 f1 fe c2 8a ca 66  8b d0 66 c1 ea 10 f7 36  |f......f..f....6|
00012130  1a 00 86 d6 8a 16 24 00  8a e8 c0 e4 06 0a cc b8  |......$.........|
00012140  01 02 cd 13 0f 82 19 00  8c c0 05 20 00 8e c0 66  |........... ...f|
00012150  ff 06 10 00 ff 0e 0e 00  0f 85 6f ff 07 1f 66 61  |..........o...fa|
00012160  c3 a0 f8 01 e8 09 00 a0  fb 01 e8 03 00 fb eb fe  |................|
00012170  b4 01 8b f0 ac 3c 00 74  09 b4 0e bb 07 00 cd 10  |.....<.t........|
00012180  eb f2 c3 0d 0a 41 20 64  69 73 6b 20 72 65 61 64  |.....A disk read|
00012190  20 65 72 72 6f 72 20 6f  63 63 75 72 72 65 64 00  | error occurred.|
000121a0  0d 0a 4e 54 4c 44 52 20  69 73 20 6d 69 73 73 69  |..NTLDR is missi|
000121b0  6e 67 00 0d 0a 4e 54 4c  44 52 20 69 73 20 63 6f  |ng...NTLDR is co|
000121c0  6d 70 72 65 73 73 65 64  00 0d 0a 50 72 65 73 73  |mpressed...Press|
000121d0  20 43 74 72 6c 2b 41 6c  74 2b 44 65 6c 20 74 6f  | Ctrl+Alt+Del to|
000121e0  20 72 65 73 74 61 72 74  0d 0a 00 00 00 00 00 00  | restart........|
000121f0  00 00 00 00 00 00 00 00  83 a0 b3 c9 00 00 55 aa  |..............U.|

规范保证唯一相同的是55 aa扇区末尾的结束标记,以及 NTFS ID 字符串“NTFS”后跟 4 个空格

前 3 个字节通常指定为 x86 跳转指令,因此它们通常以eb 52十六进制字节开头。该扇区的其余部分是分区信息(靠近开头)和代码(靠近结尾,如果您的计算机有病毒,则可能已更改。)

您需要做的是将 less 给出的十六进制偏移量(在本例中12000)转换为十进制,然后除以 512 以获得扇区号。

同样,NTFS 起始扇区的最正常值是632048。这对应于字节偏移的00007e00和。00100000

一旦找到扇区偏移量,就可以通过从 root shell 发出以下命令通过 linux 安装分区环回:

mount -o loop,offset=$[512*63] /dev/sd{whatever drive it is} /mnt/point

63实际扇区号在哪里,并且/mnt/point是一个存在的目录(/mnt/point在某些发行版中默认存在)。

fdisk -l如果您不知道哪个驱动器是哪个,您可以以root 身份执行来查找。

如果你的目录不存在,你可以使用以下方法创建它mkdir -p /full/path/to/directory

或者,您可以使用testdisk它来重建 MFT 或只是从 NTFS 分区复制文件。它位于此处,可免费下载,并且已包含在一些较受欢迎的 Linux 发行版的包管理器中。

http://www.cgsecurity.org/wiki/TestDisk

相关内容