Восстановление данных. Практическое руководство, стр. 43
Практический пример
Рассказ о файловой системе NTFS был бы неполным без практической иллюстрации техники разбора файловой записи вручную. До сих пор мы витали в облаках теоретической абстракции. Пора спускаться на грешную землю.
Воспользовавшись любым дисковым редактором, например, Disk Probe, попробуем декодировать одну файловую запись вручную. Найдем сектор, содержащий сигнатуру
FILEЛистинг 6.4. Ручное декодирование файловой записи (разные атрибуты выделены разным цветом)
: 00 01 02 03 04 05 06 07 | 08 09 0A 0B 0C 0D 0E 0F 00000000: 46 49 4C 45 2A 00 03 00 | 60 79 1A 04 02 00 00 00 FILE*...`y......00000010: 01 00 01 00 30 00 01 00 | 50 01 00 00 00 04 00 00 ....0...P.......00000020: 00 00 00 00 00 00 00 00 | 04 00 03 00 00 00 00 00 ................00000030: 10 00 00 00 60 00 00 00 | 00 00 00 00 00 00 00 00 ................00000040: 48 00 00 00 18 00 00 00 | B0 D5 C9 2F C6 0B C4 01 H.......░╒╔/╞.─.00000050: E0 5A B3 7B A9 FA C3 01 | 90 90 F1 2F C6 0B C4 01 рZ│{й·├.PPё/╞.─.00000060: 50 7F BC FE C8 0B C4 01 | 20 00 00 00 00 00 00 00 P⌂╝■╚.─. .......00000070: 00 00 00 00 00 00 00 00 | 00 00 00 00 05 01 00 00 ................00000080: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 ................00000090: 30 00 00 00 70 00 00 00 | 00 00 00 00 00 00 02 00 0...p...........000000A0: 54 00 00 00 18 00 01 00 | DB 1A 01 00 00 00 01 00 T.......█.......000000B0: B0 D5 C9 2F C6 0B C4 01 | B0 D5 C9 2F C6 0B C4 01 ░╒╔/╞.─.░╒╔/╞.─.000000C0: B0 D5 C9 2F C6 0B C4 01 | B0 D5 C9 2F C6 CB C4 01 ░╒╔/╞.─.░╒╔/╞.─.000000D0: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 ................000000E0: 20 00 00 00 00 00 00 00 | 09 03 49 00 6C 00 66 00 ..........I.l.f.000000F0: 61 00 6B 00 2E 00 64 00 | 62 00 78 00 00 00 00 00 a.k...d.b.x.....00000100: 80 00 00 00 48 00 00 00 | 01 00 00 00 00 00 03 00 А...H...........00000110: 00 00 00 00 00 00 00 00 | ED 04 00 00 00 00 00 00 ........э.......00000120: 40 00 00 00 00 00 00 00 | 00 E0 4E 00 00 00 00 00 @........рN.....00000130: F0 D1 4E 00 00 00 00 00 | F0 D1 4E 00 00 00 00 00 Ё╤N.....Ё╤N.....00000140: 32 EE 04 D9 91 00 00 81 | FF FF FF FF 82 79 47 11 2ю.┘С..Б ВyG.000001F0: 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 03 00 ................ : 00 01 02 03 04 05 06 07 | 08 09 0A 0B 0C 0D 0F 0FПервым делом необходимо восстановить оригинальное содержимое последовательности обновления. По смещению
04h2Ah2Ah03 001FEh3FEh2Ch06h03h - 01h == 02h2Ch00 0000 00Теперь нам необходимо выяснить, используется ли данная файловая запись, или же ассоциированный с ней файл или каталог был удален. 16-разрядное поле, расположенное по смещению
16h01h20hОчень хорошо, теперь переходим к исследованию атрибутов. 16-разрядное поле, находящееся по смещению
14h30h30hПервое двойное слово атрибута равно
10h$STANDARD_INFORMATION04h60h30h+ 60h== 90h30h$NAME70h90h + 70h == 100h80h$DATA100h + 32h == 132hFFFFFFh$DATAТеперь, разбив файловую запись на атрибуты, можно приступить к исследованию каждого из атрибутов в отдельности. Начнем с разбора имени. 8-разрядное поле, находящееся по смещению
08h98h0Сh9Ch10hA0h54h14hA4h18h$FILE_NAMEA8h