Перейти к содержанию

Установка

Автоматическая установка

На Windows 10 (сборка 19041+) и Windows 11 распакуйте исходники и запустите install.bat двойным щелчком. Он установит Python 3.12 через WinGet, если нет подходящего Python, создаст .venv, установит полный Python-профиль API/AI/DFIR, подготовит системные компоненты и проверит импорты и pip check. Запускайте программу через run.bat: он выбирает .venv, а не случайный Python из PATH. Для предварительного просмотра команд используйте install.bat -DryRun.

В готовом EXE выберите Конфигурация → Установить компоненты…. Python для этого не требуется. В релизном комплекте также доступен install-components.bat с отдельным PowerShell-скриптом. Установка начинается только по вашему запросу, а не при открытии исследуемого образа.

Системный установщик проверяет нативный debugfs.exe и WSL. Если нужного backend нет, в существующий Debian/Ubuntu WSL добавляется e2fsprogs. В остальных случаях установщик включает WSL2 и создаёт служебный Ubuntu-дистрибутив MountFileTools, устанавливает e2fsprogs и проверяет debugfs/wslpath. Существующий WSL-дистрибутив по умолчанию не переключается. Rootfs загружается с официального сайта Ubuntu (около 325 МБ) и проверяется по SHA-256; ImDisk загружается с сайта автора и проверяется по Authenticode и издателю.

Нужны интернет, свободное место, поддержка WSL2/виртуализации и подтверждение запроса администратора Windows. Установщик не перезагружает компьютер сам: код 3010 означает, что нужно самостоятельно перезагрузить Windows и повторить установку. Ошибка загрузки, подписи, pip или проверки импорта не считается успешной установкой. Журнал компонентов сохраняется в %LOCALAPPDATA%\MountFile\logs. Затем перезапустите MountFile или переоткройте образ; для ImDisk необходим запуск программы от имени администратора.

Для Linux/macOS: python3 install_mountfile.py. Автоматические системные пакеты Linux поддерживаются через apt на Debian/Ubuntu, macOS — через существующий Homebrew. --minimal отключает дополнительные Python-профили и системные пакеты, --no-sys пропускает системную установку, --system-only ставит только системные компоненты, --skip-ext и --skip-imdisk отключают соответствующие backends. По умолчанию устанавливаются профили api,ai,dfir; pytsk3 не входит в этот набор. Для явного legacy fallback добавьте --legacy-tsk к Python-установщику или -LegacyTsk к install.bat. Инструменты разработчика, включая pre-commit, устанавливаются только с --dev. На Windows при отсутствии готового wheel может понадобиться отдельная установка C++ Build Tools; AI-модели, серверы и API-ключи не загружаются вместе с Python-зависимостями.

Поддерживаемые варианты

Текущая версия пакета требует Python 3.10 или новее. requirements.txt устанавливает полный набор возможностей для Python 3.10+:

git clone https://github.com/Alexkkkkk/mount-file.git
cd mount-file
python -m venv .venv
source .venv/bin/activate       # Linux/macOS
python -m pip install --upgrade pip
python -m pip install '.[api,ai,dfir]'

Windows PowerShell:

py -3 -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install ".[api,ai,dfir]"

Установка пакета создаёт команды mountfile, mountfile-ai, mountfile-rw и mountfile-rw-v2. requirements.txt устанавливает только библиотеки; для console scripts отдельно установите пакет. make install выполняет оба шага.

Запуск и диагностика:

python main.py --diag
python main.py path/to/image.img
python -m mountfile --help

main.py --diag показывает версию Python, доступный Qt, pytsk3 и основные импорты. В headless-среде этот шаг не заменяет проверку GUI: Qt может потребовать дисплей или Xvfb.

Зависимости и возможности

Компонент Статус Назначение и ограничение
PyQt6 (в requirements.txt >=6.11) основной для Win 10/11, Linux, macOS GUI main.py
pytsk3 optional extra legacy-tsk; явно включаемый fallback только для форматов, не распознанных native routing сборка/колёса зависят от Python и платформы; recognized unsupported/dirty profiles fail closed
debugfs из e2fsprogs явный library-level compatibility backend для ext2 вне native allowlist и ext3/4; не нужен для supported clean ext2 и не включается GUI автоматически debugfs.exe в PATH либо WSL/e2fsprogs; устанавливается через меню компонентов или install-components.bat
ImDisk Virtual Disk Driver нужен для записи в NTFS/exFAT/FAT12/16-образы на Windows устанавливается через меню компонентов; запуск MountFile от имени администратора; сайт автора
mcp[cli], pydantic, openai нужны mountfile_ai.py и его MCP/OpenAI-совместимому слою AI-сервер не нужен обычному CLI
dosfstools, mtools только разработка создание синтетических образов через make sample
fastapi, uvicorn только DFIR REST-команда нужны лишь для mountfile_dfir.py serve

requirements.txt — полный профиль и включает optional AI/API зависимости. Команда python -m pip install . устанавливает PyQt6 и не требует pytsk3: FAT12/16/32 и поддержанные native ext-профили работают без libtsk. Для legacy fallback явно установите python -m pip install '.[legacy-tsk]'; дополнительные возможности устанавливаются через .[api], .[ai] или .[dfir].

Для полного Python-окружения разработчика (все optional features, legacy pytsk3, тестовые/форматирующие инструменты и документация) из корня репозитория выполните:

python -m pip install -r requirements-all.txt

На Debian/Ubuntu для полного набора интеграционных проверок реальных файловых систем и headless GUI дополнительно нужны системные пакеты:

sudo apt-get update
sudo apt-get install -y build-essential python3-dev pkg-config \
  dosfstools mtools e2fsprogs exfatprogs ntfs-3g \
  libgl1 libegl1 libxkbcommon-x11-0 libdbus-1-3 libxcb-cursor0

Для явно выбранного library-level compatibility режима ext2/3/4 на Windows можно использовать WSL: установите дистрибутив Linux, откройте его терминал и выполните sudo apt install e2fsprogs. Этот режим находит debugfs в WSL и изменяет временную копию выбранного extent с последующей проверкой и записью в образ; обычный GUI и WriteEngine его автоматически не выбирают. Для NTFS/exFAT/FAT12/16 используется ImDisk; это отдельный путь и он требует запуска от имени администратора.

В репозитории сохранены requirements-win7.txt и отдельные legacy build сценарии, но текущие метаданные пакета требуют Python 3.10+, а Windows 7 не входит в поддерживаемую матрицу этой версии.

Docker

Контейнер запускает только CLI от non-root пользователя. Для read-only проверки образов используйте отдельные каталоги evidence и output:

mkdir -p evidence output
docker compose run --rm mountfile --version
docker compose run --rm mountfile info /evidence/dump.img

evidence монтируется read-only, а запись в исходный образ не должна выполняться. Для дополнительного forensic-инструментария собирайте профиль docker build --build-arg INSTALL_FORENSIC_TOOLS=1 -t mountfile:forensics .. Этот профиль добавляет системные утилиты, но не превращает экспериментальные DFIR-модули проекта в полноценную систему carving или malware verdict.

pytsk3 устанавливается в контейнер только с явным build argument INSTALL_LEGACY_TSK=1; обычный native CLI-профиль работает без него.

CI собирает образ и выполняет CLI smoke test на PR и push. Публикация в GHCR — отдельный ручной запуск Actions → Docker → Run workflow с publish=true; workflow сначала повторяет build/smoke и только затем делает push в ghcr.io/alexkkkkk/mount-file. Доступ к docker pull зависит от visibility container package в GitHub Packages; успешный build не означает, что image уже публичен.

На Linux для Qt могут понадобиться системные библиотеки libgl1, libegl1, libxkbcommon-x11-0, libdbus-1-3, libxcb-cursor0. Для Codespaces скрипт scripts/setup-gui.sh дополнительно настраивает Xvfb, x11vnc и noVNC.

Windows 7

Поддержка Windows 7/Python 3.8 не входит в текущую версию: исходный пакет объявляет requires-python >=3.10, а legacy-файл requirements-win7.txt не делает текущий код совместимым с Python 3.8. Скрипт автоустановки намеренно отказывает в --win7, чтобы не сообщать об успешной установке неработающей сборки. Для текущей версии используйте Windows 10/11 и Python 3.10+.

Проверка образа перед работой

  1. Сделайте копию и запишите SHA-256 исходника.
  2. Запустите python main.py --diag.
  3. Для образа сначала используйте read-only операции info, volumes, ls.
  4. Если таблица разделов сомнительна, попробуйте autopick и сохраните его JSON-вывод.

Файлы .exe из GitHub Releases сопровождаются .sha256; проверяйте хэш до запуска. Проверка обновлений при старте GUI не блокирует работу без сети. Её можно отключить переменной MOUNTFILE_NO_UPDATE=1. Структурированная документация публикуется по адресу https://alexkkkkk.github.io/mount-file/ после успешного Pages workflow.