프로젝트 소개
# 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**에 따라 라이선스가 부여됩니다.
## 면책 조항
사용에 따른 책임은 사용자에게 있습니다. 플래싱 전에 항상 추출된 이미지를 검증하십시오. 저자 및 기여자는 데이터 손실, 벽돌이 된 기기 또는 오용으로 인한 손상에 대해 책임지지 않습니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.