openlgtv/epk2extract

GitHub: openlgtv/epk2extract

一款专为智能电视和嵌入式设备设计的固件解包工具,支持多品牌专有格式的提取、解密和分析。

Stars: 377 | Forks: 87

[![构建状态](https://travis-ci.org/openlgtv/epk2extract.svg?branch=master)](https://travis-ci.org/openlgtv/epk2extract) # epk2extract [![在 https://gitter.im/openlgtv/epk2extract 加入聊天](https://badges.gitter.im/openlgtv/epk2extract.svg)](https://gitter.im/openlgtv/epk2extract?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) 加入 Discord:https://discord.gg/xWqRVEm epk2extract 是一个工具,可以提取、解密、转换在 LG 电视及类似设备中发现的多种文件格式。 # 支持的格式: **注意:要解包 epk v2 和 v3,您需要正确的 AES 和 RSA 密钥进行解密。要获取它们,您需要从运行中的电视中转储出来。** **注意:要解密 PVR 录像,您需要从您的电视中转储唯一的 AES-128 密钥** | 格式 | 说明 | :----- | :----- | epk v1 | epk 格式的第一个版本,未加密且未签名 | epk v2 | 引入了签名和加密,需要密钥 | epk v3 | 随 WebOS 引入。需要密钥 | Mediatek pkg | Hisense/Sharp/Philips(缺少 Philips AES 密钥)以及可能其他品牌使用的 UPG/PKG 文件 | Philips "fusion" | 部分 Philips 电视使用的升级文件 | squashfs | | cramfs | | lz4 | 稍作修改的版本,带有头部魔数 | lzo | | gzip | | jffs2 | | lzhs | MTK 引导加载程序(boot.pak, tzfw.pak)的特殊压缩格式,使用 lzss + huffman | lzhs_fs | MTK 升级文件中用于外部可写分区 (3rdw) 的 LZHS 压缩文件系统 | mtdinfo/partinfo | LG 分区表格式 (mtdi.pak, part.pak) | str/pif | 可在 netcast 型号中找到的 PVR 录像格式 | sym | LG 调试符号。可以将函数名和地址提取到 IDA 脚本文件 (idc) 中 尽管 epk2extract 仅在 LG 固件文件上进行了测试,但只要根据上表支持,您也可以将其作为通用解包工具来提取其他文件。 **!!警告!!**
**epk2extract 并非设计用于重新打包文件**
**如果您希望重新打包修改后的文件,请遵循 openlgtv wiki/论坛的指导,并在 Linux 环境下进行(不要使用 cygwin)**
**不要重新打包在 cygwin 环境下提取的文件**
**任何情况下,您需自行承担风险**
*本软件按“原样”提供,不附带任何形式的保证, 无论是明示或暗示的,包括但不限于适销性、 特定用途适用性和非侵权性的保证。在任何情况下, 作者或版权持有者均不对任何索赔、损害或其他责任负责, 无论是在合同诉讼、侵权行为或其他情况下, 由于本软件或本软件的使用或其他交易而引起。* | 工具: | 描述 | :---- | :---- | lzhsenc | 使用 lzhs 算法压缩给定文件 | lzhs_scanner | 扫描给定文件以查找 lzhs 文件,并将其提取 | idb_extract | 提取 LG 固件中可以找到的图像数据库 (IDB) 文件 | jffs2extract | 提取 JFFS2 镜像。支持多种压缩算法 # 在 Linux 上编译: ### 安装构建依赖: Ubuntu/Debian: ``` apt-get install git build-essential cmake liblzo2-dev libssl-dev libc6-dev zlib1g-dev ``` Mandriva/Mageia: ``` urpmi git task-c++-devel cmake liblzo-devel libopenssl-devel glibc-devel --auto ``` ### 构建它 ``` ./build.sh ``` 构建完成后,epk2extract 可以在 ./build_\/ 目录中找到 # 在 Cygwin 上编译: ### 安装 Cygwin 并在安装过程中选择以下软件包: ``` Devel -> gcc-g++, git, cmake, make Libs -> liblzo2-devel, zlib-devel Net -> openssl-devel Utils -> ncurses ``` ### 构建它 ``` ./build.sh ``` 构建脚本会自动将所需的共享库复制到 ./build_cygwin/ 文件夹,因此您可以在没有完整 cygwin 安装的情况下独立/便携地使用 epk2extract。 ===================== ### 如何加速提取过程 您可以使用以下命令构建测试版本,该版本包含编译器优化 ``` CMAKE_FLAGS=-DCMAKE_BUILD_TYPE=Test ./build.sh ``` 测试版本的构建速度比调试版本快几个数量级 ### 使用方法: 将 *.pem 和 AES.key 文件放在与 epk2extract 二进制文件相同的目录中。 通过 sudo/fakeroot 运行它以避免警告(在从 rootfs 提取设备节点时): ``` fakeroot ./epk2extract file ``` ## 从 SYM 获取 IDC,请运行: ``` ./epk2extract xxxxxxxx.sym ``` ## 解码 part.pak 或 mtdi.pak,请执行: ``` ./epk2extract part.pak ``` 或者使用 partinfo.py(**已弃用**) ``` python partinfo.py part.pak ```
标签:AES解密, Bash脚本, cramfs, Hisense, IoT安全, jffs2, LG TV, MediaTek, Philips, PVR录制, RSA解密, Sharp, squashfs, UML, WebOS, 云资产清单, 信号处理, 分区表, 固件分析, 固件安全, 固件提取, 安全测试工具, 客户端加密, 客户端加密, 嵌入式设备, 数字取证, 文件格式解析, 智能电视, 自动化脚本, 解包工具, 解密工具, 逆向工具, 逆向工程