
iLEAPP v2026.3.3
iOS 및 iPadOS 포렌식 추출 데이터를 HTML, TSV, 타임라인, KML 및 LAVA 보고서로 파싱하며, 모듈형 아티팩트 발견과 암호화된 iTunes 백업을 지원합니다.

iOS 로그, 이벤트 및 Plist 파서
iLEAPP는 iOS 및 iPadOS 포렌식 추출물을 파싱하여 HTML, TSV, 타임라인, KML 및 LAVA 출력을 생성합니다. iOS/iPadOS 11부터 최신 버전까지 지원합니다.
전체 검색 가능한 아티팩트 목록은 leapps.org/artifacts에서 확인하세요 (LEAPP 도구로 필터링).
빠른 시작 (권장)
미리 빌드된 릴리스를 다운로드하세요 — Python 설치가 필요하지 않습니다.
- LEAPPs 릴리스 — 모든 LEAPP 제품군 도구 둘러보기
- iLEAPP GitHub 릴리스 — 직접 다운로드
| 플랫폼 | GUI | CLI |
|---|---|---|
| Windows (Intel) | ileappGUI-v*-Windows_x86_64.zip | ileapp-v*-Windows_x86_64.zip |
| Windows (ARM) | ileappGUI-v*-Windows_arm64.zip | ileapp-v*-Windows_arm64.zip |
| macOS (Apple Silicon) | ileappGUI-v*-macOS_Apple_Silicon.dmg | ileapp-v*-macOS_Apple_Silicon.zip |
| macOS (Intel) | ileappGUI-v*-macOS_Mac_Intel.dmg | ileapp-v*-macOS_Mac_Intel.zip |
| Linux (Intel) | ileappGUI-v*-Linux_x86_64.AppImage | ileapp-v*-Linux_x86_64.AppImage |
| Linux (ARM) | ileappGUI-v*-Linux_arm64.AppImage | ileapp-v*-Linux_arm64.AppImage |
GUI — 다운로드한 파일의 압축을 풀고 ileappGUI를 실행한 다음, 입력 유형, 소스 경로, 출력 폴더 및 처리할 모듈을 선택하세요.
CLI — 다운로드한 파일의 압축을 풀고 터미널에서 실행하세요. 출력 폴더는 미리 존재해야 합니다.
ileapp.exe -t zip -i C:\path\to\extraction.zip -o C:\path\to\output\
macOS와 Linux에서는 ileapp.exe 대신 압축을 푼 아카이브의 ileapp 바이너리를 사용하세요.
입력 유형
| 유형 | 설명 |
|---|---|
fs | 일반 경로와 이름을 가진 추출된 파일 폴더 |
zip | 일반 이름의 파일을 포함하는 ZIP 아카이브 |
tar | 일반 또는 xz 압축 TAR 아카이브 (.tar.xz) |
gz | GZIP 압축 아카이브 |
itunes | 해시된 경로와 이름을 가진 iTunes/Finder 백업 폴더 |
file | 단일 파일 입력 |
암호화된 iTunes/Finder 백업(-t itunes)이 지원됩니다. GUI는 암호화가 감지되면 처리 전에 비밀번호를 요청합니다. CLI에서는 --itunes_password로 비밀번호를 전달하세요 (아래 선택적 파싱 옵션 참조).
CLI 인수
이 옵션들은 CLI 빌드(ileapp / ileapp.exe / python ileapp.py)에만 적용됩니다. GUI(ileappGUI)는 명령줄 플래그 대신 인터페이스를 통해 동일한 설정을 제공합니다.
내장 참조를 보려면 ileapp --help (또는 소스에서 python ileapp.py --help)를 실행하세요.
케이스 파싱
일반적인 파싱 실행에는 다음 세 가지 인수가 필요합니다:
| 인수 | 긴 형식 | 설명 |
|---|---|---|
-t | 입력 유형: fs, tar, zip, gz, itunes 또는 file | |
-i | --input_path | 입력 파일 또는 폴더의 경로 |
-o | --output_path | 출력 폴더의 경로 (미리 존재해야 함) |
예시:
ileapp -t zip -i /path/to/extraction.zip -o /path/to/output/
선택적 파싱 옵션
| 인수 | 긴 형식 | 설명 |
|---|---|---|
-w | --wrap_text | 출력 파일의 텍스트 줄바꿈을 비활성화하려면 이 플래그를 전달하세요 |
-m | --load_profile | 실행할 모듈을 제한하는 iLEAPP 프로필 파일(.ilprofile)의 경로 |
-d | --load_case_data | LEAPP 케이스 데이터 파일(.lcasedata)의 경로 |
--custom_output_folder | 보고서 출력 하위 폴더의 사용자 지정 이름 | |
--custom_artifacts_path | 아티팩트 모듈을 로드할 추가 폴더 (예: scripts/alternate_artifacts) | |
--html_row_limit | 이 행 수를 초과하면 아티팩트의 테이블이 HTML 페이지에서 제외되고, 대신 LAVA 데이터베이스와 TSV 내보내기를 가리킵니다. 기본값 50000; 0은 모든 테이블을 작성합니다. GUI는 기본값을 사용합니다 | |
--itunes_password |
독립 실행형 유틸리티 모드
이 모드들은 케이스를 파싱하지 않습니다. -t, -i 또는 -o 없이 단독으로 사용하세요:
| 인수 | 긴 형식 | 설명 |
|---|---|---|
-p | --artifact_paths | 모든 아티팩트 검색 경로를 현재 디렉터리의 path_list.txt에 작성합니다 |
-c | --create_profile_casedata | 주어진 폴더에 .ilprofile 또는 .lcasedata 파일을 생성하는 대화형 마법사 |
예시:
ileapp -p
ileapp -c /path/to/output/folder/
기여
아티팩트 모듈은 scripts/artifacts/에 있으며 런타임에 동적으로 로드됩니다.
새 모듈: iLEAPP 모듈 작성 방법의 단계별 가이드부터 시작하세요.
추가 참고 자료:
PR을 위한 테스트 데이터 및 sample_data
아티팩트를 추가하거나 변경하는 PR은 두 가지를 함께 제출하면 검토와 병합이 가장 쉽습니다: 실제 추출물에서 잘라낸 작은 테스트 픽스처와, 모듈이 생성한 결과를 기록하는 sample_data 값입니다. 스크립트가 둘 다 생성합니다. 전체 흐름은 다음과 같습니다.
무엇보다 먼저 지켜야 할 규칙: 여기에 커밋하는 모든 것은 공개됩니다. 직접 채운 테스트 기기, 공개 연구 이미지, 또는 수동으로 정제한 파일처럼 공유가 허용된 데이터만 사용하세요. 실제 사건 자료는 절대 사용하지 마세요.
1. 추출물에서 픽스처 잘라내기
python admin/test/scripts/make_test_data.py <module> --case 1 --input <extraction.zip>
이 명령은 모듈의 paths 패턴과 일치하는 파일을 추출물에서 꺼내어 케이스 파일 admin/test/cases/testdata.<module>.json과 아티팩트당 하나의 작은 zip을 admin/test/cases/data/<module>/ 아래에 작성합니다.
크기 규칙: zip당 10 MB 미만이면 PR과 함께 커밋하세요. 10~25 MB 사이면 케이스 파일을 커밋하고 zip은 PR 댓글에 첨부하세요. 그보다 크면 PR에 그렇게 명시하면 유지관리자가 전달 방법을 마련해 드립니다.
2. 예상 출력 기록하기
TZ=UTC python admin/test/scripts/test_module.py <module> -a all -c all
이 명령은 픽스처에 대해 모듈을 실행하고 출력 스냅샷을 admin/test/results/<module>/ 아래에 작성합니다. 스냅샷도 커밋하세요. 이는 병합 후 모듈을 보호하는 기준선이 됩니다. TZ=UTC 부분을 유지하세요: 커밋된 스냅샷은 UTC 기준이며 CI도 UTC로 실행됩니다.
3. CI가 실행할 것과 동일한 비교 실행하기
python admin/test/scripts/run_test_cases.py --module <module>
4. sample_data 값 생성하기
python admin/scripts/validate_sample_data.py --emit <extraction.zip> --key <image_name>
이 명령은 추출물에 대해 iLEAPP를 처음부터 끝까지 실행하고, 브랜치에서 변경된 모듈에 대해 바로 붙여넣을 수 있는 sample_data 블록을 출력합니다. 이를 모듈의 __artifacts_v2__에 붙여넣고 이미지에서 확인한 앱 이름과 버전을 추가하세요. 개수가 0이면 기록하기 전에 소스 파일이 실제로 비어 있는지 확인하세요.
5. 모두 커밋하고 PR 열기
모듈, 케이스 파일, 픽스처 zip, 기록된 스냅샷을 함께 커밋하세요. 더 자세한 내용은 admin/docs/testing/create_module_test_cases.md에 있습니다.
추출물을 공유할 수 없다면 그래도 PR을 열고 그렇게 알려주세요. 픽스처는 종종 공개 연구 이미지에서 잘라낼 수 있거나, 실제 파일을 수동으로 정제할 수 있습니다. 이를 해결하는 동안에도 검토는 중단되지 않습니다.
소스에서 실행
릴리스가 iLEAPP를 실행하는 가장 쉬운 방법입니다. 모듈을 개발 중이거나 main의 미출시 변경 사항이 필요하면 소스를 사용하세요.
요구 사항
- Python 3.10 ~ 3.14
- Git
설정
git clone https://github.com/abrignoni/iLEAPP.git
cd iLEAPP
python3 -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
Linux에서는 GUI를 위해 tkinter를 설치하세요:
sudo apt-get install python3-tk
Hexordia의 Windows 설정 도움말:
사용법
출력 폴더는 실행 전에 존재해야 합니다. 소스 빌드는 공식 릴리스 빌드와 구분하기 위해 -dev 버전(예: 2.6.0-dev.0)을 보고합니다.
CLI:
python ileapp.py -t zip -i /path/to/extraction.zip -o /path/to/output/
python ileapp.py -t raw -i /path/to/acquisition.E01 -o /path/to/output/
raw는 디스크 이미지(.img, .dd, .bin 또는 분할 세트의 번호가 매겨진 .001 세그먼트) 또는 EnCase/EWF .E01 획득 파일과 그 옆의 세그먼트를 마운트 없이, 관리자 권한 없이 제자리에서 읽습니다. NTFS, FAT32, exFAT, ext2/3/4, F2FS, HFS+, APFS, QNX6, QNX4, ETFS, EFS, SquashFS, JFFS2, UBI/UBIFS, YAFFS 및 QNX IFS 볼륨을 직접 검색하며, 아티팩트가 요청한 파일만 이미지에서 읽어옵니다. GUI는 해당 확장자에 대해 자동으로 raw를 선택합니다. admin/docs/raw_image_input.md를 참조하세요.
tar는 xz 압축 tar(.tar.xz)도 읽으며, GUI는 해당 확장자에 대해 tar를 선택합니다. .tar.gz를 포함한 압축 tar는 파일을 읽기 전에 보고서 폴더에 한 번 압축 해제되므로, 실행 시 압축 해제된 tar를 위한 여유 공간이 필요합니다. 복사본은 실행이 끝나면 삭제되며, 실행 로그에 해당 단계에 걸린 시간이 기록됩니다.
GUI:
python ileappGUI.py
위의 CLI 인수를 참조하거나 python ileapp.py --help를 실행하세요.
감사의 글
이 트리아징 도구는 DFIR 커뮤니티의 많은 사람들이 협력한 결과물입니다.
iLEAPP 로고는 Derek Eiri가 제공했습니다.