выгрузка содержимого файла $ mft - PullRequest
4 голосов
/ 07 февраля 2011

для какого-то коммерческого проекта, который я делаю, мне нужно иметь возможность прочитать фактические данные, хранящиеся в файле $ mft.

Я нашел gpl lib , который мог бы помочь, но, поскольку он gpl, я не могу интегрировать его в свой код.

Может ли кто-нибудь указать мне на проект, который я мог бы использовать / или указать на соответствующий API Windows (что-то, что не требует 1000 строк кода для реализации)

Кстати, почему Windows просто не позволяет мне читать файл mft напрямую? (через файл create и метод read, если я хочу испортить диск, это мое дело, а не Ms).

спасибо.

Ответы [ 2 ]

3 голосов
/ 30 июля 2013

Вам просто нужно открыть дескриптор тома, используя CreateFile () on \. \ X: где X - буква диска (проверьте документацию MSDN по CreateFile (), это упоминается в Раздел замечаний).

Считать первый сектор в структуру загрузочной записи NTFS (вы можете найти его в Интернете, найти Ричарда "Flatcap" Руссона, отредактировать: я нашел его, http://www.flatcap.org/ntfs/ntfs/files/boot.html). Одно из полей в структуре загрузочного сектора дает начальное местоположение MFT в кластерах (LCN VCN 0 из $ MFT), вам нужно сделать SetFilePointer () для этого местоположения, считав кратным секторов. Первые 1024 байта из этого местоположения являются записью файла $ MFT, снова вы можете проанализировать эту структуру, чтобы найти атрибут данных, который всегда является нерезидентным, а его размер является фактическим размером файла MFT в то время.

Базовые структуры для $ Boot, File Record и базовые атрибуты (стандартная информация, имя файла и данные) вместе с кодом синтаксического анализа должны выполнять менее 1000 строк кода.

1 голос
/ 22 марта 2011

Это не будет тривиальным предложением.Вам, вероятно, придется свернуть свое собственное кодовое решение, чтобы достигнуть этого.Вы можете получить некоторую информацию о деталях $ MFT, проверив http://www.ntfs.com/ntfs-mft.htm

Другой вариант - потратить некоторое время на просмотр исходного кода для проекта с открытым исходным кодом NTFS-3g.Вы можете скачать исходный код с http://www.tuxera.com/community/ntfs-3g-download/

Еще один хороший проект - NTFSProgs http://en.wikipedia.org/wiki/Ntfsprogs

Удачи.

...