Extract partitions from Android OTA files with cryptographic verification, strong reliability guarantees, and high-performance execution.
Download β’ Quick Start β’ Build Guide β’ Technical Details
- Overview
- Feature Comparison
- Performance
- Quick Start
- Basic Usage
- Cleanup
- Command Options
- Building from Source
- Contributing
- Acknowledgments
- Show Your Support
- License
- Disclaimer
For in-depth architecture and performance details, see TECHNICAL.md
otaripper extracts partitions from Android OTA packages (payload.bin or full OTA .zip files).
The tool is written in Rust and prioritizes:
- Cryptographic correctness and data integrity
- Predictable, fail-safe behavior
- High-performance, multi-threaded execution
- SIMD-accelerated memory operations
- Guaranteed cleanup on failure or interruption
Unlike many extraction tools, otaripper verifies output images by default and refuses to leave behind partially valid or corrupted files.
| otaripper v3.0 | payload-dumper-go | payload_dumper (Python) | |
|---|---|---|---|
| Output verification | β SHA-256 | β | β |
| Remote HTTP Streaming | β (Extract URL) | β | β |
| SIMD optimization | β AVX-512 / AVX2 / SSE2 | β | β |
| Cache-aware large writes | β | β | β |
| Graceful interruption | β | β | β |
| Auto-cleanup on failure | β | β | β |
| Performance statistics | β | β | β |
| Selective extraction | β | β | β |
| Direct ZIP Memory Mapping | β (Zero-Copy) | β (Extracts temp) | β |
| Multi-threaded | β | β | β (single-threaded) |
| Cross-platform | β | β | |
| Standalone binary | β | β | β |
otaripper is designed to fail early and cleanly rather than produce questionable output.
otaripper automatically detects CPU capabilities and selects the optimal execution path.
Version 3.0 introduces flawless Remote HTTP Streaming and massive I/O savings:
- Remote HTTP Streaming: Extract specific partitions directly from a remote URL! otaripper intelligently streams only the required byte-ranges over the network, completely eliminating the need to download the massive 3GB+ OTA zip just to grab a 64MB
boot.img. - Direct ZIP Memory Mapping: Bypasses the traditional temp-file extraction step for
STOREDOTA zips, mapping the internalpayload.binstraight from the disk using a zero-copy offset. Saves gigabytes of SSD writes per extraction. - Modern Decompression Engine: Upgraded
liblzmabackend safely handles modern Android payloads utilizing the ARM64 BCJ filter (e.g., Xiaomi HyperOS). - Modular Engine Architecture: Breaking the monolithic extraction logic into specialized
extractorandsimdmodules. - Thread-Local Buffer Pooling: Drastically amortizing memory allocations across deep Rayon threadpools.
- Zero-Copy Decompression: Triggering purely alloc-free extraction paths when output blocks map cleanly to continuous extents.
- Strict SIMD Encapsulation: Cleanly isolating CPU vector operations (
AVX-512,AVX2,SSE2) through non-temporal cache-bypassing mechanisms.
Throughput Example (3GB system partition)
βββββββββββββββββββββββββββββββββββββββββββββ
otaripper (AVX-512) ββββββββββββ 2.8 GB/s
otaripper (AVX2) ββββββββ 1.9 GB/s
payload-dumper-go ββββ 1.0 GB/s
payload_dumper ββ 0.4 GB/s
βββββββββββββββββββββββββββββββββββββββββββββ
Performance scales with:
- storage speed (NVMe > SATA > HDD)
- compression format
- CPU SIMD capability
For architectural details, see TECHNICAL.md
Prebuilt binaries are available on the Releases page:
- Windows:
otaripper-x86_64-pc-windows-msvc.exe - Linux (glibc):
otaripper-x86_64-unknown-linux-gnu - Linux (musl):
otaripper-x86_64-unknown-linux-musl - macOS (Intel):
otaripper-x86_64-apple-darwin - macOS (Apple Silicon):
otaripper-aarch64-apple-darwin
Note: Each release also includes
otaripper-litebinaries. These are compiled without remote HTTP extraction features (--no-default-features), resulting in an ultra-minimal footprint for users who only extract local files.
otaripper releases follow a "Gold Standard" two-layer checksum architecture:
- Download Verification: The release page hosts a master
checksums.txtfile containing hashes for all.tar.gzand.ziparchives. - Binary Verification: Upon extracting the archive, you will find an
otaripper-vX.Y.Z.sha256file enclosed alongside the executables. Runsha256sum -c *.sha256in your terminal to instantly verify the integrity of the extracted binaries.
otaripper is available via the Windows Package Manager:
winget install syedinsaf.otaripperTo update to the latest version:
winget upgrade syedinsaf.otaripperotaripper is available on the AUR:
paru -S otaripper # build from source (recommended)
paru -S otaripper-bin # prebuilt glibc binary
yay -S otaripper
yay -S otaripper-binIf otaripper-bin fails to run due to libc/runtime issues, use the
fully static musl build from GitHub Releases:
https://github.com/syedinsaf/otaripper/releases
Extract everything:
otaripper ota.zipList partitions:
otaripper -l ota.zipExtract selected partitions:
otaripper ota.zip -p boot,vendor_boot,init_bootπ Remote HTTP Streaming (Zero-Download Extraction):
Extract specific partitions directly from a web URL without downloading the full OTA package!
otaripper https://android.googleapis.com/packages/ota-api/package.zip -p boot,init_bootPrint hashes:
otaripper ota.zip --print-hashStrict verification:
otaripper ota.zip --strictDisable automatic folder opening:
otaripper ota.zip -nAnalyze Qualcomm bootloader Anti-Rollback (ARB) metadata (accepts .img, .bin, or .zip):
otaripper arb update.zipπ Remote ARB Inspection (Zero-Download):
Instantly check the ARB index of a firmware update without downloading the massive 3GB+ zip file! otaripper will intelligently stream and extract just the tiny xbl_config.img directly from the URL over the internet.
$ otaripper arb https://example.com/firmware.zip -n
[arbscan] OTA package detected. Extracting xbl_config.img temporarily...
[arbscan] Analyzing: xbl_config.img
OEM Metadata
ββββββββββββ
Major Version : 3
Minor Version : 0
ARB Index : 0
Remove previously extracted folders:
otaripper cleanClean a specific directory:
otaripper clean -o /path/to/outputThe cleanup command only removes directories matching extracted_*
and refuses to operate on filesystem roots for safety.
| Option | Description |
|---|---|
-l, --list |
List partitions only |
-p, --partitions |
Extract specific partitions |
-o, --output-dir |
Custom output directory |
--strict |
Enforce manifest hashes |
--no-verify |
Disable verification (unsafe) |
--print-hash |
Print SHA-256 hashes |
--sanity |
Detect obviously invalid output |
--stats |
Show performance statistics |
-t, --threads |
Thread control (1β256, 0 = auto) |
-n, --no-open |
Disable folder auto-open |
clean |
Remove extracted_* folders safely |
arbscan, arb |
Extract ARB metadata from bootloader images or payloads |
- Rust 1.95.0 or newer (MSRV)
- Git
- C compiler (gcc / clang / MSVC) - required by some native dependencies
We provide two built-in Cargo aliases for easy compilation:
git clone https://github.com/syedinsaf/otaripper.git
cd otaripper
# Build the standard CLI (with Remote HTTP Streaming support)
cargo full
# Build the 'lite' CLI (Network-free, local extraction only)
cargo liteBinary output:
- Full Build:
target/release/otaripper - Lite Build:
target/lite/release/otaripper
Note: The
cargo litealias automatically isolates its output into a separatetarget/lite/directory. This ensures you can compile and test both versions side-by-side locally without them overwriting each other!
otaripper can be built locally with CPU-specific optimizations for maximum performance. This enables all instruction sets supported by your CPU (AVX2 / AVX-512 / ARMv8, etc.).
A helper script is provided to:
- download the source
- optionally install Rust (with confirmation)
- build a CPU-native release binary
- clean up all intermediate files
curlunzip- A C toolchain (gcc / clang)
- Rust (installed automatically if missing)
chmod +x build.sh
./build.shOutput binary:
After running build.sh, a new folder named otaripper-native
will be created in the same directory where build.sh is located.
~/otaripper-native/otaripper
On Windows, a native PowerShell script is provided. It uses the official Windows rustup installer and defaults to the MSVC toolchain.
- Windows 10 / 11
- PowerShell 5.1 or newer
- Visual Studio Build Tools (prompted automatically if missing)
Before running the script, allow execution for the current session only:
Set-ExecutionPolicy -Scope Process -ExecutionPolicy BypassThen run:
.\build.ps1Output binary:
After running build.ps1, a new folder named otaripper-native
will be created in the same directory where build.ps1 is located.
otaripper-native\otaripper.exe
- Native builds use
-C target-cpu=native - Performance may be significantly higher than portable binaries
- These builds are intended for local use only
- GitHub Releases remain the recommended option for most users
Testing, bug reports, and performance feedback are welcome.
Please include:
- OS, CPU, RAM
- otaripper version 3.0.0
- OTA size and format
- logs or error messages if available
Pull requests should:
- Build cleanly
- Preserve safety guarantees
- Avoid introducing undefined behavior
- Keep performance regressions justified
otaripper benefits greatly from real-world testing and feedback.
Special thanks to Jean Rivera for extensive validation, edge-case testing, and correctness feedback.
Thanks also to:
- Android Open Source Project documentation
- Rust ecosystem maintainers
- Users who reported bugs and performance issues
If otaripper helped you:
- Star the repository β https://github.com/syedinsaf/otaripper
- Report issues β https://github.com/syedinsaf/otaripper/issues
- Submit pull requests β https://github.com/syedinsaf/otaripper/pulls
- Share with others β https://github.com/syedinsaf/otaripper
otaripper is licensed under the Apache License 2.0. See LICENSE for details.
Use at your own risk.
- Always verify extracted images before flashing
- Keep backups whenever possible
- Understand your device and bootloader requirements
The author and contributors are not responsible for data loss, bricked devices, or damage resulting from misuse.