Рассказ о файловой системе NTFS был бы неполным без практической иллюстрации техники разбора файловой записи вручную. До сих пор мы витали в облаках теоретической абстракции. Пора спускаться на грешную землю.
Воспользовавшись любым дисковым редактором, например, Disk Probe, попробуем декодировать одну файловую запись вручную. Найдем сектор, содержащий сигнатуру >FILE
в его начале (не обязательно брать первый встретившийся сектор). Он может выглядеть, например, как в листинге 6.4.
Листинг 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
Первым делом необходимо восстановить оригинальное содержимое последовательности обновления. По смещению >04h
от начала сектора лежит 16-разрядный указатель на нее, равный в данном случае >2Ah
(значит, это NTFS 3.0 или более ранняя версия). А что у нас лежит по смещению