Как читать MFT на жестком диске USB (NTFS, 1TB)?
Я ищу метод высокого уровня для чтения записей MFT в файловой системе NTFS для внутреннего жесткого диска Seagate 1TB. Платформа – Windows 7.
Мне нужно получить имя файла, размер блока и LBA.
Является ли это специализированной задачей, так что мне нужно написать программу для этого?
- Что я могу сделать с ошибкой Windows 7 Backup 0x81000037, по-видимому, вызванной точками повторной обработки?
- Как определить фактический размер на диске для папки в Windows 10
- Случайное перемещение папки в информацию о системном томе
- RAW в NTFS (данные уже восстановлены так не важно)
- Как хранятся имена файлов?
- Cloning Fresh Windows 7 -fsed HDD для Linux Server, потому что не имеет внешнего жесткого диска или дисков для резервного копирования
- Исправить раздел NTFS
- Создание и создание раздела с использованием сценария bash
- Добавление раздела NTFS на диск в Windows делает раздел HFS + на том же диске невидимым в Mac OS X
- Если я использую «компактный» для сжатия диска NTFS, как я могу избежать сжатия сжатых файлов?
- Как я могу удалить более 2 000 000 файлов в одном каталоге?
- Плохая производительность NTFS
- Почему временные метки меняются при копировании или перемещении файлов в Windows?
Эта информация доступна через 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).