Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > MFT


Автор: Geniebal 29.6.2010, 11:12
Народ, подскажите, как при открытии диска в двоичном виде найти $Value, чтоб узнать имя тома?

Автор: Geniebal 29.6.2010, 14:53
имеется в виду один из файлов MFT (Master File Table). 

Автор: Riply 30.6.2010, 15:58
Цитата(Geniebal @  29.6.2010,  11:12 Найти цитируемый пост)
Народ, подскажите, как при открытии диска в двоичном виде найти $Value, чтоб узнать имя тома? 


1. Что значит "открытии диска в двоичном виде" ?
2. Уверен, что $Value - у меня нет такого, зато есть $Volume  ?
3. Что подразумевается под "имя тома" ? 
    Может есть другие пути решения (попроще которые)  ?

Автор: Geniebal 1.7.2010, 10:00
1. Что значит "открытии диска в двоичном виде" ?

Открытие жесткого диска как файл, т.е. 
Код

CreateFile(PChar('\\.\PHYSICALDRIVE' + IntToStr(i)), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0) ;


2. Уверен, что $Value - у меня нет такого, зато есть $Volume  ?

да, простите, я опечатался.

3. Что подразумевается под "имя тома" ? 

Имя логического диска, взятое из таблицы MFT

4.Может есть другие пути решения (попроще которые)  ?

К сожалению нет, так как согласно тз необходимо брать все из диска на автомате, т.е. анализируя файловую структуру. Причем, замечу, что анализ идет жесткого, а не логического диска.

Автор: Riply 3.7.2010, 08:05
Цитата(Geniebal @  1.7.2010,  10:00 Найти цитируемый пост)
К сожалению нет, так как согласно тз необходимо брать все из диска на автомате, т.е. анализируя файловую структуру 


Если я все правильно поняла, то можно попробовать, примерно так:
1. Получаем BytesPerFileRecordSegment (размер FileRecord данного диска) и др. данные типа BytesPerCluster
2. Исходя из того, что LCN у $Volume равен 3, 
считываем по нужному оффсету (вычисляется из LCN) BytesPerFileRecordSegment байт.
3. В в считанном, посекторно правим контрольные биты.
4. В результате у нас на руках структура, имеющая заголовком FILE_RECORD_SEGMENT_HEADER
5. Анализируя заголовок получаем список атрибутов и их типы
6. Выбираем интересующий нас атрибут и "считываем" его "данные"

В помощь: 
1. на сайте Rouse_`а можно найти книгу: 
Брайан Кэрриэ http://rouse.drkb.ru/books.php
2. Линуксоиды очень хорошо поработали над драйверами FS для совместимости с Windows
У них открыты не только исходники, но и составленная ими документация,
самая полная из всех, которые я встречала (в т.ч. описание всех структур и их полей)

Автор: Geniebal 7.7.2010, 11:41
Спасибо за направление) 

P.S. По книге криминалистический анализ ФС могу сказать, что там довольно таки в общем виде расписано, но в целом книга супер

Автор: Riply 7.7.2010, 17:37
Цитата(Geniebal @  7.7.2010,  11:41 Найти цитируемый пост)
По книге криминалистический анализ ФС могу сказать, что там довольно таки в общем виде расписано


Угу. Она больше подходит для получения общего представления о том, с чем мы столкнулись.
А конкретка - у линуксоидов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)