Как читать MFT на жестком диске USB (NTFS, 1TB)?

Я ищу метод высокого уровня для чтения записей MFT в файловой системе NTFS для внутреннего жесткого диска Seagate 1TB. Платформа – Windows 7.

Мне нужно получить имя файла, размер блока и LBA.

Является ли это специализированной задачей, так что мне нужно написать программу для этого?

Эта информация доступна через Defrag API. Сторонние инструменты дефрагментации могут подвергнуть его воздействию. В последних системах Windows (8.1 работает, 7 не проверены) вы можете использовать fsutil для запроса:

 C: \> fsutil file queryextents example.txt
 VCN: 0x0 Кластеры: 0x2 LCN: 0x18f85e

Существует еще одна подкоманда, которая передает всю информацию для всех потоков данных в файле:

 C: \> fsutil volume filelayout example.exe

 ********* Файл 0x01390000000008dd *********
 Номер ссылки на файл: 0x01390000000008dd
 Атрибуты файлов: 0x00000020: Архив
 ...
 Поток: :: $ FILE_NAME
     Атрибуты: 0x00000000: * NONE *
     Флаги: 0x0000000c: Резидент |  Не выделены кластеры
     Размер: 80
     Выделенный размер: 80
 Stream: :: $ DATA (основной поток данных)
     Атрибуты: 0x00000000: * NONE *
     Флаги: 0x00000000: * NONE *
     Размер: 1681920
     Выделенный размер: 1683456
 Экстенты: 1 экстенты 
                          : 1: VCN: 0 Кластеры: 411 LCN: 8527618

В обоих выводах команд для каждой «степени» (смежный диапазон кластеров) вы получаете «номер виртуального кластера» (смещение от начала файла), количество кластеров в объеме и «номер логического кластера» ( Смещение от начала тома).

Примечание. Крошечные файлы, которые вписываются в базовую запись MFT , сохраняются («резидент») в их записи MFT и имеют нулевой экстент. Для них вам нужно будет использовать другие способы, чтобы выкапывать сам MFT. (Кроме того, в некоторых случаях файл может быть разреженным и иметь только небольшую часть, выделенную на диске, а остальное считается нулевым байтом).

Кластеры являются файловыми уровнями, поэтому вам необходимо преобразовать их в сектора на уровне блоков; Моя система имеет 8 секторов на кластер:

 C: \> fsutil fsinfo ntfsinfo c:
 ...
 Байты за сектор: 512
 Байты в кластере: 4096
 ...

 C: \> set / a 0x18f85e * (4096/512)
 13091568

 C: \> set / a 0x18f85e * 4096
 6702882816

Это означает, что вы можете открыть \\.\C: с помощью HxD или такой, и найти начало файла в секторе 13091568 (или байт 6702882816).

  • Как подключить раздел NTFS для чтения только в Windows?
  • В диалоговом окне свойств диска Windows 7 отображается больше используемого пространства, чем общий размер файлов на диске
  • Почему дефрагментация диска C увеличила мое свободное дисковое пространство на 10 ГБ?
  • Выполнить CHKDSK на образ NTFS?
  • Разрешить пользователям создавать файлы, но не редактировать и не удалять их
  • Включить собственные символические ссылки NTFS для Cygwin
  • Восстановление раздела NTFS с помощью TestDisk
  • Восстановление данных с диска NTFS после операции зеркального отображения RAID1
  • Восстановление Clonezilla от Samba - нет опции 'restoreisk'
  • Как увеличить размер раздела NTFS?
  • Как сделать Windows 7 полностью чувствительной к регистру в отношении файловой системы?
  • Interesting Posts

    Как искать все загруженные скрипты в инструментах разработчика Chrome?

    WPF ListBox со списком ListBox – Виртуализация и прокрутка пользовательского интерфейса

    Возникает ли эффект при вызове ToList ()?

    Приложение ссылается на непубличные селекторы в Payload / .app / : декодер

    Изменение фонового изображения тела с эффектом затухания в jquery

    Windows 7: Дисковое пространство: windirstat показывает 88 ГБ: Windows показывает 143 ГБ

    Android Studio – отладочное хранилище

    Как создать массив байтов из HttpPostedFile

    Как получить «положение: исправлено» css для работы в IE 7+ с TRANSITIONAL doctype?

    Что такое «->» в Objective C?

    Уведомление о восстановлении задачи, а не конкретной деятельности?

    JQuery CSS и JS для ограниченных элементов

    Двойной монитор с ATI radeon 4350

    Предупреждение об ошибке «Захват сильно в этом блоке, вероятно, приведет к циклу сохранения» в коде с поддержкой ARC

    Инициализаторы типа TypeScript и поля

    Давайте будем гением компьютера.