프로젝트 소개

# otaripper 암호화 검증, 강력한 신뢰성 보장, 고성능 실행으로 Android OTA 파일에서 파티션을 추출합니다. ## 개요 **otaripper**는 Android OTA 패키지(`payload.bin` 또는 전체 OTA `.zip` 파일)에서 파티션을 추출합니다. 이 도구는 Rust로 작성되었으며 다음을 우선시합니다: * 암호화 정확성 및 데이터 무결성 * 예측 가능하고 안전한 동작 * 고성능 멀티스레드 실행 * SIMD 가속 메모리 연산 * 실패 또는 중단 시 정리 보장 많은 추출 도구와 달리 otaripper는 **기본적으로 출력 이미지를 검증**하며 부분적으로 유효하거나 손상된 파일을 남기지 않습니다. ⚠️ 증분 OTA 패키지는 의도적으로 **지원되지 않습니다**. ## 주요 기능 * **출력 검증**: 추출된 이미지의 SHA-256 해시 검증 * **원격 HTTP 스트리밍**: 병렬 8MB 청크 요청을 사용하여 전체 OTA 패키지를 다운로드하지 않고 URL에서 특정 파티션을 직접 추출 * **네트워크 오류 복구**: 지수 백오프를 사용한 자동 재시도 및 실시간 오프라인 감지 * **Zstd 압축 페이로드**: Android 업데이트 엔진 마이너 버전 10 지원 (Vivo, iQOO, 최신 OTA) * **SIMD 최적화**: AVX-512/AVX2/SSE2 가속 및 비일시적 캐시 우회 * **Qualcomm ARB 분석**: 부트로더 이미지에서 Anti-Rollback 메타데이터 추출 및 분석 * **펌웨어 메타데이터 파싱**: ZIP에서 OS 버전 및 보안 패치 자동 파싱 * **손상된 이미지 감지**: 명백히 유효하지 않은 출력을 감지하는 정상성 검사 * **캐시 인식 대용량 쓰기**: 대용량 파티션 쓰기를 위한 최적화된 I/O * **제로 카피 압축 해제**: 출력 블록이 연속 익스텐트에 깔끔하게 매핑될 때 할당 없는 추출 경로 * **직접 ZIP 메모리 매핑**: STORED OTA zip에 대한 임시 파일 추출 우회 * **정상적 중단**: 중단 시 깔끔한 종료 * **실패 시 자동 정리**: 부분 출력의 정리 보장 * **성능 통계**: 상세한 추출 지표 * **선택적 추출**: 특정 파티션만 추출 * **멀티스레드**: 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` 실행 파일과 원격 HTTP 스트리밍 없이 컴파일된 초경량 `otaripper-lite` 버전이 포함되어 있어 간편한 로컬 전용 추출이 가능합니다. ### 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/ ``` 대화형 JSON 내보내기를 사용한 원격 ARB 검사: ```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 메타데이터 추출 | ## 소스에서 빌드 ### 요구 사항 * 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**: 제공된 `build.ps1` PowerShell 스크립트 사용 ⚠️ 네이티브 빌드는 **이식성이 없으며** **재배포해서는 안 됩니다**. ## 라이선스 otaripper는 **Apache License 2.0**에 따라 라이선스가 부여됩니다. ## 면책 조항 사용에 따른 책임은 사용자에게 있습니다. 플래싱 전에 항상 추출된 이미지를 검증하십시오. 저자 및 기여자는 데이터 손실, 벽돌이 된 기기 또는 오용으로 인한 손상에 대해 책임지지 않습니다.