Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Методи аналізу і категорії даних

Поиск

П'ять категорій даних будуть використовуватися для опису методів аналізу. При проведенні дослідження аналітик визначає властивості, якими вони повинні володіти, і їх ймовірне місцезнаходження. На підставі ймовірного місцезнаходження визначається категорія даних і методи аналізу, які мають бути задіяні при пошуку. Наприклад, при пошуку файлів з розширенням JPG основна увага буде зосереджена на методах аналізу категорії імен файлів. З іншої сторони, при пошуку файлу, що містить заздалегідь задане значення, будуть використані методи аналізу метаданих, оскільки адреси блоків даних відносяться саме до цієї категорії.

В багатьох інструментах експертного аналізу об'єднуються методи аналізу, що відносяться до різних категорій.

Лекція 9 Категорія даних файлової системи

Методи аналізу

Лекція 10 Категорія даних вмісту

Загальна інформація

Методи аналізу

Методи надійного видалення

Лекція 11 Категорія метаданих

Загальна інформація

Методи аналізу

Лекція 12 Категорія імен файлів

Загальна інформація

Методи аналізу

Методи надійного видалення

Лекція 13 Категорія прикладних даних

Журнали файлової системи

Лекція 14 Методи пошуку на прикладному рівні

Відновлення даних на прикладному рівні

Сортування файлів по типу

 

Лекція 15 Файлова система FAT: основні концепції і аналіз

FAT (File Allocation Table) - одна з найпростіших файлових систем, що зустрічаються в багатьох операційних системах. FAT є основною файловою системою операційних систем Microsoft DOS і Windows 9х, але в NT, 2000 і ХР за замовчуванням використовується система NTFS (New Technologies File System). FAT підтримується всіма версіями Windows і багатьма системами UNIX. FAT часто зустрічається в картах пам'яті цифрових фотоапаратів і «брєлкових дисках» USB. Багато користувачів знайомі з основними концепціями FAT, але не знайомі з основними «схованками» для приховання даних, проблемами адресації та інших нетривіальних аспектах. Розглянемо загальні концепції та методи аналізу FAT на основі моделі даних з п'ятьма категоріями.

Одна із причин, по якій файлова система FAT вважається простою, полягає в розділі, що кількість структур даних у ній відносно невелика. На жаль, це також означає, що за минулі роки в неї був внесений ряд змін для підтримки нових можливостей (хоча ці зміни й не настільки заплутані, як у випадку із розділами DOS). Файлова система FAT не кращим чином вкладається в модель із п'ятьма категоріями, розділу деякі розділи виглядають штучно (більше того, опис FAT починає виглядати складніше, ніж насправді). У FAT існує дві важливі структури даних (таблиця розміщення файлів FAT і запису каталогу), які виконують безліч функцій і відповідають відразу декільком категоріям моделі.

Основна концепція файлової системи FAT полягає в розділу, що кожному файлу та каталогу виділяється структура даних, названа записом каталогу. У цій структурі зберігається ім'я файлу, його розмір, початкова адреса вмісту файлу та інші метадані. Вміст файлів і каталогів зберігається в блоках даних, названих кластерами. Якщо файлу або каталогу виділяється більше одного кластера, інші кластери знаходяться за допомогою структури даних, названої FAT. Структура FAT використовується як для ідентифікації наступних кластерів у файлах, так і для визначення стану виділення кластерів. Таким чином, вона задіяна як у категорії вмісту, так і в категорії метаданих. Існує три версії FAT: FAT12, FAT16 і FAT32. Вони відрізняються одна від одної насамперед розміром записів у структурі FAT. Розглянемо зв'язки між структурами даних більш докладно, а їхня загальна схема показана на рис. 15.1.

Файлова система FAT ділиться на три фізичні області (рис. 15.2). Перша область називається зарезервованою, у ній зберігаються дані з категорії файлової системи. В FAT12 і FAT16 зарезервована область займає всього 1 сектор, але формально її розмір визначається в завантажувальному секторі. Друга область — область FAT — містить основні та резервні структури FAT. Вона починається в секторі, що йде відразу після зарезервованої області, а її розмір визначається кількістю та розміром структур FAT. Третя область — область даних — містить кластери, які виділяються для зберігання файлів і вмісту каталогів.

Категорія файлової системи

Дані в цій категорії описують загальну будову файлової системи та використовуються для пошуку інших важливих структур даних. В цій частині лекції опишемо представлені загальні концепції зберігання даних у цій категорії та способи їхнього аналізу.

Загальні концепції

У файловій системі FAT дані, що відносяться до категорії файлової системи, зберігаються в структурі даних завантажувального сектора. Завантажувальний сектор розташовується в першому секторі розділу і є частиною зарезервованої області файлової системи. Microsoft називає деякі дані першого сектора блоком параметрів BIOS, або ВРВ (BIOS Parameter Block), але для простоти будемо використовувати термін завантажувальний сектор.

Не існує поля, що ідентифікувало б версію файлової системи (FAT12, FAT16 або FAT32). Тип визначається тільки обчисленнями з даними завантажувального сектора.

У FAT32 завантажувальний сектор містить додаткові дані, у розділу числі адреси резервної копії завантажувального сектора, а також основний і додатковий номера версій. Резервна копія завантажувального сектора використовується при ушкодженні версії в секторі 0; відповідно до документації Microsoft вона завжди повинна перебувати в секторі 6, щоб при ушкодженні стандартного екземпляра програми можна автоматично знайти її.

Файлові системи FAT32 також містять структуру даних FSINFO з інформацією про місцезнаходження наступного доступного кластера та загальну кількість вільних кластерів. Точність цих даних не гарантована; вони всього лише служать рекомендацією для операційної системи.

Необхідні дані завантажувального сектора

Одним із перших завдань при аналізі файлової системи FAT повинна стати ідентифікація трьох фізичних областей. Зарезервована область починається в секторі 0 файлової системи, а її розмір зазначений у завантажувальному секторі. У FAT 12/16 вона звичайно займає всього 1 сектор, а в FAT32 для неї резервуються кілька секторів.

Область FAT містить одну або кілька структур FAT і починається в секторі, що випливає за зарезервованою областю. Її розмір обчислюється множенням кількості структур FAT на розмір однієї структури; обидва значення зберігаються в завантажувальному секторі.

В області даних перебувають кластери із вмістом файлів і каталогів; вона починається в секторі, що йде відразу за областю FAT. Розмір області даних обчислюється як різниця адреси початкового сектора області даних від загальної кількості секторів у файловій системі, зазначених в завантажувальному секторі. Область даних розділена на кластери, а кількість секторів у кластері вказується в завантажувальному секторі.

Структура області даних в FAT12/16 і FAT32 дещо відрізняються. В FAT 12/16 початок області даних зарезервований для кореневого каталогу, а в FAT32 кореневий каталог може перебувати в довільному місці області даних (хоча звичайно він все-таки перебуває на початку). Динамічний розмір і місцезнаходження кореневого каталогу дозволяють FAT32 адаптуватися до появи пошкоджених секторів на початку області даних і збільшувати розмір каталогу до необхідного розміру. Кореневий каталог FAT 12/16 має фіксований розмір, заданий у завантажувальному секторі. Початкова адреса кореневого каталогу FAT32 зберігається в завантажувальному секторі, а його розмір визначається за структурою FAT. На рис. 15.3 показані різні поля завантажувального сектора, які використовуються для визначення структури файлових систем FAT12/16 і FAT32.

Допоміжні дані завантажувального сектора

Крім інформації про структуру системи в завантажувальному секторі зберігається багато допоміжних даних. Ці дані не є необхідними для збереження та читання файлів, існують винятково для зручності й можуть містити невірну інформацію. Одне з таких значень — рядок із 8 символів, названий міткою OEM. В ній може зберігатися позначення системи, що створила екземпляр FAT, але це значення не є обов'язковим. Наприклад, система Windows 95 заносить у це поле рядок «MSWIN4.0», Windows 98 - рядок «MSWIN4.1», a Windows XP і 2000 - «MSDOS5.0». З’ясував, що команда Linux mkfs.msdos заповнює його рядком mkdosfs, деякі флеш-диски USB записують випадкові дані, а деякі карти пам'яті цифрових фотоапаратів використовують імена, що нагадують модель камери. Значення можна легко змінити в шістнадцятковому редакторі, воно допоможе визначити, на якому типі комп'ютера була відформатований диск. Деякі версії Windows вимагають, щоб значення було обов'язково задане.

Файловим системам FAT призначається 4-байтовий серійний номер розділу (розділу), який у відповідності зі специфікацією Microsoft визначається часом створення файлової системи із використанням поточного часу, хоча операційна система, що створює файлову систему, може задати будь-яке значення. Тестування показало, що різні версії Windows поводяться по-різному. Так, система Windows 98 поводилася так: серійний номер являв собою результат додавання полів дати та часу в певному порядку. У Windows XP цей алгоритм не використовувався. Windows використовує серійний номер розділу (розділу) при роботі із знімними носіями та визначає факт заміни диска.

Також у завантажувальному секторі присутнє поле із 8 символів, що містить рядок «FAT12», «FAT16», «FAT32» або «FAT». Більшість систем, що створюють екземпляри FAT, коректно заповнюють цей рядок, але це не обов'язково. Існує тільки один спосіб визначення фактичного типу системи - обчислення по формулі, до якої ми прийдемо пізніше. Останнім ідентифікаційним маркером є 11-символьна мітка розділу, що вводить користувач при створенні файлової системи. Мітка розділу також зберігається в кореневому каталозі файлової системи. Відмітимо, що при додаванні мітки розділу в ХР вона записується тільки в кореневий каталог, але не в завантажувальний сектор.

Завантажувальний код

Завантажувальний код у файловій системі FAT чергується із структурами даних файлової системи. У цьому FAT відрізняється від файлових систем UNIX, де використовується повністю ізольований завантажувальний код. Перші три байти завантажувального сектора містять машинний код команди переходу, що змушує процесор обійти конфігураційні дані та передати керування основному завантажувальному коду. Як буде видно зі структури даних наведеної нижче, завантажувальний сектор займає 512 байт, причому байти 62-509 у FAT12/16 і байти 90-509 у FAT32 не використовуються. Ці байти містять завантажувальний код, а у FAT32 додатковий завантажувальний код може перебувати в секторах, що йдуть відразу за завантажувальним сектором.

Файлові системи FAT звичайно містять завантажувальний код навіть у тому випадку, якщо вони не є завантажувальними - у цьому випадку код виводить повідомлення про те, що для завантаження системи варто вставити інший диск. Завантажувальний код FAT одержує керування від завантажувального коду MBR, знаходить і завантажує потрібні файли операційної системи.

Приклад образу

Наведемо результат досліджуваного образу FAT32. У пакет TSK (The Sleuth Toolkit) входить програма fsstat, що виводить більшу частину даних з категорії файлової системи. Приклад результату, виданого програмою fsstat для тестового образу:

 

Лістинг 15.1 – Зразок образу FAT32

# fsstat -f fat fat-4.dd

FILE SYSTEM INFORMATION

File System Type: FAT

OEM Name: MSDOS5.0

Volume ID: 0x4cl94603

Volume Label (Boot Sector): NO NAME

Volume Label (Root Directory): FAT DISK

File System Type Label: FAT32

 

Backup Boot Sector Location: 6

FS Info Sector Location: 1

Next Free Sector (FS Info): 1778

Free Sector Count (FS Info): 203836

Sectors before file system: 100800

 

File System Layout (in sectors)

Total Range: 0 - 205631

* Reserved: 0 – 37

** Boot Sector: 0

** FS Info Sector: 1

** Backup Boot Sector: 6

* FAT 0:38 – 834

* FAT 1: 835 – 1631

* Data Area: 1632 - 205631

** Cluster Area: 1632 – 205631

*** Root Directory: 1632 – 1635

 

CONTENT-DATA INFORMATION

Sector Size: 512

Cluster Size: 1024

Total Cluster Range: 2 - 102001

[REMOVED]

 

З лістингу видно, що першій копії FAT передують 38 зарезервованих секторів. У зарезервованій області перебуває резервна копія завантажувального сектора та структура даних FSINFO. У файловій системі перебуває дві структури FAT, розташовані в секторах 38-834 і 835-1631. Область даних починається в секторі 1632 і складається із 1024-байтних кластерів.

Методи аналізу

Аналіз категорії даних файлової системи проводиться для визначення будови файлової системи та параметрів конфігурації для застосування більше конкретного аналізу. При цьому також можуть бути знайдені докази, специфічні для даної ситуації. Наприклад, ми можемо дізнатись, яка ОС відформатувала диск, або виявити на ньому приховані дані.

Для визначення конфігурації файлової системи FAT необхідно знайти та обробити завантажувальний сектор. Обробка завантажувального сектора спрощується тим, що він перебуває в першому секторі файлової системи та містить найпростіші поля. Існує дві версії завантажувального сектора, причому обидві добре документовані. На підставі даних із завантажувального сектора обчислюється місцерозташування зарезервованої області, області FAT і області даних.

Структура даних FAT32 FSINFO також може надати деякі відомості про недавно виконані операції; її місцерозташування зазначене в завантажувальному секторі. Як правило, FSINFO зберігається в секторі 1 файлової системи. У FAT32 також існують резервні копії обох структур даних.

Фактори аналізу

Дані цієї категорії надають структурну інформацію про файлову систему, причому більша частина цих даних непідконтрольна користувачеві. Отже, ніяких сенсаційних знахідок не варто очікувати. Не буде знайдено значень, що показують, де та коли була створена файлова система; проте, мітка OEM і мітка розділу, хоча і відносяться до допоміжних даних, можуть надати деяку корисну інформацію, тому що в різних системах використовуються різні значення за замовчуванням. Пізніше ми побачимо, що у FAT існує спеціальний файл, ім'я якого збігається з ім'ям розділу, і цей файл може містити час створення системи.

Існує ряд місць, які не використовуються файловою системою; у них можуть зберігатися дані, сховані від користувача. Наприклад, між кінцем завантажувального сектора та завершальною сигнатурою зберігаються понад 450 байт даних. Windows звичайно використовує цей простір для зберігання завантажувального коду системи, але у файлових системах, що не є завантажувальними, він не використовується.

FAT32 звичайно виділяє багато секторів у зарезервовану область, але лише невелика частина з них використовується для зберігання основної та резервної копій завантажувального сектора й структури даних FSINFO.Отже, ці сектори можуть містити приховані дані. Крім того, у FAT32 структура FSINFO містить сотні невикористовуваних байт. ОС звичайно стирає вміст секторів у резервній області при створенні файлової системи.

Приховані дані також можуть перебувати між кінцем файлової системи та кінцем розділу. Зрівняйте число секторів файлової системи, задане в завантажувальному секторі, з кількістю секторів розділу, щоб визначити резервний простір розділу. Врахуйте, що створити резервний простір розділу відносно нескладно - для цього досить змінити загальну кількість секторів у завантажувальному секторі.

У файлових системах FAT32 є присутня резервна копія завантажувального сектора, що повинна перебувати в секторі 6. Основна копія порівнюється з резервною для виявлення розбіжностей. Якщо основна копія виявиться ушкодженою, варто проаналізувати резервну копію. Якщо користувач змінив будь-які із міток або інших полів основного завантажувального сектора в шістнадцятковому редакторі, можливо, резервна копія буде містити вихідні дані.

Сценарій аналізу

Маємо жорсткий диск. У процесі зняття даних з'ясувалося, що перші 32 сектора диску ушкоджені та прочитати їх не вдасться. Імовірно, користувач поклав диск у шафу після збою та скористався новим диском, але ми хочемо проаналізувати старий диск на наявність даних. На комп'ютері користувача встановлена система Windows ME, відповідно, використовується файлова система FAT. Цей сценарій показує, як знайти файлову систему навіть в тому випадку, якщо таблиці розділів не існує. Щоб знайти початок файлової системи FAT, ми проведемо пошук по сигнатурах 0x55 і 0хАА в останніх двох байтах завантажувального сектора. При проведенні тільки одного пошуку варто очікувати великої кількості помилкових співпадінь. Якщо диск заповнений випадковими даними, можна чекати, що сигнатура буде зустрічатися кожні 65536 секторів. Для зменшення кількості помилкових співпадінь можна збільшити сигнатуру або використовувати інші дані. Сценарій показує, що другий спосіб добре підходить для FAT32, тому що шаблон сигнатур зберігається в зарезервованій області файлової системи. Звичайно, програми автоматизованого пошуку зробили б те ж саме швидше, але ми виконаємо пошук вручну. Для пошуку сигнатур буде використовуватися програма sigfind з пакета TSK. Замість її можна скористатися будь-якою іншою програмою з можливістю пошуку шістнадцяткових значень. Програма sigfind виводить сектор, у якому була знайдена сигнатура, і повідомляє відстань від попереднього знайденого співпадіння. Так виглядають її вихідні дані:

 

Лістинг 15.2 – Вихідні дані

# sigfind -о 510 55АА disk-9.dd

Block size: 512 Offset: 510

Block: 63 (-)

Block: 64 (+1)

Block: 65 (+1)

Block: 69 (+4)

Block: 70 (+1)

Block: 71 (+1)

Block: 75 (+4)

Block: 128504 (+128429)

Block: 293258 (+164754)

[.....]

 

Перший екземпляр сигнатури знайдений у секторі 63; це логічно, тому що перший розділ звичайно починається в секторі 63. Ми читаємо вміст сектора та відображаємо його на структуру даних завантажувального сектора. З'ясовується, що в секторі 6 зберігається резервна копія завантажувального сектора, а в секторі 1 файлової системи - структура FSINFO. Також ми взнаємо, що файлова система містить 20482812 секторів. Структура даних FSINFO має таку ж сигнатуру, як і завантажувальний сектор, тому в секторі 64 теж знайдений збіг.

Співпадіння також виявляються в секторах 69 і 70, що містять резервні копії завантажувального сектора та FSINFO на відстані шести секторів від оригіналу. Блоки 65 і 71 заповнені нулями (крім сигнатур). Співпадіння у блоці 128504 виявляється помилковим; при перегляді ми бачимо випадкові дані. Таким чином, на підставі інформації про розташування завантажувального сектора та відносного місцезнаходження резервних копій можна зробити висновок, що файлова система займає на диску сектори з 63 по 20482874. Тепер можна переглянути інші співпадіння у вихідних даних sigfind:

 

Лістинг 15.3 – Перевірка на співпадіння

[.....]

Block: 20112453 (+27031)

Block: 20482875 (+370422)

Block: 20482938 (+63)

Block: 20482939 (+1)

Block: 20482940 (+1)

Block: 20482944 (+4)

Block: 20482945 (+1)

Block: 20482946 (+1)

Block: 20482950 (+4)

Block: 20513168 (+30218)

 

У пропущеній частині були численні помилкові співпадіння. Ми бачимо, що в секторі 20482875 виявлено співпадіння. Цей сектор перебуває за кінцем попередньої файлової системи, що завершується в секторі 20482874. Однак закономірність співпадінь, починаючи із сектора 20482875, відрізняється від попередніх: наступний збіг знайдений із зсувом 63 сектора, а потім випливають кілька близьких співпадінь. Переглядаємо сектор 20482875 і з'ясовуємо, чи є збіг помилковим:

# dd if=disk-9.dd bs=512 skip=20482875 count=l | xxd

0000000:088c 039a 5f78 7694 8f45 bf49 e396 00c0...._xv..E.I....

0000016:889d ddc0 6d36 60df 485d adf7 46dl 3224....m6’.H]..F.2$

0000032:3829 95cd ad28 d2a2 dc89 f357 d921 cfde 8)...(…..W.!..

0000048:df8e lfd3 303e 8619 641e 9c2f 95b4 d836....0>..d../...6

[...]

0000416:3607 e7be 1177 db5f 11c9 fba1 c913 1a3d 6....w._.......=

0000432:da81 143d 00c7 7083 9d42 330c 0287 0001...=..p..B3…..

0000448:clff 0bfe ffff 3f00 0000 fc8a 3801 0000 ……?.....8...

0000464:clff 05fe ffff 3b8b 3801 7616 7102 0000 ……:.8.v.q...

0000480:0000 0000 0000 0000 0000 0000 0000 0000 …………….

0000496:0000 0000 0000 0000 0000 0000 0000 55aa …………..U.

Співпадіння легко прийняти за помилкове, але зверніть увагу на чотири завершальні рядки. Цей сектор містить розширену таблицю розділів, а таблиця починається із сектора 446. У таблицях розділів DOS використовується та ж сигнатура, що й у завантажувальних секторах FAT. Обробивши два ненульові записи таблиці, ми довідалися б, що розділ FAT32 перебуває в секторах 20482938-40965749, а розширений розділ - у секторах 40965750-81931499. Це підтверджує результати sigfind: збіг був знайдений у секторі 20482938, а потім ще кілька збігів із зсувами 1, 6 і 7 секторів для структури даних FSINFO і резервних копій. На рис. 15.4 показане графічне подання цього прикладу. На ньому зображені дві файлові системи, виявлені нами, а також деякі помилкові збіги та розширені таблиці розділів.

Цей приклад показує, що файлову систему FAT32 можна знайти при наявності завантажувального сектора. Пошук 2-байтної сигнатури видає багато помилкових співпадінь, але FAT32 дещо спрощує завдання, тому що ми очікуємо знайти співпадіння зі зсувом 1, 6 і 7 секторів від структури даних FSINFO і резервних копій. Із FAT12/16 справа складніша; резервні структури в цих системах відсутні, але все, що буде потрібно, - це знайти перше співпадіння. Можна почати пошук із сектора 63. Після того як файлова система буде знайдена, її розмір використовується для переходу вперед, після чого пошук триває. У пошуку файлових систем також можуть допомогти структури розширених таблиць розділів DOS.

Категорія вмісту

До цієї категорії відносяться дані, які складають вміст файлу або каталогу. У файловій системі FAT блоки даних називаються кластерами. Кластер (cluster) являє собою групу суміжних секторів, кількість яких рівна ступеням 2 — наприклад, 1, 2, 4, 8, 16, 32 або 64. Відповідно до специфікації Microsoft, максимальний розмір кластера дорівнює 32 Кбайт. Кожному кластеру привласнюється адреса; для першого кластера він дорівнює 2. Інакше кажучи, кластерів з адресами 0 і 1 не існує. Всі кластери перебувають в області даних файлової системи, останньої із трьох областей.

Пошук першого кластера

Знайти перший кластер (з адресою 2) складніше, ніж здається на перший погляд, тому що він розташований не на початку файлової системи; кластер перебуває в області даних. У зарезервованій області та області FAT, що перебувають перед областю даних, адреси кластерів не використовуються. Файлова система FAT дає приклад того, що не кожній логічній адресі розділу відповідає логічна адреса файлової системи. У NTFS ситуація змінилася - у цій системі перший кластер також є першим кластером файлової системи.

В FAT 12/16 і FAT32 використовуються різні процедури пошуку адреси сектора 2. У файловій системі FAT32 кластер 2 починається з першого сектора області даних. Припустимо, є файлова система із 2048-байтовими кластерами та областю даних, що починається із сектора 1224. Кластеру 2 буде відповідати адреса сектора 1224, а кластеру 3 - адреса сектора 1228 (рис. 15.5).

Адреси кластерів і секторів

Адресація кластерів починається тільки з області даних. Отже, для адресації даних у зарезервованій області та області FAT довелося б використовувати або дві різні схеми адресації, або «найменше спільне кратне», яким є адреса сектора (логічна адреса розділу). Виконувати всі операції з адресами секторів досить зручно; саме ця схема використовується у внутрішній роботі всіх системних програм і операційних систем, тому що їм потрібно знати, де перебувають дані відносно початку розділу. Деякі програми, в тому числі пакет TSK, виводять всі адреси у вигляді адрес секторів, щоб було досить тільки однієї схеми адресації.

Аби виконати перетворення між адресами кластерів і секторів, необхідно знати адресу сектора для кластера 2 і кількість секторів в кластері. Базова формула розрахунку адреси сектора для кластера С виглядає так:

(С - 2) * (к-ть секторів в кластері) + (сектор кластера 2)

Зворотна формула для перетворення сектора S в кластер:

((S - сектор кластера 2) / (к-ть секторів в кластері)) + 2

Стан виділення кластерів

Отже, ми знаємо, як знайти кластер. Тепер необхідно визначити, які кластери виділені, а які залишаються вільними. Стан виділення кластера визначається по структурі FAT. Зазвичай FAT існує в двох копіях, і перша копія починається після зарезервованої області файлової системи.

Структура FAT використовується для багатьох цілей, але базова концепція проста: кожен кластер файлової системи представлений одним записом. Наприклад, запис таблиці 481 відповідає кластеру 481. Кожен запис таблиці представляє собою одне число, максимальне значення якого залежить від версії FAT. У файлових системах FAT12 використовуються 12-розрядні записи, в FAT16 — 16-розрядні, а в FAT32 запис таблиці складається з 32 розрядів (з яких використовуються лише 28).

Якщо запис таблиці дорівнює 0, кластер не виділений файлу. Якщо вона дорівнює 0xff7 для FAT12, 0xfff7 для FAT16 або 0x0fff fff7 для FAT32, кластер помічений як пошкоджений і не може виділятися файлам. Всі останні значення означають, що кластер виділений.

 

Алгоритми виділення

При виділенні кластерів ОС використовує певний алгоритм. Тестування систем Windows 98 і Windows XP показало, що в обох випадках використовувався алгоритм пошуку наступного доступного кластера. Цей алгоритм шукає перший доступний кластер, починаючи від попереднього виділеного кластера. Припустимо, кластер 65 виділений новому файлу, а кластер 62 вільний. Наступний пошук почнеться з кластера 66, а кластер 62 на деякий час залишиться вільним (рис. 15.6).Процес виділення кластерів залежить від багатьох чинників, і ідентифікувати точний алгоритм важко.

Аби знайти вільний кластер для виділення файлу, ОС сканує FAT і шукає запис, що містить 0. В резервній області FAT32 зберігається структура даних FSINFO з номером наступного вільного кластера, яким операційна система може керуватися при пошуку. Якщо потрібно буде перевести кластер у вільний стан, система знаходить відповідний запис в структурі FAT і заповнює її нулями. Більшість операційних систем не стирають вміст кластерів при звільненні, якщо лише ця операція не реалізована як функція надійного видалення інформації.

Методи аналізу

Аналіз даних в категорії вмісту виконується для знаходження конкретного блоку даних, перевірки його статусу виділення і виконання операцій із вмістом. Знайти конкретний блок даних в FAT складніше, ніж в інших файлових системах, тому що адресація кластерів починається не з початку файлової системи. При зверненні до блоку даних, розташованого до початку області даних, необхідно використовувати адресу сектора. Для блоків в області даних можуть використовуватися як адреси секторів, так і адреси кластерів.

Стан виділення кожного кластера визначається по запису кластера в FAT. У вільних кластерів значення запису дорівнює нулю, а у виділених воно відмінне від нуля. Якщо потрібно буде витягувати вміст всіх вільних кластерів, потрібно перебрати всі записи FAT і витягувати кожен кластер з нульовим значенням в таблиці. Блоки даних, розташовані до початку області даних, в FAT не представлені, отже, вони не мають формального стану виділення, хоча більшість таких блоків використовуються файловою системою. Варто перевірити свої програми аналізу і з'ясувати, чи вважають вони вільними блоки, які передують області даних.

 

Фактори аналізу

В процесі аналізу файлової системи FAT слід вивчити вміст кластерів, помічених як пошкоджені, — багато дисків обробляють пошкоджені сектори на апаратному рівні, і операційна система їх взагалі не бачить.

Пошкоджені блоки даних необхідно аналізувати у файлових системах будь-якого типу, але Microsoft повідомляє, що деякі захищені програмні засоби зберігають інформацію в кластерах FAT, помічених як пошкоджені. По цій причині програма ScanDisk для Windows не перевіряє, чи дійсно пошкоджені помічені сектори. Деякі версії команди format для Windows зберігають статус пошкоджених кластерів при повторному форматуванні файлової системи.

Розмір області даних може виявитися некратним розміру кластера, тому в кінці області даних можуть розташовуватися сектори, що не належать кластеру. Такі сектори використовуються для приховання інформації або містять дані, що залишилися від попередньої файлової системи. На рис. 15.7 показаний приклад файлової системи з кластерами, що складаються з 2 секторів, і непарною кількістю секторів. Останній сектор, помічений сірим кольором, не має адреси кластера.

Аби взнати, чи присутні в системі невикористовувані сектори, віднімемо адресу сектора для кластера 2 із загальної кількості секторів і розділимо різницю на кількість секторів в кластері. Якщо ділення виконується із залишком, значить, невживані сектори присутні:

(загальна кількість секторів - адреса сектора для кластера 2) / (кількість секторів в кластері)

Приховані дані також можуть зберігатися між кінцем останнього дійсного запису основної структури FAT і початком резервної копії або ж між кінцем останнього запису резервної FAT і початком області даних. Аби вичислити об'єм невживаного простору, порівняємо розмір кожної структури FAT, вказаний в завантажувальному секторі, з розміром, необхідним для зберігання фактичної кількості секторів у файловій системі. Наприклад, у файловій системі FAT32, яку ми раніше аналізували командою fsstat, кожній копії FAT було виділено 797 секторів. Кожен запис таблиці у файловій системі FAT32 займає чотири байти, отже, кожен 512-байтовий сектор містить 128 записів. У кожній таблиці поміщається 797 секторів * 128 (записів/сектор) = 102016 записів.

З вихідних даних fsstat видно, що кількість кластерів дорівнює 102002, отже, в таблиці є 14 невживаних записів, а їх загальний розмір складає 64 байти.

Не кожному сектору тому ставиться у відповідність адреса кластера, тому результати пошуку по логічному тому і логічній файловій системі можуть відрізнятися. Протестуємо свої програми і визначимо, чи проводять вони пошук у завантажувальному секторі і областях FAT. Один з простих способів — провести пошук рядка «FAT» і поглянути, чи буде знайдений завантажувальний сектор (проте, спочатку переконатися в тому, що завантажувальний сектор містить цей рядок).

Сценарій аналізу

Є файлова система FAT 16, потрібно знайти перший сектор кластера 812. У нас є лише шістнадцятковий редактор, що не має спеціальних функцій підтримка файлової системи FAT.

Першим кроком стане перегляд завантажувального сектора, розташованого в секторі 0 файлової системи. В результаті обробки сектора ми взнаємо, що він містить шість зарезервованих секторів, дві копії FAT і кожна копія FAT займає 249 секторів. Кожен кластер складається з 32 секторів, а кореневий каталог містить 512 записів.

Тепер потрібно зайнятися обчисленнями. Перша копія FAT починається в секторі 6 і закінчується в секторі 254. Друга копія FAT починається в секторі 255 і закінчується в секторі 503. Далі слідує кореневий каталог. Кореневий каталог містить 512 записів; кожен запис (як буде показано далі) займає 32 байти, тому каталог розташовується в секторах 504-535, а область даних починається в секторі 536.

Перший кластер області даних володіє адресою 2. Відповідно, шуканий кластер 812 буде 810-м кластером області даних. Оскільки кожен кластер займає 32 сектори, кластер 812 зміщений від початку області даних на 25920 секторів. Нарешті, ми додаємо початкову адресу області даних і визначаємо, що кластер 812 починається в секторі 26456 і триває до сектора 26 487. Структура диска показана на рис. 15.8.

 

Категорія метаданих

До категорії метаданих відносяться дані, що описують файли або каталоги: місцезнаходження вмісту, дата і час, права доступу. Ця категорія даних використовуватиметься для отримання додаткової інформації про файл і ідентифікацію підозрілих файлів. У файловій системі FAT ця інформація зберігається в структурі запису каталога. Структура FAT також використовується для зберігання метаданих, що описують файли і каталоги.

Записи каталога

Записом каталогу називається структура даних, що створюється для кожного файлу і каталога. Її розмір дорівнює 32 байт; у структурі зберігаються атрибути файлу, його початковий кластер, дата і час. Запис каталогу займає важливе місце в категорії метаданих і імен файлів — адже в цій структурі міститься ім'я файлу. Записи каталогів можуть знаходитися в будь-якому місці області даних, тому що вони зберігаються в кластерах, виділених каталогам. У файловій системі FAT каталоги інтерпретуються як особливий різновид файлів.

Кожного разу, коли в системі створюється новий файл або каталог, в батьківському каталозі для нього створюється запис каталогу. Оскільки кожен запис каталога володіє фіксованим розміром, вміст каталога можна уявити собі як таблицю записів каталогів. На відміну від кластерів, записам каталогів не привласнюються унікальні числові адреси, тому можливий лише один стандартний спосіб адресації каталогів: використовувати повне ім'я файлу або каталога, якому належить цей запис.

Структура запису каталога містить поле атрибутів. Для кожного файлу можна задати значення семи атрибутів, хоча ОС (або програма аналізу) можуть проігнорувати деякі з них. Ми почнемо з розгляду обов'язкових атрибутів — ігнорувати ці атрибути не можна, тому що вони впливають на процес обробки записів каталогів. Атрибут каталогу використовується для ідентифікації записів каталогів, що відносяться до каталогів (на відміну від файлів). Кластери, що асоціюються із записом каталога, повинні містити нові записи каталогів. Атрибут довгого імені файлу є ознакою записів особливого типу, що мають іншу структуру. Останній обов'язковий атрибут призначений для зберігання мітки тому; згідно специфікації, він може бути встановлений лише в одного запису. Я відмітив, що мітка тому, що задається користувачем в Windows XP зберігається саме тут, а не в завантажувальному секторі. Якщо жоден з цих атрибутів не встановлений, значить, запис відноситься до звичайного файлу.

Також існує чотири необов'язкові атрибути, які можуть встановлюватися для кожного файлу або каталога. Наслідки їх встановлення залежать від того, наскільки жорстко операційна система дотримує відповідні правила. Атрибут доступу лише для читання повинен запобігати запису у файл, проте експерименти показали, що в системах Windows XP і Windows 98 в каталогах, доступних лише для читання, можливе створення нових файлів. Атрибут прихованого файлу повинен виключати файли і каталоги із списків, що виводяться, але зазвичай їх вивід включається встановленням параметра конфігурації ОС. Атрибут системного файлу повинен ідентифікувати файл як системний, а атрибут архівного файлу зазвичай встановлюється Windows при створенні файлу або запису в нього. За станом цього атрибуту програми архівації даних ідентифікують файли, що змінилися з моменту створення останнього архіву.

В кожному записі каталога зберігається три тимчасові штампи: для створення, останнього звернення і останньої модифікації. В FAT є одна дивна особливість: великий розкид точності в цих значеннях. Час створення не є обов'язковим і вимірюється з точністю до секунди; час звернення також не обов'язково і вимірюється з точністю до дня; нарешті, згідно специфікації час останньої модифікації є обов'язковим і вимірюється з точністю до двох секунд. Жодних специфікацій з приводу того, при яких операціях повинно оновлюватися той або інший час, не існує, тому кожна ОС, в якій використовується FAT, реалізує власну політику оновлення цих значень. У Windows 95+ і NT+ оновлюються всі тимчасові штампи, а DOS і Windows 3.1 оновлюють лише час останньої модифікації. Час зберігається з врахуванням місцевого часового поясу; це означає, що його не потрібно перетворювати залежно від місцезнаходження



Поделиться:


Последнее изменение этой страницы: 2016-09-19; просмотров: 401; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.225.55.38 (0.016 с.)