Почему именно с NTFS и FAT? А пользователи какой системы чаще всего теряют файлы? 🙂
Сегодня рассмотрим 2 программы для восстановления удаленных файлов, а именно ntfsundelete и photorec. А потом научимся полностью уничтожать файлы.
Началось все с того, что один человек копировал файлы на флешку, и потерял их.
Изначально они лежали на NTFS разделе, потом их скопировали на FAT32 флешку. Про файлы известно что это фотки, и где они примерно лежали.
С собой у меня был только ubuntu livecd, чего оказалось достаточно что бы восстановить большинство фоток.
Теория
Казалось бы, стер файл (или как говорят “очистил корзину” 🙂 ) и все, файла больше нет. Но если разобраться в механизме работы файловой системы, окажется что это не совсем так.
Если не вдаваться в тонкости конкретной файловой стистемы, то раздел жесткого диска делится на 2 части. В одной хранятся сами данные, во второй указатели на место, где эти данные лежат. Если бы не было второй части, то для того что бы посмотреть список файлов в папке, пришлось бы прочитать данные со всего винчестера (а для терабайтного винчестера это около 5 часов). А так, считал небольшую область размером в несколько мегабайт, и узнал список файлов. Понадобилось открыть файл, прочитал адрес где он физически лежит, и сразу начинается чтение от туда.
Вот в этом и хитрость. Когда выполняется команда на удаление файла, страется только запись во второй части, стирается только ссылка на файл. При этом сами данные остаются на месте.
Программы восстановления удаленных файлов бывают 2 типов:
1. работающие с особенностями файловой системы. Обычно дают отличный результат, восстанавливается даже имя файла.
2. независимые от сисемы, находят файлы по ключевым комбинациям байт. Тут уж как повезет. Если файл лежал одним куском, то его можно будет найти и восстановить. Если состоял из нескольких – то вторую часть будет не найти.
ntfsundelete
ntfsundelete – прога из пакета ntfsprogs.
Она есть на Ubuntu LiveCD. Прежде чем ее использовать нужно отмонтировать файловую систему. Программу нужно запускать от root.
В моих примерах ntfs на разделе /dev/sda1
Для начала просто поищем удаленные файлы.
ntfsundelete /dev/sda1
Программа выведет на экран все файлы, которые найдет, даже те, которые невозможно восстановить.
Особой пользы от файлов с 5% сохранностью данных обычно нету, поэтому найдем только целые файлы:
ntfsundelete -p 100
Вот что примерно выдает программа
nagos@nagos-desktop:~$ sudo ntfsundelete -p 100 /dev/sda1
Inode Flags %age Date Size Filename
—————————————————————
10800 FN.. 100% 2008-03-06 4050944 ntuser.tmp
10870 FR.. 100% 2008-03-06 337 TEMP7455.dbf
10874 FN.. 100% 2008-03-06 3072 TEMP7455.cdx
11172 FR.. 100% 2008-03-06 337 TEMP7457.dbf
11173 FN.. 100% 2008-03-06 3072 TEMP7457.cdx
11656 FR.. 100% 2008-03-06 337 TEMP3955.dbf
14036 FN.. 100% 2008-03-06 3072 TEMP3955.cdx
15025 FN.. 100% 2008-03-06 13999 acd97B.tmp
Файлов может быть очень много, поэтому можно отобразить только удаленные за последние 2 дня
ntfsundelete /dev/sda1 -t 2d
Первый столбик Inode – идентификатор файла. Восстановим файл 11172 (TEMP7457.dbf)
ntfsundelete /dev/sda1 -u -i 11172
Можно указать путь, куда восстанавливать файл (восстановим на нашу флешку)
ntfsundelete /dev/sda1 -u -i 11172 -d /media/flash
Если известна часть имени файла, то можно восстановить по маске
ntfsundelete /dev/sda1 -u -m “*.doc”
Ну и конечно можно восстановить все, а потом думать что нужно
ntfsundelete /dev/sda1 -u -m “*”
Программа хорошая, файлы восстанавливает качественно, со всеми атрибутами (имя, дата).
Но файлы нужно восстановить с FAT32 флешки. На диске Ubuntu я ничего не нашел, поэтому скопировал все флешки на свой переносной винчестер, и пошел домой, разбираться.
dd if=/dev/sda1 of=/media/usb-hdd
Photorec
Программа из пакета testdisk.
Сайт проекта http://www.cgsecurity.org
Testdisk – восстановление таблицы разделов, Photorec – восстановление файлов. Причем восстанавливает он их независимо от файловой системы.
Программа с псевдо-графическим интерфейсом, можно запускать из консоли.
Запускаем командой
photorec /dev/sda1
Вместо /dev/sda1 можно указать образ флешки.
Делаем все по инструкции на экране, ничего сложного. Можно выбрать файлы каких типов восстанавливать. Вот список поддерживаемых форматов.
Уничтожение данных
Неприятно что кто то может взять твою флешку на 2 минуты, скопировать себе и потом найти на ней твою коллекцию порнографии или еще хуже пароли от интернета, которые ты туда скопировал месяц назад и сразу удалил.
Надежный способ уничтожить данные – программка shred (из пакета coreutils, стоит у всех)
Пользоваться ей очень просто
shred secret_file.jpg
и все, файл заполнится случайными байтами 25 раз (по умолчанию). Файл полностью испорчен, но не удален. Можно уничтожить содержимое и удалить.
shred -u secret_file.jpg
Если нужно сделать что то глобальное, то можно затереть и весь винчестер с таблицей разделов и всеми файловыми системами
shred /dev/sda
Отсюда выводы:
Фалы с ntfs лучше восстанавливать ntfsundelete
С других систем photorec
Свои флешки периодически нужно стирать полностью.