Выбрать главу

Естественно, у читателя есть возможность сделать все вручную, но для этого потребуется затратить много усилий. Как уже говорилось, читатель может вручную сделать копии всего, что может быть изменено (все файлы на диске в директории или на всем диске), дождаться момента изменений и затем проверить, были ли изменены файлы.

Очевидно, что так можно сделать, но на это уйдет больше времени и труда, чем если бы читатель поступил по-другому. Хотя в отдельных случаях ручное сравнение – лучший способ исследования. Например, при исследовании реестра Windows (Windows Registry – иерархическая база данных, хранящая информацию о конфигурации компьютера и об аппаратном и программном обеспечении; организована в структуру поддеревьев с ключами и подключами) может получиться так, что на исследуемой машине не окажется инструментальных средств контроля нужной части реестра. В то же время утилита Regedit почти всегда доступна. Она позволяет экспортировать реестр Windows в текстовый файл. В других случаях, при необходимости отбора нескольких файлов среди ряда дополнительных, поиск различий на всем диске может оказаться предпочтительным для первоначальной локализации файла, представляющего интерес. Иногда метод грубой силы может оказаться привлекательнее тонких методов исследования, особенно если на их подготовку потребуется дополнительное время.

Сравнение атрибутов файла

Один из методов поиска модифицированных файлов, позволяющих избежать копирования файлов, основан на использовании их атрибутов. К атрибутам файла относятся дата, время создания и модификации файла и разрешения работы с ним. Некоторые из них могут оказаться полезными для определения только что измененных файлов.

Ниже представлен уместный фрагмент кода файла ext2_fs.h инсталляции Red Hat 6.2 Linux:

/*

* Structure of an inode on the disk

*/

struct ext2_inode {

__u16 i_mode; /* File mode */

__u16 i_uid; /* Owner Uid */

__u32 i_size; /* Size in bytes */

__u32 i_atime; /* Access time */

__u32 i_ctime; /* Creation time */

__u32 i_mtime; /* Modification time */

__u32 i_dtime; /* Deletion Time */

__u16 i_gid; /* Group Id */

__u16 i_links_count; /* Links count */

__u32 i_blocks; /* Blocks count */

__u32 i_flags; /* File flags */

В большинстве UNIX-систем атрибуты файла описаны похожим способом. В их состав входят владелец, размер, несколько полей времени и даты, группа, счетчик связей этого файла, число используемых блоков диска и флаги файла (стандартные разрешения чтения, записи и выполнения файлов). Какие атрибуты интересны для нас? В большинстве случаев это один из атрибутов времени и размер файла. Любой из них может быть определен переадресовыванием вывода команды ls – al в файл до и после наступления анализируемого события с последующим сравнением двух файлов, как это показано в следующем примере:

[elliptic@ellipse]$ diff /tmp/before /tmp/after

2,3c2,3

< drwxrwxr-x 2 ryan ryan 7168 Jun 16 01:55 .

< drwxrwxrwt 9 root root 1024 Jun 16 01:55 ..

> drwxrwxr-x 2 ryan ryan 7168 Jun 16 01:56 .

> drwxrwxrwt 9 root root 1024 Jun 16 01:56 ..

97c97

< -rw-r—r– 1 ryan ryan 31533 Jun 16 01:55 fs.h

> -rw-r—r– 1 ryan ryan 31541 Jun 16 01:56 fs.h

Из примера видно, что файл fs.h изменился. Этот способ сравнения содержимого директории обнаруживает изменение любого атрибута файла. Быстрый способ простого отслеживания изменения атрибута времени заключается в использовании команды ls – al, показанной в следующем примере. Команда ls – al в примере соединена программным каналом с командой more:

[elliptic@ellipse]$ ls -alt | more

total 2224

drwxrwxrwt 9 root root 1024 Jun 16 01:56 ..

drwxrwxr-x 2 ryan ryan 7168 Jun 16 01:56 .

-rw-r—r– 1 ryan ryan 31541 Jun 16 01:56 fs.h

-rw-r—r– 1 ryan ryan 7295 Jun 16 01:55 a.out.h

-rw-r—r– 1 ryan ryan 2589 Jun 16 01:55 acct.h

-rw-r—r– 1 ryan ryan 4620 Jun 16 01:55 adfs_fs.h

…и т. д. Файлы, модифицированные последними, выводятся первыми. В DOS/Windows команда dir /o: d позволяет отсортировать список выводимых файлов по дате, как это показано в следующем примере:

C:\date>dir /o:d

Volume in drive C has no label

Volume Serial Number is 3C3B-11E3

Directory of C:\date

HEX-EDIT EXE 58,592 03-14-95 9:51p Hex-edit.exe

HEXEDI~1 GZ 165,110 06-05-00 11:44p hexedit-0_9_7_tar.gz

HEXEDIT EXE 158,208 06-06-00 12:04a hexedit.exe

. <DIR> 06-16-00 12:18a .

.. <DIR> 06-16-00 12:18a ..

3 file(s) 381,910 bytes

2 dir(s) 10,238.03 MB free

В этом случае последние модифицированные файлы помещены в конец отчета. Использование атрибута «Архивный» Расскажем о небольшой уловке, доступной пользователям DOS/Windows. Таблица размещения файлов (FAT – file allocation table) содержит атрибут файла «Архивный». Первоначально атрибут предназначался для определения факта изменения файла после последнего резервного копирования. В случае модификации файла этот атрибут свидетельствовал о необходимости создания очередной архивной копии файла. Конечно, после модификации файлов этим атрибутом можно воспользоваться для собственных целей. Посмотрите на пример просмотра директории с помощью команды attrib: