Об этом проекте

# otaripper Извлекает разделы из Android OTA-файлов с криптографической проверкой, высокой надежностью и высокой производительностью. ## Обзор **otaripper** извлекает разделы из Android OTA-пакетов (`payload.bin` или полных OTA `.zip` файлов). Инструмент написан на Rust и ориентирован на: * Криптографическую корректность и целостность данных * Предсказуемое, отказоустойчивое поведение * Высокопроизводительное многопоточное выполнение * SIMD-ускоренные операции с памятью * Гарантированную очистку при сбое или прерывании В отличие от многих инструментов извлечения, otaripper **по умолчанию проверяет выходные образы** и не оставляет частично валидные или поврежденные файлы. ⚠️ Инкрементальные OTA-пакеты **намеренно не поддерживаются**. ## Ключевые особенности * **Проверка выходных данных**: SHA-256 проверка хэшей извлеченных образов * **Удаленная HTTP-трансляция**: Извлечение конкретных разделов напрямую по URL без загрузки полного OTA-пакета, с использованием параллельных запросов по 8 МБ * **Восстановление сетевых ошибок**: Автоматические повторные попытки с экспоненциальной задержкой и обнаружение офлайн-режима в реальном времени * **Zstd-сжатые полезные нагрузки**: Поддержка минорной версии 10 Android update engine (Vivo, iQOO, современные OTA) * **SIMD-оптимизация**: AVX-512/AVX2/SSE2 ускорение с обходом кэша (non-temporal) * **Анализ Qualcomm ARB**: Извлечение и анализ метаданных Anti-Rollback из образов загрузчика * **Парсинг метаданных прошивки**: Автоматический парсинг версии ОС и даты патчей безопасности из ZIP * **Обнаружение поврежденных образов**: Проверки на очевидно невалидный вывод * **Кэш-оптимизированная запись больших объемов**: Оптимизированный ввод/вывод для записи больших разделов * **Декомпрессия с нулевым копированием**: Пути извлечения без аллокаций, когда выходные блоки соответствуют непрерывным экстентам * **Прямое отображение ZIP в память**: Обход временных файлов для STORED OTA-архивов * **Корректное прерывание**: Чистое завершение при прерывании * **Автоочистка при сбое**: Гарантированная очистка частичного вывода * **Статистика производительности**: Детальные метрики извлечения * **Выборочное извлечение**: Извлечение только конкретных разделов * **Многопоточность**: Параллельное извлечение с использованием пулов потоков Rayon * **Кроссплатформенность**: Windows, Linux, macOS, Android/Termux * **Автономный бинарник**: Без зависимостей времени выполнения ## Быстрый старт ### Установка Готовые пакеты доступны на странице [Releases](https://github.com/syedinsaf/otaripper/releases) для: * Windows (MSVC и GNU) * Linux (glibc и static/musl) * Linux ARM64 * macOS (Intel и Apple Silicon) * Android / Termux (ARM64) Каждый релиз включает основной исполняемый файл `otaripper` и ультра-минималистичную версию `otaripper-lite`, скомпилированную без удаленной HTTP-трансляции для компактного локального извлечения. ### Windows (winget) ```powershell winget install syedinsaf.otaripper ``` ### Arch Linux (AUR) ```bash paru -S otaripper # сборка из исходников (рекомендуется) paru -S otaripper-bin # готовый glibc бинарник ``` ## Базовое использование Извлечь все: ```bash otaripper ota.zip ``` Список разделов: ```bash otaripper -l ota.zip ``` Извлечь выбранные разделы: ```bash otaripper ota.zip -p boot,vendor_boot,init_boot ``` Удаленная HTTP-трансляция (извлечение без загрузки): ```bash otaripper https://android.googleapis.com/packages/ota-api/package.zip -p boot,init_boot ``` Вывод хэшей: ```bash otaripper ota.zip --print-hash ``` Строгая проверка: ```bash otaripper ota.zip --strict ``` Анализ метаданных Qualcomm Anti-Rollback (ARB) загрузчика: ```bash otaripper arb update.zip # или директории otaripper arb CPH2583_EDL_Folder/ ``` Удаленный ARB-анализ с интерактивным экспортом JSON: ```bash otaripper arb https://example.com/firmware.zip ``` ## Очистка Удаление ранее извлеченных папок: ```bash otaripper clean ``` Очистка конкретной директории: ```bash otaripper clean -o /path/to/output ``` Команда очистки удаляет только директории, соответствующие `extracted_*`, и отказывается работать с корнями файловой системы для безопасности. ## Параметры команд | Параметр | Описание | | --- | --- | | `-l, --list` | Только список разделов | | `-p, --partitions` | Извлечение конкретных разделов | | `-o, --output-dir` | Пользовательская выходная директория | | `--strict` | Принудительное использование хэшей манифеста | | `--no-verify` | Отключить проверку (небезопасно) | | `--print-hash` | Вывод SHA-256 хэшей | | `--sanity` | Обнаружение очевидно невалидного вывода | | `--stats` | Показать статистику производительности | | `-t, --threads` | Управление потоками (1–256, 0 = авто) | | `-n, --no-open` | Отключить автооткрытие папки | | `clean` | Безопасное удаление папок `extracted_*` | | `arbscan`, `arb` | Извлечение ARB-метаданных из образов загрузчика или payload | ## Сборка из исходников ### Требования * Rust 1.98.1 или новее (MSRV) * Git * C-компилятор (gcc / clang / MSVC) ### Сборка ```bash git clone https://github.com/syedinsaf/otaripper.git cd otaripper # Сборка стандартного CLI (с поддержкой удаленной HTTP-трансляции) cargo full # Сборка 'lite' CLI (без сети, только локальное извлечение) cargo lite ``` ### Нативная оптимизированная сборка Для максимальной производительности otaripper можно собрать с оптимизациями под конкретный CPU: * **Linux/macOS**: используйте предоставленный скрипт `build.sh` * **Windows**: используйте предоставленный PowerShell-скрипт `build.ps1` ⚠️ Нативные сборки **НЕ переносимы** и **НЕ должны распространяться**. ## Лицензия otaripper распространяется под **Apache License 2.0**. ## Отказ от ответственности Используйте на свой страх и риск. Всегда проверяйте извлеченные образы перед прошивкой. Автор и участники не несут ответственности за потерю данных, повреждение устройств или ущерб, вызванный неправильным использованием.