Курсовая работа: Розробити програму-аналог програми Doc Undelete
1. Відняти 2 із номера кластера.
2. Помножити отриманий результат на кількість векторів, використовуваних у кластері, у такий спосіб:
а. Для всіх однобічних форматів гнучких чи дисків для двостороннього 80-трекового, 5,25-дюймового формату диска підвищеної щільності запису зробити множення на 1.
б. Для всіх двосторонніх 40-трекових, 5,25-дюймових форматів дисків підвищеної щільності запису зробити множення на 2.
в. Для двосторонніх 8-дюймових гнучких дисків підвищеної щільності запису зробити множення на 4.
м. Для твердих дисків варто використовувати одне з 4 вищенаведених чи значень інше число, що залежить від формату диска.
3. Додати результат до номера логічного сектора початку області збереження даних.
Застосовуючи відповідну послідовність дій у правильному порядку, ви тепер можете перейти від елемента каталогу до елемента таблиці FAT, до номера кластера, до номера логічного сектора. А якщо є такий засіб, кому потрібна операційна система MS-DOS?! Ви і самі можете зчитувати файли сектор за сектором!
Огляд процедур відновлення.
Якщо файл, що знаходиться на диску, був якимсь образом зруйнований чи ушкоджений, існує три основних способи його виправлення.
Перший спосіб полягає у використанні одного з убудованих засобів операційної системи MS-DOS: програми CHKDSK чи програми RECOVER. Ці програми можуть знайти й ізолювати ушкоджені області диска для того, щоб могли відновити чи частина весь зруйнований файл.
Другий спосіб полягає у використанні програми DEBUG, що дозволяє вам робити всі, що завгодно з метою відновлення зруйнованого чи стертого файлу. На жаль, програми DEBUG пропонує не занадто "інтелектуальну" допомогу в досягненні вашої мети, і часто є просто "останньою соломиною". Схожий на цей спосіб полягає в написанні вашої власної програми відновлення, такий, як програма UNDEL Інформація, що наводилася нижче, по декодуванню каталогу диска й таблиці FAT є істотно важливою для написання власних програм відновлення.
Останній і найбільш зручний спосіб полягає у використанні однієї з уже наявних готових програм - утиліт таких, як "Norton-утиліти" чи "Ultra-утиліти". Ці утиліти, подібні шухляді з інструментами, і в них передбачені всі можливості перерахованих вище способів, включаючи декодування таблиць FAT, виправлення ушкоджених файлів і відновлення стертих файлів.
Відновлення стертих файлів.
На щастя, коли файл був стертий при роботі під керуванням операційної системи MS-DOS, тільки частина елемента каталогу цього файлу міняється: перший символ імені міняється на шіснадцяткове значення E5. Це значення використовується, як прапор (ознака). Коли операційна система MS-DOS переглядає сектори каталогу в пошуках вільного місця для розміщення каталогової інформації про новий файл, система знаходить і використовує перший елемент, що починається або із шіснадцяткового значення E5 (елемент каталогу ще не використовувався). Інша інформація в елементі каталогу залишається без змін. Якби усе, що нам потрібно зробити, це змінити значення E5 на значення першого символу імені стертого файлу, процедура відновлення стертих файлів була б дуже легкою. На жаль, операційна система MS-DOS значно більш ефективно працює при стиранні інформації поміщеної у секторах таблиці FAT. Незважаючи на те, що операційна система MS-DOS не торкається інформації, що зберігається в секторах чи даних кластерах, зайнятих файлом, система встановлює в значення 000 всі елементи таблиці FAT, що відповідають цим кластерам. Операційна система MS-DOS робить це тому, що це - єдиний спосіб для системи швидко переглянути диск у пошуках порожнього місця, коли вона хоче розмістити нові файли. Таким чином, наша задача по відновленню стертого файлу ледве більш складна, чим може спочатку показатися. Деякі основні правила по відновленню стертих файлів описуються нижче.
Основні принципи.
Існує багато способів утратити файл. Може бути, ви ніяково використовували команду стирання ERASE чи команду видалення DEL. Чи, може бути, відбувся збій у ваших апаратних чи засобах збій харчування під час сеансу редагування. Після перегляду диска ви знайшли, що файл, що редагується вами, не може бути знайдений.
У загальному випадку файл у дійсності буде стертий (при заміні першого символу імені файлу в елементі каталогу на шіснадцяткове значення E5) тільки тоді, коли він стирається командою ERASE чи DEL чи будь-якою іншою програмою, що виконує ту ж функцію. Якщо ви утрачаєте файл через несправність апаратних чи засобів збою харчування, файл, імовірно, не буде в дійсності стертий. Він просто буде загублений з диска, якщо використовувана вами програма не мала досить часу, щоб закрити файл належним образом. У цьому випадку ви можете використовувати програми операційної системи MS-DOS відновлення диска RECOVER і CHKDSK для відновлення загублених даних.
Кращим способом визначення, чи був файл дійсно стертий чи він просто загублений є використання програми CHKDSK без параметрів. Якщо файл загублений, програма CHKDSK виводить на екран дисплея повідомлення: "Загублені кластери знайдені". Це повідомлення виводиться на екран якщо програма CHKDSK знаходить розрив у ланцюзі кластерів, описаних у таблиці FAT, наприклад, якщо останній кластер у ланцюзі не вказує на елемент таблиці FAT, у якому міститься маркер кінця файлу (значення від (F) FF8 до (F) FFF. Коли таке случається, ви повинні повторно ввести програму CHKDSK із параметром /F для відновлення всіх загублених кластерів і приміщення даних у файл, створений програмою CHKDSK. Саме в цьому місці початковий момент створення копії усього вихідного диска може виявитися благословенним, тому що якщо ви мали на диску також і інші дійсно стерті файли, команда CHKDSK /F помістить файл, що містить відновлені дані поверх області, що містить стерті файли. Відновлення файлів у всіх випадках повинне проводитися методично й акуратно.
Після того, як стало ясно, що файл був дійсно стертий, вам точно відомі три речі: по-перше, елемент каталогу залишається неушкодженим, за винятком першого символу імені файлу, що був замінений шіснадцятковим значенням E5.
По-друге, ці кластери, сектори в області даних диска, які використовуються з файлом, як і раніше містять дані файлу.
По-третє (що дуже сумно!), кожний з елементів таблиці FAT, що використовувалися для відображення кластерів, зайнятих файлом, містить значення (0) 000.
4. Алгоритм програми
Для відновлення стертого файлу варто виконати перераховані нижче кроки:
1. Вести перегляд елементів каталогу доти, поки ви не знайдете елемент, який би починався із шіснадцяткового значення E5 у байті 00. Подивитеся на інші символи в імені файлу в байтах з 1 по 10, і перевірте, що це дійсно був файл, що ви хочете відновлювати.
2. Подивитеся на номер початкового кластера (байти 26 і 27). Використовуйте номер початкового кластера як покажчик на перший кластер в області даних диска, зайнятого файлом, а також на перший на початку використовуваний елемент таблиці FAT.
3. Подивитися на розмір файлу (байти з 28 по 31, останні чотири байти в елементі каталогу). Знати розмір файлу важливо в тім, випадку, якщо файл займає більш одного кластера в області даних диска, а особливо важливо, якщо частини файлу розкидані по різних частинах диска.
4. Визначивши номер кластера, зайнятого початком файлу, переглянемо вміст цього кластера. Пошукати у кластері символ коду ASCII "Control-Z" (шіснадцяткове значення А1). Якщо ви знаєте, що файл містить текст (у коді ASCII), і, якщо буде виявлений один чи кілька символів "Control-Z", відновлювати файл потрібно в такий спосіб (у противному випадку продовжуйте роботу з кроку 5):
а. Якщо був виявлений один чи кілька символів "Control-Z", ви знаєте, що файл займає тільки один кластер. Починайте відновлювати файл шляхом приміщення будь-якого числа від (F) FF8 до (F) FFF в елемент таблиці FAT, що відповідає цьому кластеру.
б. Зміните шіснадцяткове значення E5 в елементі каталогу на будь-який потрібний вам перший символ імені файлу.