payload-dumper-rust 🦀
A fast and efficient Android OTA payload dumper.
What it does
Extracts partition images (boot, system, vendor, etc.) from Android OTA payload.bin files.
This has these features
- Parallel extraction - Uses all CPU cores for faster extraction
- Works with ZIP files - Extract directly from ROM ZIPs without unzipping first
- URL support - Extract from remote URLs, downloading only the needed data instead of the entire file
- Cross-platform - Works on Linux, Windows, macOS, and Android (Termux)
Installation
Quick Install
Linux / macOS / Termux:
Windows (PowerShell):
powershell -NoExit -ExecutionPolicy Bypass -Command "Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/rhythmcache/payload-dumper-rust/main/scripts/install.ps1' | Invoke-Expression"
Pre-built Binaries
Download from releases.
Build from Source
Or:
Usage
Basic Examples
Extract from payload.bin:
Extract from ROM ZIP (no unzipping required):
Extract from URL (downloads only required data):
Extract specific partitions:
List partitions without extracting:
Advanced Options
URL extraction with prefetch (better for slow connections):
Custom thread count:
Export metadata as JSON:
# Creates output/payload_metadata.json
Full metadata with operation details:
Skip verification (faster but not recommended):
All Options
Usage: payload_dumper [OPTIONS] <PAYLOAD_PATH>
Arguments:
<PAYLOAD_PATH> Path to payload.bin, ROM ZIP, or URL
Options:
-o, --out <OUT> Output directory [default: output]
-U, --user-agent <AGENT> Custom User-Agent for HTTP requests
-i, --images <IMAGES> Comma-separated partition names to extract
-t, --threads <THREADS> Number of threads for parallel processing
-l, --list List available partitions
-m, --metadata[=<MODE>] Save metadata as JSON (compact or full)
-P, --no-parallel Disable parallel extraction
-n, --no-verify Skip hash verification
--prefetch Download all data first (for remote URLs)
-h, --help Show help
-V, --version Show version
Why extract from URLs?
Instead of downloading a 3GB OTA file to extract a 50MB boot image, this tool downloads only ~50-100MB of required data.
Useful for:
- Quick partition extraction without full downloads
- CI/CD pipelines
- Bandwidth-limited connections
Troubleshooting
"Server doesn't support range requests"
Download the file first, then extract locally.
Out of memory errors
Use --no-parallel or reduce thread count with -t.
Slow extraction
Remove --no-parallel if set. For remote extraction, try --prefetch.
Credits
Inspired by vm03/payload_dumper