Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: FAT16, восстановление удаленного файла.
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > Программирование
subver
Всем привет. Задался тут следующим вопросом.
Где хранится информация в системе FAT16 о цепочке кластеров только что удаленного файла?
Начальный кластер понятно - в записи директории. А последующие?
Вопрос возник вот почему - я отформатировал карточку в Windows.
В ней же записал на нее маленький файл. Просмотрел таблицу FAT в программе WinHEX, в ней разумеется присутствует список кластеров этого файла.
Затем я средствами Windows удалил файл, в записи директории в имени файла прописался символ 0xE5, т.е. в соответствии с документацией на FAT16.
Но при этом в таблице FAT(и первой и второй) записи о цепочке кластеров заменились нулями.
При всем при этом WinHEx продолжает успешно показывать цепочку использованных кластеров и позволяет восстановить данные.
Вот и вопрос - где хранится информация о цепочке использованных кластеров удаленного файла? Спасибо )
1113
при удалении файлов (пока место есть) цепочки не удаляются, а удаляется указатель на начало этой цепочки из конца предыдущей цепочки, поэтому видя цепочку, даже не включённую в список, восстанавливающая программа предполагает, что это файл и восстанавливает его. и если цепочка не битая, не перезаписанная, восстановление пройдёт успешно.
subver
Получается фрагментированный файл нельзя восстановить?
MaslovVG
Цитата(subver @ Jan 18 2012, 10:15) *
Получается фрагментированный файл нельзя восстановить?

Почему же. В таблице FAT запись в ячейке указывает на номер следующей ячейки а последняя указатель конца цепочки (номер ячейки в FAT Есть номер кластера). и цепочка записей фрагментированого файла в FAT фрагментирована также. Взяв из каталога адрес первого кластера по цепочке записей в FAT получаем весь список.
subver
Цитата(MaslovVG @ Jan 18 2012, 13:32) *
Почему же. В таблице FAT запись в ячейке указывает на номер следующей ячейки а последняя указатель конца цепочки (номер ячейки в FAT Есть номер кластера). и цепочка записей фрагментированого файла в FAT фрагментирована также. Взяв из каталога адрес первого кластера по цепочке записей в FAT получаем весь список.


Так я же говорю, в таблицах FAT после удаления - нули, на тех местах где была записана цепочка кластеров.
aaarrr
Цитата(subver @ Jan 18 2012, 14:58) *
Так я же говорю, в таблицах FAT после удаления - нули, на тех местах где была записана цепочка кластеров.

Зная исходный кластер цепочку можно восстановить. Для этого просто просто берем нужное количество свободных кластеров, начиная с того места, куда указывает начало.
MaslovVG
Цитата(subver @ Jan 18 2012, 14:58) *
Так я же говорю, в таблицах FAT после удаления - нули, на тех местах где была записана цепочка кластеров.

Чем производилось удаление?. Стандартные средства удаления не стирают данные в FAT.
В вашем случае Востановление удаленного фрагментированного файла возможно специальным софтом, некоторых типов файлов, содержащих контрольные суммы или другие признаки целосности, перебором возможных цепочек.
Кстати если файл маленький не мог он поместится в одном кластере?. Да еще в системе FAT16, таблицы FAT присутствуют в двух экземплярах.
aaarrr
Цитата(MaslovVG @ Jan 18 2012, 15:24) *
Стандартные средства удаления не стирают данные в FAT.

Стирают, разумеется. Попробуйте тем же WinHEX'ом "удалить" файл, прописав 0xE5 в начале имени, и при проверке диска непременно получите lost cluster chain.
1113
winhex это стандартное средство? проводник - вот это даа...
subver
Дело не в том, что мне надо восстановить удаленный файл, я просто решил изучить FAT16 изнутри, и сделать функции работы с файловой системой для себя.
В общем пока вывод такой - при удалении файла, необходимо обнулять цепочки кластеров, иначе после удаления свободное место на карте не соответсвует "правде", остаются как выше было сказано "lost cluster chain".
aaarrr
Цитата(1113 @ Jan 18 2012, 18:54) *
winhex это стандартное средство? проводник - вот это даа...

WinHEX - это не стандартное средство. Я лишь описал, как симулировать "удаление" файла без стирания цепочки кластеров, как стандартные средства не делают.
Палыч
Цитата
Неиспользуемым кластерам в таблице соответствуют нули. «Плохим» кластерам (которые исключаются из обработки, например, по причине нечитаемости соответствующей области устройства) также соответствует специальный код.
При удалении файла первый знак имени заменяется специальным кодом E5 и цепочка кластеров файла в таблице размещения обнуляется. Поскольку информация о размере файла (которая располагается в каталоге рядом с именем файла) при этом остаётся нетронутой, в случае, если кластеры файла располагались на диске последовательно и они не были перезаписаны новой информацией, возможно восстановление удалённого файла.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.