У цій статті покажу, як ми відновлюємо дані з дисків, де є пошкодження файлової системи, на прикладі NTFS.
В даному випадку маємо том NTFS з втраченими BOOT секторами і затертими першими MFT записами в обох копіях. Розділ не визначається в Windows. Можна, звичайно, скористатися однією з сотні програм автоматичного відновлення видалених / втрачених даних, але це не наш метод. Такий спосіб не дає гарантії того, що знайшлися всі дані, часто різного роду R-Studio “втрачають” деякі папки і файли, як ніби їх і не було, або додають в дерево відновлених файлів багато зайвого «сміття», яке залишилось на диску від попередніх установок ОС, перерозподілу диска, дефрагментації та іншої життєдіяльності.
Запускаємо Hex редактор, починаємо аналіз з BOOT сектора:
Замість звичного NTFS boot сектора бачимо тріски після мишей «сміття». У цьому місці трохи пізніше відтворимо правильну boot структуру. Проскануємо диск для пошуку структур NTFS, подивимося скільки і яких знайшлося MFT записів, а знайшлося багато цікавого:
Відразу кидається в очі великий безперервний ланцюжок з адреси 6291551- це основне тіло шуканої файлової системи. Однак записи з номерами від 0 до 16 або невалидні, або зовсім порожні. Відсіюємо файлові записи з не цікавими для нас залишками інших файлових систем і приступаємо до аналізу MFT # 0 шуканої:
Ясно-зрозуміло, диск ще й форматувати, створена нова $ MFT. Розмір – 64 кластера.
Значить, потрібно відтворити оригінальні записи boot і MFT # 0, тоді можна буде зібрати повне дерево каталогів. Також для повноцінного аналізу нам знадобиться оригінальний файл $ Bitmap (карта зайнятого простору тому) – це дозволить оцінити якість відновлення за оцінкою обсягу зайнятого простору. Знаючи характерні місця розташування цього метафайлу і його приблизний очикуваний вміст, знаходимо його за адресою LBA 6231879:
Для перевірки знайденого файлу обчислюємо його розмір згідно з припущенням, що диск використовувався цілком під NTFS і використовувався стандартний розмір кластера: 1953520000/8 / (512 * 8) = 59616 секторів. перевіримо:
В яблучко! Тут ми бачемо кінець диска, маркований як зайнятий простір. Далі справа техніки: створюємо нову boot структуру, вручну в редакторі записи MFT вписуємо в MFT # 0 обчислений кластерний ланцюжок (тут він один, але буває й сотня-друга), створюємо для неї новий Bitmap запису. Потім можна перевірити валідність отриманого файлу $ MFT по останніх записах, зазвичай воні порожні, але з заголовком:
Все збігається. Будуємо дерево каталогів за отриманим файлом, зайнято 785 Gb:
Просто чудово – втрат немає, дерево повністю цілісне. Звіряємося за обсягом c картою зайнятого простору тому:
Разом, не віднесеного до файлового дерева залишилося всього 506 Мб даних. Перевіримо ці дані за допомогою аналізатора за змістом і переконаємося, що вони є індексними записами, а це означає, що результат відмінний і без втрат!
Все, можна зберігати всі файли з відновленої файлової системи, перевіряючи паралельно вміст файлів по відомим заголовкам і повідомляти клієнтові про позитивний результат!