Документация
Фреймворк предназначен для автоматизированного сбора и анализа цифровых артефактов из браузеров на базе Chromium в Linux-системах. Система модульная и позволяет парсить различные типы данных: cookies, историю посещений, закладки, расширения и историю загрузок.
Архитектура системы
Основные компоненты:
project/ init.py Run.py # Точка входа Interfaces/ # Интерфейсы init.py Main.py # Главный интерфейс LogInterface.py # Логирование SettingsInterface.py # Настройки OutputInterface.py # Вывод данных Solver.py # Загрузчик модулей Common/ # Общие утилиты init.py Codes.py # Коды ошибок Routines.py # Вспомогательные функции SACPStructure.py # Структуры данных Modules/ # Модули парсинга ChromiumCookies/ ChromiumHistory/ ChromiumBookmarks/ ChromiumExtensions/ ChromiumDownloads/
Пошаговая инструкция по запуску
Шаг 1: Установка зависимостей
Установите необходимые Python-пакеты pip install regipy sqlite3
Или через requirements.txt pip install -r requirements.txt
Шаг 2: Подготовка структуры каталогов
Создайте следующую структуру: LabFramework/ Cases/ # Автоматически создается Temp/ # Автоматически создается Logs/ # Автоматически создается Modules/ # Папка для модулей Source/ # Папка с исходными данными Settings.json # Файл настроек
Шаг 3: Настройка файла Settings.json
{ "CaseFolder": "Cases", "TemporaryFilesFolder": "Temp" }
Шаг 4: Добавление модулей парсинга
Скопируйте модули в папку Modules/. Каждый модуль должен содержать:
- init.py (пустой файл)
- Parser.py (класс Parser с методами init и Start)
Шаг 5: Запуск приложения
Способ 1: Базовый запуск python Run.py --source_folder ./Source --output_name results.sqlite
Способ 2: Анализ конкретного браузера python Run.py --source_folder ~/.config/google-chrome --output_name chrome_analysis.sqlite
Способ 3: Помощь и параметры python Run.py --help
Шаг 6: Проверка результатов
После выполнения программа создаст:
- Лог-файл: Logs/[дата_время].log
- Результаты: Cases/[дата_время]/[модуль]_results.sqlite
- Временные файлы: Temp/ (автоматически очищаются)
Поддерживаемые модули
- ChromiumCookies Назначение: Парсинг cookies браузеров Chromium Извлекаемые данные:
- Домены и имена cookies
- Значения (с поддержкой шифрования)
- Сроки действия
- Флаги безопасности (Secure, HttpOnly)
- Политики SameSite
- ChromiumHistory Назначение: Анализ истории посещений Извлекаемые данные:
- URL посещенных страниц
- Заголовки страниц
- Количество посещений
- Время последнего посещения
- ChromiumBookmarks Назначение: Парсинг закладок Извлекаемые данные:
- Названия закладок
- URL адреса
- Папки закладок
- Даты создания и изменения
- ChromiumExtensions Назначение: Анализ установленных расширений Извлекаемые данные:
- Названия расширений
- ID и версии
- Описания и авторы
- Права доступа
- ChromiumDownloads Назначение: История загрузок Извлекаемые данные:
- Пути к скачанным файлам
- URL источников
- Размеры файлов
- Статусы загрузок
- Уровни опасности
Формат выходных данных
Все модули сохраняют данные в SQLite базы данных со следующей структурой:
Таблицы в БД:
- Data - основные данные модуля
- Headers - описание полей (название, ширина, тип данных)
- Info - метаинформация о модуле
Пример структуры Data для модуля Cookies: CREATE TABLE Data ( ID INTEGER PRIMARY KEY AUTOINCREMENT, UserName TEXT, Browser TEXT, Host TEXT, CookieName TEXT, CookieValue TEXT, -- ... другие поля );
Принцип работы
Фаза 1: Инициализация
- Чтение настроек из Settings.json
- Создание логгера и структуры каталогов
- Парсинг аргументов командной строки
Фаза 2: Поиск данных
- Сканирование системных каталогов на наличие браузеров
- Проверка существования файлов данных (Cookies, History, Bookmarks и т.д.)
- Создание временных копий для избежания блокировки
Фаза 3: Обработка данных
- Динамическая загрузка модулей из папки Modules/
- Выполнение логики парсинга каждого модуля
- Конвертация временных меток Chromium в читаемый формат
- Обработка шифрованных данных (если возможно)
Фаза 4: Сохранение результатов
- Создание SQLite баз данных
- Запись данных и метаинформации
- Создание индексов для оптимизации поиска
- Очистка временных файлов
Особенности реализации
Временные метки Фреймворк использует класс TimeConverter для конвертации:
- Chromium времени (микросекунды с 1601-01-01) → читаемая дата
- FILETIME (Windows) → datetime
- Unix времени → datetime
Обработка реестра Windows Классы RegistryFileHandler и _AbstractRegistryFileHandler предоставляют абстракцию для работы с файлами реестра, хотя в Linux-версии они используются ограниченно.
Безопасность данных
- Создание временных копий файлов БД для избежания блокировки
- Обработка исключений при доступе к файлам
- Корректное закрытие соединений с БД
Расширение функциональности
Создание нового модуля:
- Создайте папку модуля в Modules/
- Создайте файл Parser.py с шаблоном:
Описание модуля
class Parser(): def init(self, parameters: dict): self.__parameters = parameters
async def Start(self) -> dict:
# Логика парсинга
output_writer = self.__parameters.get('OUTPUTWRITER')
# Настройка полей вывода
record_fields = {'Field1': 'TEXT', 'Field2': 'INTEGER'}
fields_description = {'Field1': ('Название', 100, 'string', 'Описание')}
output_writer.SetFields(fields_description, record_fields)
output_writer.CreateDatabaseTables()
# Ваша логика парсинга
return {self.__parameters.get('MODULENAME'): output_writer.GetDBName()}
Коды ошибок
class ExitCode(IntEnum): Ok = 0 # Успешное завершение AsyncStartError = 1 # Ошибка асинхронного запуска ControlParametersError = 2 # Ошибка параметров управления InputParametersError = 3 # Ошибка входных параметров
Ограничения и требования
Требования к системе:
- Python 3.7+
- Linux ОС (тестировано на Ubuntu/Debian)
- Доступ к домашнему каталогу пользователя
Ограничения:
- Шифрование cookies: Для дешифровки современных Chrome cookies требуется ключ из файла Local State
- Браузеры: Поддерживаются только браузеры на базе Chromium
- Версии: Могут быть различия в структуре данных между версиями браузеров
Устранение неполадок
Проблема: "Модуль не найден" Решение: Убедитесь, что модуль находится в папке Modules/ и содержит файл Parser.py
Проблема: "Нет доступа к файлам браузера" Решение: Запустите с правами нужного пользователя или скопируйте файлы в папку Source/
Проблема: "Ошибка формата времени" Решение: Проверьте версию браузера - фреймворк поддерживает современный формат Chromium