theubusu/unixtract
GitHub: theubusu/unixtract
一款支持三十多种电视及 AV 设备固件格式的跨平台提取工具,帮助安全研究人员快速解包各类厂商私有封装的固件镜像。
Stars: 9 | Forks: 1
# unixtract
多种文件格式的提取工具。
这是一款能够提取多种固件包格式内容的工具,主要针对电视和 AV 设备。
使用 Rust 构建,不依赖任何外部依赖项,仅使用 Rust crates。因此它可以在 Windows、Linux 和 MacOS 甚至 Android 上运行。
请注意,该项目仍在积极开发中,可能会出现错误。如果遇到这种情况,或者有任何功能请求,欢迎提交 issue。
**请注意** - 本程序不是,也绝不会设计用于重新打包提取出的文件!
# 安装说明
您可以从[此处](https://nightly.link/theubusu/unixtract/workflows/rust/main)下载适用于 Windows 和 Linux x86-64 的最新自动构建版本。
或者,通过下载代码或克隆仓库并运行 `cargo build --release` 从源代码构建。二进制文件将保存在 `target/release` 中。
# 用法
`unixtract [选项] [OUTPUT_FOLDER]`
参数:
`` - 要分析/提取的目标。
`[OUTPUT_FOLDER]` - 用于保存提取文件的文件夹。
如果未提供输出文件夹,提取的文件将保存在 `_` 文件夹中。
选项:
`-o, --options ` - 特定格式或全局(适用于所有实现该选项的格式)选项,请参阅下方特定格式选项列表。您可以多次使用此选项以激活多个选项。
## 全局选项
`dump_dec_hdrs` - 对于带有加密头部的格式 - 转储解密后的头部。
# 支持的格式
## Amlogic 烧录镜像
**应用于:** Android 电视和电视盒子
**注意:** 由于缺乏样本文件,不支持 V1 格式。
**致谢:** https://github.com/7Ji/ampack
## Android OTA payload.bin
**应用于:** Android 设备、智能手机、电视
**注意:** 可能不支持某些压缩方法。
**致谢:** https://android.googlesource.com/platform/system/update_engine/+/HEAD/update_metadata.proto
## BDL
**应用于:** 企业级 HP 打印机
**注意:** 无,应支持所有文件
## CD5
**应用于:** 部分三星电视调谐器,可能还有其他基于 Irdeto(?) 的调谐器
**注意:** 不支持解密。
## EPK v1
**应用于:** 约 2010 年之前的 LG 电视
**注意:** 无,应支持所有文件
**致谢:** https://github.com/openlgtv/epk2extract
## EPK v2
**应用于:** 约 2010 年之后的 LG 电视
**注意:** **依赖密钥** - 参见 keys.rs(应包含最常用的密钥)
**致谢:** https://github.com/openlgtv/epk2extract
**选项:**
※ 支持 `dump_dec_hdrs` 选项
## EPK v3
**应用于:** 基于 LG webOS 的电视
**注意:** **依赖密钥** - 参见 keys.rs
**致谢:** https://github.com/openlgtv/epk2extract
**选项:**
※ 支持 `dump_dec_hdrs` 选项
## Funai BDP
**应用于:** Funai 及 Funai 制造的飞利浦蓝光播放器/家庭影院系统(美国市场)
**注意:** 不适用
## Funai UPG
**应用于:** 部分 Funai 电视
**注意:** **依赖密钥** - 参见 keys.rs。
## Funai UPG PHL
**应用于:** Funai 及 Funai 制造的飞利浦电视(美国市场)
**注意:** **依赖密钥** - 参见 keys.rs(应包含最常用的密钥)。
## GX DVB
**应用于:** 廉价的 NationalChip GX 系列 DVB 调谐器
**注意:** 无,应支持所有文件
## INVINCIBLE_IMAGE
**应用于:** 基于 LG Broadcom 的蓝光播放器
**注意:** 仅支持版本 3(2011+)
## MSD 1.0
**应用于:** 三星电视 2013-2015
**注意:** **依赖密钥** - 参见 keys.rs
**致谢:** https://github.com/bugficks/msddecrypt
**选项:**
`msd10:save_cmac` - 为默认跳过的文件保存 CMAC 数据。
`msd:print_ouith` - 打印完整解析的 OUITH 头部。
※ 支持 `dump_dec_hdrs` 选项
## MSD 1.1
**应用于:** 三星电视 2016+
**注意:** **依赖密钥** - 参见 keys.rs(包含 2015-2018、2020 年密钥)
**致谢:** https://github.com/bugficks/msddecrypt
**选项:**
`msd:print_ouith` - 打印完整解析的 OUITH 头部。
※ 支持 `dump_dec_hdrs` 选项
## MStar 升级 bin
**应用于:** 许多基于 MStar 的电视(海信、东芝...)
**注意:** 应支持所有文件,包括 lzop、lz4、lzma、sparse_write 支持
**选项:**
※ 支持 `dump_dec_hdrs` 选项(将保存脚本)
## MediaTek BDP
**应用于:** 许多基于 MediaTek 的蓝光播放器(LG、三星、飞利浦、松下...)
**注意:** 部分较旧的文件可能提取失败
## MediaTek PKG (新版)
**应用于:** 较新的基于 MediaTek 的电视(TCL、海信、索尼、飞利浦、CVT...)
**注意:** **依赖密钥** - 参见 keys.rs(包含飞利浦和索尼的密钥)
**选项:**
`mtk_pkg:no_del_comp` - 解压后不要删除 LZHS 压缩的分区文件。
※ 支持 `dump_dec_hdrs` 选项
## MediaTek PKG (旧版)
**应用于:** 较旧的基于 MediaTek 的电视(飞利浦、索尼、海信...)
**注意:** 应支持所有文件,解密 + 解压
**选项:**
`mtk_pkg:no_del_comp` - 解压后不要删除 LZHS 压缩的分区文件。
※ 支持 `dump_dec_hdrs` 选项
## MediaTek PKG
**应用于:** 基于 MediaTek 的电视(索尼、飞利浦、松下、夏普...)
**注意:** 应支持所有文件,解密 + 解压,但部分飞利浦文件使用自定义密钥 - 大部分已包含,少数可能缺失
**致谢:** https://github.com/openlgtv/epk2extract
**选项:**
`mtk_pkg:no_del_comp` - 解压后不要删除 LZHS 压缩的分区文件。
※ 支持 `dump_dec_hdrs` 选项
## Novatek PKG (NFWB)
**应用于:** 部分较旧的基于 Novatek 的电视(LG、飞利浦)
**注意:** 无,应支持所有文件。
## Novatek TIMG
**应用于:** 较新的基于 Novatek 的电视(飞利浦(TPVision)、海信、TCL...)
**注意:** 无,应支持所有文件。
## Panasonic Blu-Ray (PANA_DVD.FRM, PANA_ESD.FRM, PANAEUSB.FRM)
**应用于:** 松下蓝光播放器和录像机
**注意:** **依赖密钥** - 参见 keys.rs(包含的密钥应适用于 99% 在 2014 年及之前发布的播放器,以及部分 2018 年发布的播放器),请注意,目前在一些非常古老的文件中,MAIN 模块存在无法正确提取的问题。
**选项:**
`pana_dvd:split_main` - 自动将 MAIN 模块拆分为单独的分区。
※ 支持 `dump_dec_hdrs` 选项
## Philips UPG (Autorun.upg, 2SWU3TXV)
**应用于:** 飞利浦 pre-TPVision 电视 200?-2013
**注意:** **依赖密钥** - 参见 keys.rs
**致谢:** https://github.com/frederic/pflupg-tool
## PUP
**应用于:** 索尼 PlayStation 4/5
**注意:** 文件必须经过解密。
**致谢:** https://github.com/Zer0xFF/ps4-pup-unpacker
## Roku
**应用于:** Roku 电视/播放器
**注意:** 可以提取更新文件的内容,但其中包含的某些固件镜像进行了额外加密,目前无法对其进行解密。
## RUF
**应用于:** 基于 Samsung Broadcom 的蓝光播放器
**注意:** **依赖密钥** - 参见 keys.rs
## RVP/MVP
**应用于:** 夏普蓝光播放器/录像机
**注意:** 仅支持较旧类型的文件(XOR 加密)
## Samsung (带有 ***.img.sec 的文件夹)
**应用于:** 2013 年之前的三星电视
**注意:** **依赖密钥** - 参见 keys.rs
**致谢:** https://github.com/george-hopkins/samygo-patcher
## SDBoot
**应用于:** 松下电视 SD 启动
**注意:** 目前仅知一个样本,因此支持情况可能会有所不同。
**基础代码:** https://github.com/theubusu/sddl_dec
## SDDL.SEC
**应用于:** 松下电视
**注意:** 无,应支持所有文件。
**选项:**
`sddl_sec:save_extra` - 保存默认未提取的 SDIT.FDI 和 .TXT 文件。
`sddl_sec:split_peaks` - 将 PEAKS 模块拆分为多个分区(仅适用于旧文件)。这也会自动解压已压缩的分区。
`sddl_sec:no_decomp_peaks` - 使用上述选项拆分 PEAKS 时,不要自动解压分区。
**基础代码:** https://github.com/theubusu/sddl_dec
## SDImage (SDImage.bin)
**应用于:** 部分 2010 年美国松下电视
**注意:** 尚不支持解密。
## SLP
**应用于:** 基于 Samsung Tizen 的 NX 系列相机
**注意:** 无,应支持所有文件。
## Sony BDP
**应用于:** 索尼蓝光播放器
**注意:** 仅支持最高至 MSB18 平台。
**致谢:** http://malcolmstagg.com/bdp/s390-firmware.html
# 许可证
基于 GNU GPL v3 授权。
标签:Amlogic, Android OTA, AV设备, IOT安全, Rust, 二进制分析, 云安全运维, 云资产清单, 可视化界面, 固件提取, 固件解包, 安卓电视, 嵌入式安全, 文件格式解析, 无外部依赖, 物联网安全, 网络流量审计, 解密, 逆向工程, 通知系统, 配置审计