返回更新列表
新发布Sep 9, 2026

iLEAPP v2026.3.3

解析 iOS 和 iPadOS 取证提取,生成 HTML、TSV、时间线、KML 和 LAVA 报告,支持模块化工件发现和加密 iTunes 备份。

分享

iLEAPP

iOS 日志、事件和 Plist 解析器

iLEAPP 解析 iOS 和 iPadOS 取证提取数据,并生成 HTML、TSV、时间线、KML 和 LAVA 输出。它支持 iOS/iPadOS 11 至当前版本。

在 leapps.org/artifacts 浏览完整的可搜索工件列表(按 LEAPP 工具筛选)。

快速开始(推荐)

下载预构建的发布版本——无需安装 Python。

平台GUICLI
Windows (Intel)ileappGUI-v*-Windows_x86_64.zipileapp-v*-Windows_x86_64.zip
Windows (ARM)ileappGUI-v*-Windows_arm64.zipileapp-v*-Windows_arm64.zip
macOS (Apple Silicon)ileappGUI-v*-macOS_Apple_Silicon.dmgileapp-v*-macOS_Apple_Silicon.zip
macOS (Intel)ileappGUI-v*-macOS_Mac_Intel.dmgileapp-v*-macOS_Mac_Intel.zip
Linux (Intel)ileappGUI-v*-Linux_x86_64.AppImageileapp-v*-Linux_x86_64.AppImage
Linux (ARM)ileappGUI-v*-Linux_arm64.AppImageileapp-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 二进制文件,而不是 ileapp.exe。

输入类型

类型描述
fs包含具有正常路径和名称的已提取文件的文件夹
zip包含具有正常名称文件的 ZIP 归档
tarTAR 归档,普通或 xz 压缩(.tar.xz)
gzGZIP 压缩归档
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_profileiLEAPP 配置文件(.ilprofile)的路径,用于限制运行哪些模块
-d--load_case_dataLEAPP 案例数据文件(.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/ 中,并在运行时动态加载。

新模块: 从分步指南 How to Write an iLEAPP Module 开始。

其他参考:

用于 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,以及 admin/test/cases/data/<module>/ 下每个工件一个小型 zip。

大小规则:每个 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__ 中,并添加你在镜像上看到的应用程序名称和版本。如果计数为零,在记录之前检查源文件确实为空。

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(包括 .tar.gz)会在读取任何文件之前解压一次到报告文件夹中,因此运行需要在该处有足够的可用空间来存放未压缩的 tar。运行结束时副本会被删除,运行日志会说明该步骤花费了多长时间。

GUI:

python ileappGUI.py

参见上方的 CLI 参数,或运行 python ileapp.py --help。

致谢

这个取证工具是 DFIR 社区许多人协作努力的成果。

iLEAPP 徽标由 Derek Eiri 提供。

分类