27.11.2014 Views

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

unixoid<br />

СТРУКТУРА КАТАЛОГА В EXT2/3<br />

INFO<br />

info<br />

• Для исследования<br />

файловой системы<br />

ext2 необязательно<br />

использовать<br />

стандартную утилиту<br />

debugfs. Есть более<br />

дружественная<br />

и наглядная<br />

альтернатива под<br />

названием LDE<br />

(Linux Disk Editor, lde.<br />

sourceforge.net).<br />

• Файловая система<br />

ext2 была спроектирована<br />

по образу<br />

и подобию UFS (Unix<br />

File System), поэтому<br />

ты легко вникнешь<br />

в тему, если захочешь<br />

разобраться в особенностях<br />

восстановления<br />

файлов<br />

в BSD-системах.<br />

• Существует<br />

множество утилит,<br />

автоматизирующих<br />

процесс восстановления<br />

данных<br />

в файловых системах<br />

ext2 и ext3, наиболее<br />

функциональные из<br />

которых: TestDisk<br />

(www.cgsecurity.<br />

org/wiki/TestDisk),<br />

undelete (www.stud.<br />

tu-ilmenau.de/~mojo/<br />

undelete.html) и<br />

sleuthkit (www.<br />

sleuthkit.org).<br />

084<br />

что дает право другим файлам использовать их для хранения<br />

своей информации. Освобождается и сам inode, но опасность<br />

его повторного использования другим файлом очень<br />

низка в силу большого резерва файловых дескрипторов,<br />

которые будут задействованы в первую очередь. Получается,<br />

что для восстановления удаленного файла в файловой<br />

системе ext2 достаточно узнать номер его inode, прочитать<br />

и распутать вереницу массивов ссылок на блоки данных, а<br />

затем собрать из них файл!<br />

С файловой системой ext3 все намного сложнее: ее драйвер<br />

очищает массив ссылок на блоки (i_block), так что файл<br />

придется собирать по кусочкам, разыскивая блоки по всей<br />

файловой системе.<br />

В СТРАНЕ МЕРТВЫХ<br />

Чтобы избежать перезаписи блоков удаленного файла, восстановление<br />

следует начать с немедленного размонтирования<br />

раздела. Если же файл находился на корневом разделе,<br />

лучшее средство — кнопка RESET на системном блоке и<br />

последующая загрузка с LiveCD.<br />

Для низкоуровневой навигации по файловой системе<br />

необязательно использовать шестнадцатеричный редактор,<br />

существует несколько утилит, которые облегчают этот процесс.<br />

Одна из них — стандартная команда debugfs из пакета<br />

e2fsprogs.<br />

Запусти ее с указанием раздела, содержащего подопытную<br />

файловую систему:<br />

$ debugfs /dev/sda1<br />

Откроется командная строка, которая принимает множество<br />

команд. Набери help, чтобы увидеть их. Наиболее интересные<br />

для нас команды: lsdel, stat, cat и dump. Команда lsdel<br />

показывает все удаленные inode. Выполни ее:<br />

debugfs: lsdel<br />

Скорее всего, список будет очень длинным, поэтому лучше<br />

сразу перенаправить его в файл:<br />

$ echo lsdel | debugfs /dev/sda1 > /tmp/lsdel.<br />

out<br />

Открой полученный файл и попытайся найти разыскиваемого<br />

по времени удаления, размеру, владельцу и другим<br />

данным. Запомни номер его inode и выполни команду stat в<br />

командной строке debugfs:<br />

debugfs: stat <br />

На экране появится вся информация об inode (номер,<br />

тип, владелец, время создания и удаления и пр.). В<br />

конце вывода будет присутствовать информация о<br />

блоках, занимаемых файлом на диске, и их количество.<br />

На основе этих данных можно восстановить любой<br />

файл, воспользовавшись командой dd в качестве<br />

инструмента. Но есть более простой способ. Команда<br />

dump делает снимок всех блоков, принадлежащих<br />

указанному inode, и записывает их в указанный файл.<br />

Попробуй:<br />

debugfs: dump -p /tmp/âîññòàíîâëåííûé_ôàéë<br />

Ключ ‘-p’ сохраняет за файлом прежние права доступа, владельца<br />

и группу. Имя файла придется подобрать по памяти,<br />

оно хранилось в каталоге и было затерто во время удаления.<br />

Если ты ищешь текстовый файл, то для полной уверенности<br />

лучше сначала выполни команду cat над inode, которая<br />

выведет содержимое файла прямо на экран:<br />

debugfs: cat <br />

Чтобы идентифицировать файл после его восстановления,<br />

можешь применить утилиты file и strings. Первая покажет<br />

тип файла, а вторая выведет на экран все читаемые строки,<br />

которые он содержит.<br />

Для восстановления утраченных файлов необязательно<br />

делать их дамп в существующую файловую систему, — можно<br />

изменить саму inode-таблицу. Сделать это просто. Открываем<br />

дисковый раздел (или его снимок) в режиме записи:<br />

# debugfs -w /dev/sda1<br />

Находим описанным выше способом inode удаленного файла<br />

и открываем его на редактирование:<br />

debugfs: mi <br />

Команда mi расшифровывается как «modify inode» и предназначена<br />

для ручного редактирования inode. Она выводит<br />

на экран все поля inode и их текущие значения, заключенные<br />

в квадратные скобки. Курсор будет останавливаться<br />

у каждого поля, ожидая ввода нового значения, которое<br />

можно пропустить, нажав . Нас интересует только два<br />

поля: время удаления (Deletion time) и количество ссылок<br />

(Link count). Первое следует обнулить, а второму присвоить<br />

значение 1. Так мы вернем мертвый файл к жизни, но введем<br />

файловую систему в скомпрометированное состояние: файл<br />

есть, но найти его невозможно (запись каталога, содержащая<br />

его имя и ссылку на inode, уже затерта). С точки зрения<br />

файловой системы это ошибка, которая дает нам два варианта<br />

последующих действий.<br />

Мы можем запустить fsck, который найдет несоответствия в<br />

файловой системе и исправит их, поместив наших призраков<br />

в каталог lost+found:<br />

# e2fsck -f /dev/sda1<br />

Или же воспользоваться методом прямого вмешательства:<br />

создать жесткую ссылку на файл, используя команду link<br />

утилиты debugfs:<br />

debugfs: link âîññòàíîâëåííûé_ôàéë<br />

Восстановленный файл появится в текущем каталоге. Однако<br />

команду e2fsck придется запустить и в этом случае, потому<br />

как закрепленные за файлом блоки до сих пор помечены как<br />

неиспользуемые.<br />

КАК БЫТЬ С EXT3?<br />

Как мы уже упоминали, Linux-драйвер ext3 использует<br />

другой механизм разлинковки. Он затирает всю таблицу<br />

соответствия в inode, делая процесс восстановления<br />

данных чрезвычайно трудным, если не сказать невозможным.<br />

Но попробуем мыслить логически. Файл представляет<br />

собой последовательность блоков определенного<br />

размера, разбросанных по всему жесткому диску. У<br />

каждого типа файла есть набор признаков, по которым<br />

XÀÊÅÐ 07 /127/ 09

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!