Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2015, 20:54   #11
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Алексей_2012 Посмотреть сообщение
Думаю вот такие вопросы решить нужно будет:
..не всё так просто.
В каждом описатели файла тебе нужно сканить поле(16h) от начала записи. Но этим ты только найдёш флаги (удалён или нет файл), ..потом нужно определить его расположение, размер и т.д.
Короче муторно всё это, но возможно..

Почитай, чё пишет мыщъх по-этому поводу. Вот отрывок:

Цитата:
Всякий NTFS-файл представляет собой совокупность атрибутов. Атрибуты делятся на резидентные и нерезидентные. Резидентные хранятся в $MTF, нерезидентные хранят в $MTF лишь свой заголовок.

Назначение атрибута определяется его типом(type).
Большинство файлов имеет по 3 атрибута:

- 10h ($STANDARD_INFORMATION)
- 30h ($FILE_NAME)
- 80h ($DATA)

$MFT-файл представляет собой массив записей типа "FILE Record", каждая из которых описывает соответствующий ей файл или подкаталог. Для ссылки на одну файловую запись из другой, используется её порядковый номер (индекс). Файловая ссылка состоит из двух частей - индекса и номера последовательности.

При удалении файла соответствующая ему файловая последовательность помечается как неиспользуемая. При создании новых файлов эти последовательности могут задействоваться вновь, при этом счетчик (внутри файловой записи) увеличивается на единицу. Этот механизм позволяет отслеживать "мертвые" ссылки на уже удаленные файлы.

Файловая запись (FILE Record) состоит из заголовка и нескольких атрибутов. Размер "FILE Record" строго фиксирован и равен 1 Кбайту, байт(1) записи всегда совпадает с началом сектора.

Первые четыре байта заголовка (46 49 4С 45) оккупированы магической последовательностью "FILE*", сигнализирующей о том, что мы имеем дело с файловой записью типа "FILE Record".

Размер записи хранится в двух полях; в поле реального размера (18h байт от начала), и в поле выделенного размера (1Сh от начала). Реальный размер округляется по размеру сектора, т.е. если размер записи 3.8Кбайт, то указывается 4.

Поле флагов (16h от начала), обычно принимает одно из следующих значений:

00h - данная файловая запись не используется или файл/каталог удален
01h - файловая запись используется и описывает файл
02h - файловая запись используется и описывает каталог
Код:
 offset     0  1  2  3  4  5  6  7    8  9  A  B  C  D  E  F

00000000   46 49 4C 45 30 00 03 00 - 90 8D 5B 26 00 00 00 00   FILE*........... 
00000010   01 00 01 00 38 00 01 00 - A0 01 00 00 00 04 00 00   ................      
00000020   00 00 00 00 00 00 00 00 - 06 00 00 00 00 00 00 00   ................
00000030   9D 02 00 00 00 00 00 00 - 10 00 00 00 60 00 00 00   ................
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 02.05.2015, 21:18   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему так считаете?
Потому что нередко работал с восстанавливателями, и знаю их результат )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.05.2015, 15:41   #13
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

R71MT, читая ваш пост-сломал весь мозг, а как средствами делфи вообще найти $MFT, вернее в коде что следует описать, переменные какого типа и прочее, есть ли какие-то компоненты?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 04.05.2015, 17:06   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
в коде что следует описать, переменные какого типа и прочее, есть ли какие-то компоненты?
Читать как двоичные данные и парсить их. Предварительно досканально поломав мозг о структуру данных
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 04.05.2015, 17:21   #15
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Так вроде же структура файла известна, рекорды фиксированного размера))
ДралсяСошибками вне форума Ответить с цитированием
Старый 04.05.2015, 17:21   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Пну в правильную сторону https://msdn.microsoft.com/en-us/lib...=vs.85%29.aspx


Цитата:
есть ли какие-то компоненты?
полез на низкие уровни работы в с диском как с файлом и спрашивает про компоненты.. просто щикарно

Последний раз редактировалось Человек_Борща; 04.05.2015 в 17:24.
Человек_Борща вне форума Ответить с цитированием
Старый 04.05.2015, 17:56   #17
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Алексей_2012, $MFT - это системный файл, который валяется в голове диска.
Как в случае с любым сис.файлом, доступ к нему закрыт:
Код:
C:\> type $MFT
Отказано в доступе.
..но это не означает, что к нему нельзя подобраться. Снимай атрибуты и копируй его как обычный файл. Другое дело, что ты будеш делать с этой копией?! Маны на него нашёл?!

Ниже, дамп одной файловой записи из $MFT. В ней имеется полная/подноготная о файле.
Попробуй добыть из него инфу... Если получиться, то думаю найти/скопировать $MFT и оформить всю эту байду в готовую софтину не составит труда. Главное - изучить структуру файловой записи:
Код:
Offset       0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

0C0006C00   46 49 4C 45 30 00 03 00  55 2F 12 1E 00 00 00 00   FILE0...U/......
0C0006C10   68 00 01 00 38 00 01 00  50 01 00 00 00 04 00 00   h...8...P.......
0C0006C20   00 00 00 00 00 00 00 00  04 00 00 00 1B 00 00 00   ................
0C0006C30   02 00 00 00 00 00 00 00  10 00 00 00 60 00 00 00   ............`...
0C0006C40   00 00 00 00 00 00 00 00  48 00 00 00 18 00 00 00   ........H.......
0C0006C50   A4 68 D3 73 47 65 D0 01  E5 70 01 CB F4 55 CE 01   ¤hУsGeР.еp.ЛфUО.
0C0006C60   E6 33 4E 38 85 6C D0 01  50 0E A4 54 14 86 D0 01   ж3N8…lР.P.¤T.†Р.
0C0006C70   20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ...............
0C0006C80   00 00 00 00 2C 01 00 00  00 00 00 00 00 00 00 00   ....,...........
0C0006C90   00 00 00 00 00 00 00 00  30 00 00 00 68 00 00 00   ........0...h...
0C0006CA0   00 00 00 00 00 00 02 00  50 00 00 00 18 00 01 00   ........P.......
0C0006CB0   38 59 00 00 00 00 02 00  A4 68 D3 73 47 65 D0 01   8Y......¤hУsGeР.
0C0006CC0   50 0E A4 54 14 86 D0 01  50 0E A4 54 14 86 D0 01   P.¤T.†Р.P.¤T.†Р.
0C0006CD0   50 0E A4 54 14 86 D0 01  00 00 00 00 00 00 00 00   P.¤T.†Р.........
0C0006CE0   00 00 00 00 00 00 00 00  20 00 00 00 00 00 00 00   ........ .......
0C0006CF0   07 03 6F 00 75 00 63 00  2E 00 65 00 78 00 65 00   ..o.u.c...e.x.e.
0C0006D00   80 00 00 00 48 00 00 00  01 00 00 00 00 00 03 00   Ђ...H...........
0C0006D10   00 00 00 00 00 00 00 00  A0 00 00 00 00 00 00 00   ........*.......
0C0006D20   40 00 00 00 00 00 00 00  00 10 0A 00 00 00 00 00   @...............
0C0006D30   50 06 0A 00 00 00 00 00  50 06 0A 00 00 00 00 00   P.......P.......
0C0006D40   32 A1 00 30 9F 15 00 00  FF FF FF FF 82 79 47 11   2Ў.0џ...яяяя‚yG.
0C0006D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 02 00   ................
Изображения
Тип файла: jpg mft.jpg (92.7 Кб, 149 просмотров)
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 04.05.2015, 18:05   #18
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
Смех

О мой бедный мозг, но это того стоит

Код:
Offset       0  1  2  3  4  5  6  7   8  9  A  B  C  D  E  F

0C0006C00   46 49 4C 45 30 00 03 00  55 2F 12 1E 00 00 00 00   FILE0...U/......
0C0006C10   68 00 01 00 38 00 01 00  50 01 00 00 00 04 00 00   h...8...P.......
0C0006C20   00 00 00 00 00 00 00 00  04 00 00 00 1B 00 00 00   ................
0C0006C30   02 00 00 00 00 00 00 00  10 00 00 00 60 00 00 00   ............`...
0C0006C40   00 00 00 00 00 00 00 00  48 00 00 00 18 00 00 00   ........H.......
0C0006C50   A4 68 D3 73 47 65 D0 01  E5 70 01 CB F4 55 CE 01   ¤hУsGeР.еp.ЛфUО.
0C0006C60   E6 33 4E 38 85 6C D0 01  50 0E A4 54 14 86 D0 01   ж3N8…lР.P.¤T.†Р.
0C0006C70   20 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00    ...............
0C0006C80   00 00 00 00 2C 01 00 00  00 00 00 00 00 00 00 00   ....,...........
0C0006C90   00 00 00 00 00 00 00 00  30 00 00 00 68 00 00 00   ........0...h...
0C0006CA0   00 00 00 00 00 00 02 00  50 00 00 00 18 00 01 00   ........P.......
0C0006CB0   38 59 00 00 00 00 02 00  A4 68 D3 73 47 65 D0 01   8Y......¤hУsGeР.
0C0006CC0   50 0E A4 54 14 86 D0 01  50 0E A4 54 14 86 D0 01   P.¤T.†Р.P.¤T.†Р.
0C0006CD0   50 0E A4 54 14 86 D0 01  00 00 00 00 00 00 00 00   P.¤T.†Р.........
0C0006CE0   00 00 00 00 00 00 00 00  20 00 00 00 00 00 00 00   ........ .......
0C0006CF0   07 03 6F 00 75 00 63 00  2E 00 65 00 78 00 65 00   ..o.u.c...e.x.e.
0C0006D00   80 00 00 00 48 00 00 00  01 00 00 00 00 00 03 00   Ђ...H...........
0C0006D10   00 00 00 00 00 00 00 00  A0 00 00 00 00 00 00 00   ........*.......
0C0006D20   40 00 00 00 00 00 00 00  00 10 0A 00 00 00 00 00   @...............
0C0006D30   50 06 0A 00 00 00 00 00  50 06 0A 00 00 00 00 00   P.......P.......
0C0006D40   32 A1 00 30 9F 15 00 00  FF FF FF FF 82 79 47 11   2Ў.0џ...яяяя‚yG.
0C0006D50   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D60   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D70   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D80   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006D90   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DA0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DB0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DC0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DD0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DE0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00   ................
0C0006DF0   00 00 00 00 00 00 00 00  00 00 00 00 00 00 02 00   ................
А теперь как для новичка, можете объяснить что это такое и как с ЭТИМ работать

ВОт как я понял из кода выше:

Это представление $MFT в жестком диске?
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 04.05.2015, 18:13   #19
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Алексей_2012, это такая тема, что в двух словах не опишешь,..растянется на пару-тройку страниц. Скачай маны.. в MSDN есть его описание (правда на буржуйском)

..а дамп - это один описатель файла. $MFT состоит из столькИ таких записей, скольку у тебя файлов/папок на диске..
Нашедшего выход - затаптывают первым..

Последний раз редактировалось R71MT; 04.05.2015 в 18:15.
R71MT вне форума Ответить с цитированием
Старый 04.05.2015, 18:34   #20
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Алексей_2012, Вам же ЧеловекБорща дал ссылку на структуру

46 49 4C 45 30 00 03 00
это
Код:
typedef struct _MULTI_SECTOR_HEADER {
  UCHAR  Signature[4];
  USHORT UpdateSequenceArrayOffset;
  USHORT UpdateSequenceArraySize;
} MULTI_SECTOR_HEADER, *PMULTI_SECTOR_HEADER;
делфи
Код:
MULTI_SECTOR_HEADER = record
  Signature: Array[0..3] of Char;
  UpdateSequenceArrayOffset: Word;
  UpdateSequenceArraySize: Word
end;
 PMULTI_SECTOR_HEADER = ^MULTI_SECTOR_HEADER
Вроде как то так, если я правильно понял)))
ДралсяСошибками вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание удаленного потока Dizelektwo Win Api 8 01.07.2012 16:36
ПО для удаленного доступа HAN Помощь студентам 2 24.07.2011 17:46
Мониторинг удаленного компьютера NBAH1990 Общие вопросы Delphi 4 28.02.2010 08:35
Сбой обновления основного вайла, патч отменен. Сбой CRC основного файла. Naruto63 Помощь студентам 2 21.10.2009 20:28