ДонНТУ   Портал магистров

Реферат по теме выпускной работы


Содержание

Введение

Важной задачей системного программиста является углубленный анализ структур файловых систем, в частности операционная система Linux [24]. Файловая система ext4, являясь эволюционным развитием ext3 и стандартом де-факто для многих дистрибутивов Linux, обеспечивает высокую устойчивость к сбоям, поддержку больших томов и файлов, а также экстентов для сокращения фрагментации. Однако ее внутренняя структура, включающая суперблоки, групповые дескрипторы, битовые карты и индексные дескрипторы, обладает значительной сложностью, что затрудняет ручной анализ.

Развитие кроссплатформенных фреймворков, таких как Qt, языков программирования (C++, Python) и увеличение вычислительной мощности массовых устройств создали предпосылки для создания специализированных инструментов анализа, которые должны способствовать глубокому исследованию структур файловой системы, автоматизации диагностических процедур и повышению удобства работы специалистов по восстановлению данных и системных администраторов.

1. Актуальность темы

Известен ряд утилит для работы с ext4 (e2fsprogs, debugfs), однако они, как правило, являются консольными, ориентированными на конкретную платформу и требуют от пользователя глубокого знания внутреннего устройства файловой системы. Существующие графические инструменты часто обладают ограниченной функциональностью, не предоставляя целостной визуализации метаданных и их взаимосвязей.

Магистерская работа посвящена актуальной научно-практической задаче разработки кроссплатформенного приложения для исследования файловой системы ext4, которое интегрирует возможности низкоуровневого анализа метаданных с современным графическим интерфейсом, обеспечивающим наглядность и удобство работы. В качестве целевой платформы рассматриваются операционные системы семейства Linux, непосредственно во время написания диссертации использовалась операционная система отечественного производства Astra Linux, что позволяет разработать и протестировать приложение на наиболее успешно внедряемой отечественной ОС, а также охватить широкую аудиторию пользователей.

Данная работа обладает значительной актуальностью в образовательных целях, поскольку предметы, связанные с системным программированием, традиционно ориентированы на ОС Windows, в то время как стратегическим направлением развития является внедрение и изучение отечественной программной продукции, основанной на ядре Linux. Этот факт подчеркивает важность изучения ключевой файловой системы данных операционных систем. Инструментальными средствами реализации выступают фреймворк Qt [18] для языка Python [20], обеспечивающий нативную производительность и кроссплатформенность, что соответствует современным тенденциям разработки программного обеспечения.

2. Цель и задачи исследования, планируемые результаты

Целью исследования является развитие методологии анализа файловой системы ext4.

Основные задачи исследования:

  1. Анализ формата и структур метаданных файловой системы ext4 (суперблок, групповые дескрипторы, индексные дескрипторы, битовые карты, экстенты, журнал).
  2. Анализ существующих программных решений для анализа ext4 и оценка их функциональных возможностей и ограничений.
  3. Разработка архитектуры кроссплатформенного приложения, включающей модули для низкоуровневого чтения данных, парсинга структур, визуализации и формирования отчетов.
  4. Реализация ядра приложения, обеспечивающего чтение и декодирование метаданных ext4 с учетом особенностей разных версий и опций формата.
  5. Создание графического интерфейса пользователя, предоставляющего интуитивно понятные средства навигации по структурам файловой системы и визуализации их состояния, включая вывод содержимого блоков данных.

Объект исследования: файловая система ext4.

Предмет исследования: методы программного анализа файловой системы ext4.

Планируемые результаты:

  1. Дальнейшее развитие методологии анализа метаданных ext4, адаптированной для реализации в кроссплатформенной среде.
  2. Создание прототипа приложения с поддержкой основных функций: просмотр суперблока, дескрипторов групп, карты индексных дескрипторов и блоков, навигации по директориям и файлам через их индексные дескрипторы.
  3. Реализация механизма визуализации распределения занятых и свободных блоков/инодов.
  4. Разработка модуля для анализа структур inode и вывода содержимого блоков данных.
  5. Создание системы интерактивного исследования связей между структурными элементами файловой системы.

3. Обзор исследований и разработок

Поскольку файловая система ext4 является критически важным компонентом современной ИТ-инфраструктуры, проблемы ее анализа, восстановления данных и повышения производительности активно исследуются как международным научным сообществом, так и отечественными специалистами. Вопросам создания инструментов для низкоуровневого взаимодействия с файловыми системами также посвящен ряд работ, в основном, исследователей западной школы.

3.1 Обзор международных источников

Фундаментальные принципы организации файловых систем, включая UFS, FFS и их преемников, подробно изложены в классических трудах М. Маккусика и Дж. Ньювилла [1], где детально разбираются механизмы инодов, косвенной адресации и управления свободным пространством. Э. Таненбаум в своей работе [2] предоставляет систематизированный обзор архитектур различных файловых систем. Непосредственно спецификации файловых систем семейства ext, их эволюция и ключевые особенности, такие как экстенты, отложенное выделение блоков и многоаллоки в ext4, детально описаны в работах основного разработчика Тэодор Тсо [3] и в официальной документации проекта Linux [4, 22, 25].

Анализ существующих инструментов показывает, что пакет e2fsprogs` [5], включающий `debugfs` и `dumpe2fs`, является стандартом де-факто для администрирования и отладки ext2/3/4. Его исходный код служит не только практическим инструментом, но и ценным ресурсом для понимания алгоритмов взаимодействия с файловой системой. Исследования в области восстановления данных и цифровой криминалистики для ext4 освещены в фундаментальном труде Кэрриэра [6], где рассматриваются передовые методы реконструкции файлов по остаточным метаданным. Вопросам производительности и надежности ext4 в условиях высокой нагрузки, особенно в сравнении с файловыми системами следующего поколения, посвящены исследования таких авторов, как Мэтьюр и др. [15], где проводится всесторонний бенчмаркинг и анализ узких мест.

Эволюция исследований файловой системы Ext4 [19] охватывает как фундаментальные архитектурные улучшения, так и прикладные аспекты её работы в современных средах. Ещё на раннем этапе развития Ext4 исследователи, такие как Акира Фуджита, анализировали ключевые архитектурные решения, заложенные в её основу: механизм отложенного выделения блоков для повышения производительности, работу с экстентами вместо традиционных блоковых карт, а также стратегии распределения пространства, которые в значительной степени определили её надёжность и эффективность [16].Параллельно, для обеспечения межплатформенной совместимости, активно развиваются проекты с открытым кодом, основанные на архитектуре FUSE (Filesystem in Userspace) [17] — интерфейсе, позволяющем программам в пользовательском пространстве экспортировать файловые системы в ядро Linux. Проект FUSE состоит из двух ключевых компонентов: модуля ядра fuse (поддерживаемого в основных репозиториях ядра) и пользовательской библиотеки libfuse, которая предоставляет эталонную реализацию для взаимодействия с этим модулем. Такие реализации позволяют осуществлять доступ к разделам Ext4 из-под Windows и macOS.

3.2 Обзор национальных источников

В Российской Федерации вопросам анализа и защиты данных, а также созданию системного программного обеспечения уделяется значительное внимание в ведущих технических вузах и научных центрах. В Московском государственном университете им. М.В. Ломоносова (МГУ) и Московском физико-техническом институте (МФТИ) ведутся фундаментальные исследования в области распределенных систем хранения данных. Работы профессора А.В. Терехова [7] посвящены методам верификации системного программного обеспечения, что имеет прямое отношение к обеспечению надежности инструментов для низкоуровневого анализа таких сложных структур, как файловая система ext4.

В Санкт-Петербургском национальном исследовательском университете информационных технологий, механики и оптики (ИТМО) активно развиваются направления, связанные с кибербезопасностью и компьютерной криминалистикой. Исследования под руководством профессора С.В. Зегжды [8] включают разработку методов и инструментов для анализа дисковых образов и восстановления данных, что непосредственно перекликается с функциональными требованиями к разрабатываемому приложению.

3.3 Обзор существующих программных решений

Проведенный анализ рынка программного обеспечения выявил ряд решений, в той или иной степени решающих задачи анализа файловых систем. Среди консольных утилит безусловным лидером является пакет `e2fsprogs` [5], однако он не предоставляет графического интерфейса и требует высокой квалификации пользователя.

Из коммерческих продуктов с графическим интерфейсом можно выделить R-Studio [10] и UFS Explorer [11]. Эти решения обладают широкой функциональностью для восстановления данных и поддерживают множество файловых систем, включая ext4. Однако они являются проприетарными, имеют высокую стоимость и их архитектура не предполагает глубокой кастомизации или использования в качестве библиотеки.

Среди открытых аналогов можно отметить приложение `disktype` [12] и библиотеку `The Sleuth Kit` [13]. `Disktype` предоставляет возможности определения типа файловой системы, но не подходит для детального анализа ее структур. `The Sleuth Kit` является мощной библиотекой для криминалистического анализа, но также не имеет законченного графического интерфейса и требует интеграции в другие продукты (например, через Autopsy [14]).

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

4. Подход к разработке кроссплатформенного приложения для исследования ext4

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

4.1 Теоретические основы и практическая реализация

4.1.1 Иерархия метаданных ext4 и ее отражение в коде

Файловая система ext4 организована как многоуровневая структура метаданных, начинающаяся с суперблока - основной структуры, содержащей глобальную информацию о файловой системе [9]. Суперблок располагается в фиксированной позиции (смещение 1024 байта) и дублируется в нескольких группах блоков для повышения отказоустойчивости.

Практически это реализовано в функции sup_block_read(), которая читает суперблок и парсит его структуру:

def sup_block_read(dev: str) -> Union[dict, None]:
    with open(dev, 'rb') as disk:
        disk.seek(1024)
        superblock_data = disk.read(1024)
    
    format_string = 'IIIIIIIIIIIIHHHHHHIIIIIHHHIHHI'
    unpacked_data = struct.unpack(format_string, superblock_data[1024:1122])
    
    # Извлечение необходимых параметров
    block_size = 1024 << unpacked_data[6]
    return {
        's_inodes_count': unpacked_data[0],
        's_blocks_count_lo': unpacked_data[1],
        's_blocks_per_group': unpacked_data[8],
        's_inodes_per_group': unpacked_data[10],
        's_inode_size': unpacked_data[26],
        'block_size': block_size
    }

Листинг 1 – Чтение и парсинг суперблока ext4

4.1.2 Групповая организация и ее обработка в приложении

Пространство ext4 разделено на группы блоков, каждая из которых содержит собственную управляющую структуру. Групповые дескрипторы, следующие непосредственно за суперблоком, содержат указатели на критические области: битовые карты занятости блоков и inode, таблицы inode группы [23].

Теория групповой организации нашла практическое воплощение в функции read_group_descriptors():

def read_group_descriptors(dev: str, first_data_block: int, 
                          blocks_per_group: int, block_size: int):
    # Вычисление смещения дескрипторов
    descriptors_offset = (first_data_block + 1) * block_size
    
    with open(dev, 'rb') as disk:
        disk.seek(descriptors_offset)
        for group_num in range(groups_count):
            descriptor_data = disk.read(64)  # Размер ext4_group_desc
            
            descriptor = {
                'group_num': group_num,
                'bg_block_bitmap': int.from_bytes(descriptor_data[0:4], 'little'),
                'bg_inode_bitmap': int.from_bytes(descriptor_data[4:8], 'little'),
                'bg_inode_table': int.from_bytes(descriptor_data[8:12], 'little'),
            }

Листинг 2 – Чтение групповых дескрипторов

4.1.3 Механизм адресации inode и его реализация

Система нумерации inode в ext4 основана на комбинации групповой индексации и относительного смещения. Теоретический механизм адресации inode реализован в функции get_inode_table_location():

def get_inode_table_location(descriptors, inode_num, inodes_per_group, 
                           inode_size, block_size, first_data_block):
   
    group_num = (inode_num - 1) // inodes_per_group
    
    # Практическая реализация расчета позиции
    index_in_group = (inode_num - 1) % inodes_per_group
    inode_table_start_block = descriptors[group_num]['bg_inode_table']
    offset_in_table = index_in_group * inode_size
    
    # Вычисление абсолютной позиции
    inode_block = inode_table_start_block + (offset_in_table // block_size)
    inode_offset = offset_in_table % block_size
    absolute_position = inode_block * block_size + inode_offset
    
    return {
        'group_num': group_num,
        'inode_block': inode_block,
        'absolute_position': absolute_position
    }

Листинг 3 – Алгоритм расчета положения inode

4.2 Архитектура приложения

Графический интерфейс кроссплатформенного приложения для анализа ext4 приведен на рисунке 1.

Графический интерфейс приложения

Рисунок 1 – Графический интерфейс кроссплатформенного приложения для анализа ext4

4.2.1 Трехуровневая архитектура в реализации

Теоретическая концепция трехуровневой архитектуры реализована через четкое разделение ответственности:

4.2.2 Реализация кроссплатформенности

Теоретический принцип абстракции реализован через условное выполнение кода в зависимости от ОС:

def get_block_device(mount_point: str) -> Union[str, None]:
    """Абстракция для получения устройства по точке монтирования"""
    try:
        partitions = psutil.disk_partitions()
        for part in partitions:
            if part.mountpoint == mount_point:
                return part.device
        return None
    except Exception as e:
        print(f"Ошибка при получении устройства: {e}")
        return None

# В основном коде приложения:
if os.name == 'posix':
    # Linux-специфичные операции
    device_path = get_block_device(mount_point)
    superblock = sup_block_read(device_path)
else:
    # Универсальная обработка для других ОС
    show_message("Расширенный анализ доступен только на Linux")

Листинг 4 – Кроссплатформенная абстракция доступа к устройствам

4.2.3 Обработка ошибок и исключительных ситуаций

Теоретическая концепция отказоустойчивость реализована через многоуровневую обработку ошибок:

def read_inode(dev: str, inode_location: Dict[str, int], 
               inode_size: int, block_size: int) -> Union[Dict, None]:
    try:
        with open(dev, 'rb') as disk:
            disk.seek(inode_location['absolute_position'])
            inode_data = disk.read(inode_size)
            
            if len(inode_data) < 128:
                print(f"Недостаточно данных: {len(inode_data)} < 128")
                return None
            
            # Парсинг структуры inode с обработкой ошибок
            try:
                fmt1 = '<HHIIIIIHHII'
                fields1 = struct.unpack(fmt1, inode_data[:44])
                # обработка полей inode
            except struct.error as e:
                return {'raw_data': inode_data.hex(), 'error': str(e)}
                
    except PermissionError:
        print("Недостаточно прав для чтения устройства")
        return None
    except Exception as e:
        print(f"Общая ошибка чтения inode: {e}")
        return None

Листинг 5 – Многоуровневая обработка ошибок

4.3 Анализ существующего решения и направления развития

4.3.1 Достигнутые результаты реализации

Разработанный прототип успешно демонстрирует работоспособность предложенного подхода и обеспечивает:

4.3.2.1 Углубленная обработка групповых дескрипторов

Текущая реализация чтения групповых дескрипторов требует расширения для полного анализа всех полей структуры:

def read_enhanced_group_descriptors(dev: str, block_size: int) -> List[dict]:
    """Расширенное чтение групповых дескрипторов со всеми полями"""
    descriptors = []
    
    with open(dev, 'rb') as disk:
        # Чтение с учетом всех 64 байт структуры ext4_group_desc
        descriptor_data = disk.read(64)
        
        enhanced_descriptor = {
            'bg_block_bitmap_lo': struct.unpack('<I', descriptor_data[0:4])[0],
            'bg_inode_bitmap_lo': struct.unpack('<I', descriptor_data[4:8])[0],
            'bg_inode_table_lo': struct.unpack('<I', descriptor_data[8:12])[0],
            'bg_free_blocks_count_lo': struct.unpack('<H', descriptor_data[12:14])[0],
            'bg_free_inodes_count_lo': struct.unpack('<H', descriptor_data[14:16])[0],
            'bg_used_dirs_count_lo': struct.unpack('<H', descriptor_data[16:18])[0],
            'bg_flags': struct.unpack('<H', descriptor_data[18:20])[0],
            'bg_exclude_bitmap_lo': struct.unpack('<I', descriptor_data[20:24])[0],
            'bg_block_bitmap_csum_lo': struct.unpack('<H', descriptor_data[24:26])[0],
            'bg_inode_bitmap_csum_lo': struct.unpack('<H', descriptor_data[26:28])[0],
            'bg_itable_unused_lo': struct.unpack('<H', descriptor_data[28:30])[0],
            'bg_checksum': struct.unpack('<H', descriptor_data[30:32])[0],
        }
        
        descriptors.append(enhanced_descriptor)
    
    return descriptors

Листинг 6 – Расширенная обработка групповых дескрипторов

4.3.2.2 Полный анализ структур inode

Требуется реализация полного парсинга всех полей структуры ext4_inode с учетом различных типов файлов:

def parse_complete_inode(inode_data: bytes) -> Dict:
    """Полный парсинг структуры ext4_inode"""
    if len(inode_data) < 160:
        return {'error': 'Недостаточно данных для inode'}
    
    inode_info = {}
    

    inode_info['i_mode'] = struct.unpack('<H', inode_data[0:2])[0]
    inode_info['i_uid'] = struct.unpack('<H', inode_data[2:4])[0]
    inode_info['i_size_lo'] = struct.unpack('<I', inode_data[4:8])[0]
    inode_info['i_atime'] = struct.unpack('<I', inode_data[8:12])[0]
    inode_info['i_ctime'] = struct.unpack('<I', inode_data[12:16])[0]
    inode_info['i_mtime'] = struct.unpack('<I', inode_data[16:20])[0]
    
    # Блоки данных (60 байт)
    inode_info['i_block'] = list(struct.unpack('<15I', inode_data[40:100]))
    
    # Анализ типа файла на основе i_mode
    file_type = analyze_file_type(inode_info['i_mode'])
    inode_info['file_type'] = file_type
    
    return inode_info

def analyze_file_type(i_mode: int) -> str:
    """Анализ типа файла на основе поля i_mode"""
    file_type_mask = i_mode & 0xF000
    
    type_mapping = {
        0x8000: 'Обычный файл',
        0x4000: 'Каталог', 
        0xA000: 'Символическая ссылка',
        0x6000: 'Блочное устройство',
        0x2000: 'Символьное устройство',
        0x1000: 'FIFO',
        0xC000: 'Сокет'
    }
    
    return type_mapping.get(file_type_mask, 'Неизвестный тип')

Листинг 7 – Полный анализ структур inode

4.3.2.3 Чтение и вывод содержимого блоков данных

Критически важное направление развития - реализация чтения и интерпретации содержимого блоков данных, на которые ссылаются inode:

4.3.3 План реализации улучшений

Для систематического развития приложения предлагается следующий план реализации:

  1. Углубление анализа дескрипторов:
    • реализация полного парсинга всех полей групповых дескрипторов;
    • добавление проверок целостности и согласованности данных;
    • визуализация распределения групп по устройству.
  2. Расширение анализа inode:
    • полный парсинг всех полей структуры ext4_inode;
    • реализация определения типов файлов и атрибутов;
    • анализ расширенных атрибутов и флагов.
  3. Работа с блоками данных:
    • чтение и интерпретация содержимого блоков данных;
    • анализ структур каталогов и метаданных файлов.

4.4 Выводы по разработке и перспективы развития

4.4.1 Оценка текущей реализации

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

4.4.2 Перспективы развития

Реализация предложенных направлений развития позволит преобразовать текущий прототип в полнофункциональный инструмент анализа файловых систем. Ожидаемые результаты дальнейшей разработки:

В долгосрочной перспективе накопленный опыт и разработанные архитектурные решения могут быть использованы для создания семейства инструментов анализа различных файловых систем, что представляет значительный практический и научный интерес.

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

Выводы

В рамках проведенного исследования была успешно решена актуальная научно-практическая задача разработки кроссплатформенного приложения для исследования файловой системы ext4. Полученные результаты демонстрируют эффективность предложенного подхода и открывают перспективы для дальнейшего развития.

В ходе выполнения работы достигнуты следующие основные результаты:

  1. Получила дальнейшее развитие методология анализа структур ext4, основанная на глубоком понимании теоретических основ организации файловой системы и современных принципах программной инженерии.
  2. Создано работоспособное кроссплатформенное приложение, обеспечивающее чтение и анализ ключевых структур ext4: суперблока, групповых дескрипторов и inode. Приложение успешно функционирует на различных операционных системах благодаря использованию фреймворка PyQt5 и кроссплатформенных библиотек.
  3. Подтверждена корректность теоретических моделей организации ext4 через их практическую реализацию. Алгоритмы позиционирования и чтения структур показали высокую точность и надежность при тестировании на реальных файловых системах.
  4. Реализована комплексная система обработки ошибок, позволяющая приложению устойчиво функционировать при работе с поврежденными структурами данных и в условиях недостаточных привилегий доступа.
  5. Создан удобный инструмент визуализации сложных структур данных, обеспечивающий интуитивно понятное представление метаданных файловой системы для пользователей различной квалификации.

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

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

Направления дальнейших исследований

На основе анализа результатов работы и выявленных ограничений текущей реализации определены перспективные направления для дальнейших исследований и развития приложения:

5.1 Углубленный анализ групповых дескрипторов

Совершенствование модуля обработки групповых дескрипторов через реализацию полного парсинга всех полей структуры ext4_group_desc:

5.2 Расширенный анализ структур inode

Развитие функциональности анализа inode для поддержки полного спектра возможностей ext4:

5.3 Чтение и интерпретация блоков данных

Критически важное направление, обеспечивающее переход от анализа метаданных к работе с фактическим содержимым файлов:

5.4 Пользовательский интерфейс

Улучшение интерфейса и возможностей визуализации для более эффективной работы с данными.

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

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

При написании данного реферата магистерская работа еще не завершена. Полный текст работы и материалы по теме могут быть получены у автора после указанной даты.

Список источников

  1. McKusick, M. K. The Design and Implementation of the FreeBSD Operating System / M. K. McKusick, G. V. Neville-Neil. – Addison-Wesley Professional, 2014. – 1152 p.
  2. Modern Operating Systems Tanenbaum, A. S. / A. S. Tanenbaum, H. Bos. – Pearson, 2015. – 1137 p.
  3. Ts'o, T. Ext4: the next generation of the ext3 filesystem [Электронный ресурс] / T. Ts'o // Linux Foundation. – 2007. -36 p.
  4. Linux kernel documentation: ext4 administration [Электронный ресурс].
  5. E2fsprogs source code [Электронный ресурс].
  6. Carrier, B. File System Forensic Analysis / B. Carrier. – Addison-Wesley Professional, 2005. – 604 p.
  7. Терехов, А.В. Cистемное программирование / А.Н. Терехов, Д.Ю. Булычев. – М.:Д.Ю.Булычева. — СПб.: Изд-во С.-Петерб. ун-та, 2009.— 217 с.
  8. Зегжда, С.В. Основы информационной безопасности / учеб. пособие / П. Д. Зегжда, М. О. Калинин, Е. Ю. Резеди- нова. – СПб. : Изд-во Политехн. ун-та, 2014. – 131 с.
  9. Файловые системы и LVM // Учебный модуль ALSE. – Электрон. дан. – ALDPro, 2023. – URL[Электронный ресурс]
  10. UFS Explorer Review: Pros & Cons [Электронный ресурс].
  11. UFS Explorer: Supported File Systems [Электронный ресурс].
  12. Disktype official website [Электронный ресурс].
  13. The Sleuth Kit (TSK) [Электронный ресурс].
  14. Autopsy: Digital Forensics Platform [Электронный ресурс].
  15. Mathur, A. The new ext4 filesystem: current status and future plans / Avantika Mathur, Mingming Cao, Suparna Bhattacharya, Andreas Dilger, Alex Tomas, Laurent Vivier // Proceedings of the Linux Symposium. – 2007. – Vol. 2. – P. 21-34.
  16. Fujita A. Ext4 analysis and future work // LinuxCon Japan. - 2010"
  17. Filesystem in Userspace (FUSE) [Электронный ресурс].
  18. Develop Qt for Python applications [Электронный ресурс].
  19. Linux. Файловые системы на примере ext4. [Электронный ресурс].
  20. Программирование на PythonЛутц М.,том I, 4-е издание. – Пер. с англ. – СПб.: Символ-Плюс, 2011. – 992 с., ил.
  21. Summerfield, M. Rapid GUI Programming with Python and Qt / M. Summerfield. – Prentice Hall, 2008. – 643 p.
  22. ext4 disk layout documentation [Электронный ресурс].
  23. Bovet, D. P. Understanding the Linux Kernel / D. P. Bovet, M. Cesati. – O'Reilly Media, 2000. – 542 p.
  24. Love, R. Linux System Programming / R. Love. – O'Reilly Media, 2007. – 385 p.
  25. ext4 data structures and algorithms [Электронный ресурс].