Об этом проекте
# 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**.
## Отказ от ответственности
Используйте на свой страх и риск. Всегда проверяйте извлеченные образы перед прошивкой. Автор и участники не несут ответственности за потерю данных, повреждение устройств или ущерб, вызванный неправильным использованием.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.