Чтение онлайн

на главную - закладки

Жанры

Восстановление данных. Практическое руководство
Шрифт:

struct ufs2_dinode {

/* 0x00 */ u_int16_t di_mode; /* 0: IFNT, права доступа; */

/* см. ниже */

/* 0x02 */ int16_t di_nlink; /* 2: Счетчик ссылок */

/* 0x04 */ u_int32_t di_uid; /* 4: Владелец файла */

/* 0x08 */ u_int32_t di_gid; /* 8: Группа файла */

/* 0x0C */ u_int32_t di_blksize; /* 12: Размер блока Inode */

/* 0x10 */ u_int64_t di_size; /* 16:
Счетчик байтов файла */

/* 0x18 */ u_int64_t di_blocks; /* 24: Практически занятые байты */

/* 0x20 */ ufs_time_t di_atime; /* 32: Время последнего доступа */

/* 0x28 */ ufs_time_t di_mtime; /* 40: Время последней */

/* модификации */

/* 0x30 */ ufs_time_t di_ctime; /* 48: Время последнего */

/* изменения inode */

/* 0x38 */ ufs_time_t di_birthtime; /* 56: Время создания Inode */

/* 0x40 */ int32_t di_mtimensec; /* 64: Время последней */

/* модификации */

/* 0x44 */ int32_t di_atimensec; /* 68: Время последнего доступа */

/* 0x48 */ int32_t di_ctimensec; /* 72: Время последнего доступа */

/* 0x4C */ int32_t di_birthnsec; /* 76: Время создания Inode */

/* 0x50 */ int32_t di_gen; /* 80: Номер генерации */

/* 0x54 */ u_int32_t di_kernflags; /* 84: Флаги ядра */

/* 0x58 */ u_int32_t di_flags; /* 88: Флаги статуса (chflags) */

/* 0x5C */ int32_t di_extsize; /* 92: Блок внешних атрибутов */

/* 0x60 */ ufs2_daddr_t di_extb[NXADDR]; /* 96: Блок внешних атрибутов */

/* 0x70 */ ufs2_daddr_t di_db[NDADDR]; /* 112: Непоср. дисковые блоки */

/* 0xD0 */ ufs2_daddr_t di_ib[NIADDR]; /* 208: Косв. дисковые блоки */

/* 0xE8 */ int64_t di_spare[3]; /* 232: Зарезервировано */

};

Имена файлов хранятся в каталогах (рис. 8.12). В индексных дескрипторах их нет. С точки зрения UFS, каталоги являются файлами особого типа и могут храниться по любому адресу, принадлежащему группе цилиндров. Файловая система UFS поддерживает несколько типов хеширования каталогов, однако на структуре хранения имен это никак не отражается. Имена хранятся в блоках, называемых

DIRBLKSIZ
, в структурах типа
direct
, выровненных по 4-х байтной границе.

Рис. 8.12. Хранение имен

файлов и каталогов

Структура

direct
определена в файле /src/ufs/ufs/dir.h (листинг 8.11) и содержит: номер inode, описывающий данный файл, тип файла, его имя, а также длину самой структуры
direct
, используемую для нахождения следующей структуры этого типа в блоке.

Листинг 8.11. Структура

direct
, отвечающая за хранение имен файлов и каталогов

struct direct {

/* 0x00 */ u_int32_t d_ino; /* Номер inode данной записи */

/* 0x04 */ u_int16_t d_reclen; /* Длина данной записи */

/* 0x06 */ u_int8_t d_type; /* Тип файла, см. ниже */

/* 0x07 */ u_int8_t d_namlen; /* Длина строки в d_name */

/* 0x08 */ char d_name[MAXNAMLEN + 1]; /* Имя с длиной <= MAXNAMLEN */

};

На этом описание файловой системы UFS можно считать законченным. Для ручного восстановления данных приведенной информации вполне достаточно.

На развалинах империи

При удалении файла на разделе UFS происходят следующие события (они перечислены в порядке расположения соответствующих структур в разделе и могут не совпадать с порядком их возникновения).

? В суперблоке обновляется поле

fs_time
(время последнего доступа к разделу).

? В суперблоке обновляется структура

fs_cstotal
(количество свободных inode и блоков данных в разделе).

? В группе цилиндров обновляются карты занятых inode и блоков данных. Inode и все блоки данных удаляемого файла помечаются как освобожденные.

? В inode родительского каталога обновляются поля времени последнего доступа и времени последней модификации.

? В inode родительского каталога обновляется поле времени последнего изменения inode.

? В inode удаляемого файла обнуляются поля

di_mode
(IFMT, права доступа),
di_nlink
(количество ссылок на файл) и
di_size
(размер файла).

? В inode удаляемого файла затираются нулями поля

di_db
(массив указателей на 12 первых блоков файла) и
di_ib
(указатель на блок косвенной адресации).

? В inode удаляемого файла обновляются поля времени последней модификации и последнего изменения inode, время последнего доступа при этом остается неизменным.

? В inode удаляемого файла обновляется поле

di_spare
. В исходных текстах оно помечено как зарезервированное, но просмотр дампа показывает, что это не так. Судя по всему, здесь хранится нечто вроде последовательности обновления (update sequence), используемой для контроля целостности inode. Однако это только мое предположение.

Поделиться:
Популярные книги

Назад в СССР 5

Дамиров Рафаэль
5. Курсант
Фантастика:
попаданцы
альтернативная история
6.64
рейтинг книги
Назад в СССР 5

Убивать чтобы жить 9

Бор Жорж
9. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 9

Аргумент барона Бронина 3

Ковальчук Олег Валентинович
3. Аргумент барона Бронина
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Аргумент барона Бронина 3

Затерянные земли или Великий Поход

Михайлов Дем Алексеевич
8. Господство клана Неспящих
Фантастика:
фэнтези
рпг
7.89
рейтинг книги
Затерянные земли или Великий Поход

Кодекс Крови. Книга ХI

Борзых М.
11. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХI

Орден Багровой бури. Книга 1

Ермоленков Алексей
1. Орден Багровой бури
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Орден Багровой бури. Книга 1

Идеальный мир для Лекаря 25

Сапфир Олег
25. Лекарь
Фантастика:
фэнтези
юмористическое фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 25

Отмороженный

Гарцевич Евгений Александрович
1. Отмороженный
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Отмороженный

Законы Рода. Том 10

Flow Ascold
10. Граф Берестьев
Фантастика:
юмористическая фантастика
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 10

Имя нам Легион. Том 2

Дорничев Дмитрий
2. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 2

Возрождение Феникса. Том 2

Володин Григорий Григорьевич
2. Возрождение Феникса
Фантастика:
фэнтези
попаданцы
альтернативная история
6.92
рейтинг книги
Возрождение Феникса. Том 2

Убивать чтобы жить 5

Бор Жорж
5. УЧЖ
Фантастика:
боевая фантастика
космическая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 5

Безумный Макс. Ротмистр Империи

Ланцов Михаил Алексеевич
2. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
4.67
рейтинг книги
Безумный Макс. Ротмистр Империи

Санек 2

Седой Василий
2. Санек
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Санек 2