2025-12-26 22:46:36 +01:00
# unixtract
Extractor for various file formats.
2026-01-12 21:43:23 +01:00
This is a tool that is able to extract the contents of various firmware package formats, mostly from TVs and AV devices.
2026-02-25 13:28:46 +01:00
Built in Rust, and made to not depend on any external dependancies, only Rust crates. This way it can work on Windows, Linux and MacOS and even Android.
2026-01-12 21:43:23 +01:00
Please note that this project is still under active development and errors may occur. Feel free to make an issue in that case, or if you have any feature request.
# Installation
2026-02-25 13:28:46 +01:00
You can download the latest auto build for Windows and Linux x86-64 from [here ](https://nightly.link/theubusu/unixtract/workflows/rust/main ).
Or, build from source, by downloading the code or cloning the respository and running `cargo build --release` . The binary will be saved in `target/release` .
2025-12-26 22:46:36 +01:00
# Usage
2026-02-18 16:56:32 +01:00
`unixtract [OPTIONS] <INPUT_TARGET> [OUTPUT_FOLDER]`
Arguments:
2025-12-26 22:46:36 +01:00
`<INPUT_TARGET>` - The target to analyze/extract.
`[OUTPUT_FOLDER]` - Folder to save extracted files to.
If an output folder is not provided, extracted files will be saved in folder `_<INPUT_TARGET>` .
2026-02-18 16:56:32 +01:00
Options:
`-o, --options <OPTIONS>` - Format specific or global(for all formats that implement it) options, see the list below for format specific options. You can use this multiple times to activate multiple options.
2026-02-22 12:54:25 +01:00
## Global options
`dump_dec_hdrs` - For formats with an encrypted header - dump the decrypted header(s).
2025-12-26 22:46:36 +01:00
2026-01-12 21:43:23 +01:00
# Supported formats
2026-02-01 20:11:49 +01:00
## Amlogic burning image
**Used in:** Android TVs and Boxes
**Notes:** V1 format is not supported because of the lack of sample file.
**Thanks to:** https://github.com/7Ji/ampack
2026-01-12 21:43:23 +01:00
## Android OTA payload.bin
**Used in:** Android devices, smartphones, TVs
**Notes:** Some compression methods may not be supported.
**Thanks to:** https://android.googlesource.com/platform/system/update_engine/+/HEAD/update_metadata.proto
## BDL
**Used in:** Enterprise HP Printers
**Notes:** None, all files should be supported
## EPK v1
**Used in:** LG TVs before ~2010
**Notes:** None, all files should be supported
**Thanks to:** https://github.com/openlgtv/epk2extract
## EPK v2
**Used in:** LG TVs since ~2010
2026-01-13 17:41:29 +01:00
**Notes:** **Depends on keys** - see keys.rs (most common keys should be included)
2026-02-22 12:54:25 +01:00
**Thanks to:** https://github.com/openlgtv/epk2extract
**Options:**
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## EPK v3
**Used in:** LG webOS-based TVs
**Notes:** **Depends on keys** - see keys.rs
2026-02-22 12:54:25 +01:00
**Thanks to:** https://github.com/openlgtv/epk2extract
**Options:**
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
2026-02-20 21:05:51 +01:00
## Funai BDP
**Used in:** Funai & Funai-made Philips Blu-Ray player/HTS (USA market)
**Notes:** N/A
2026-01-12 21:43:23 +01:00
## Funai UPG
**Used in:** Some Funai TVs
2026-02-20 20:10:03 +01:00
**Notes:** **Depends on keys** - see keys.rs.
## Funai UPG PHL
**Used in:** Funai & Funai-made Philips TVs (USA market)
**Notes:** **Depends on keys** - see keys.rs (most common keys should be included).
2026-01-12 21:43:23 +01:00
## INVINCIBLE_IMAGE
**Used in:** LG Broadcom-based Blu-Ray players
**Notes:** Only version 3 is supported (2011+)
## MSD 1.0
**Used in:** Samsung TVs 2013-2015
**Notes:** **Depends on keys** - see keys.rs
**Thanks to:** https://github.com/bugficks/msddecrypt
2026-02-18 16:56:32 +01:00
**Options:**
2026-02-18 22:54:03 +01:00
`msd10:save_cmac` - Save CMAC data for files that is skipped by default.
`msd:print_ouith` - Prints the entire parsed OUITH header.
2026-02-22 12:54:25 +01:00
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## MSD 1.1
**Used in:** Samsung TVs 2016+
2026-01-13 17:41:29 +01:00
**Notes:** **Depends on keys** - see keys.rs (keys 2015-2018, 2020 included)
2026-01-12 21:43:23 +01:00
**Thanks to:** https://github.com/bugficks/msddecrypt
2026-02-18 22:54:03 +01:00
**Options:**
`msd:print_ouith` - Prints the entire parsed OUITH header.
2026-02-22 12:54:25 +01:00
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## MStar upgrade bin
**Used in:** Many MStar-based TVs (Hisense, Toshiba...)
**Notes:** All files should be supported, includes lzop, lz4, lzma, sparse_write support
2026-02-22 12:54:25 +01:00
**Options:**
※ Support `dump_dec_hdrs` option (will save the script)
2026-01-12 21:43:23 +01:00
## MediaTek BDP
**Used in:** Many MediaTek-based Blu-Ray players (LG, Samsung, Philips, Panasonic...)
**Notes:** Some older files may fail to extract
## MediaTek PKG (New)
**Used in:** Newer MediaTek-based TVs (TCL, Hisense, Sony, Philips, CVT...)
**Notes:** **Depends on keys** - see keys.rs (Keys for Philips and Sony included)
2026-02-18 22:54:03 +01:00
**Options:**
`mtk_pkg:no_del_comp` - Don't delete LZHS compressed partition file after decompressing.
2026-02-22 12:54:25 +01:00
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## MediaTek PKG (Old)
**Used in:** Older MediaTek-based TVs (Philips, Sony, Hisense...)
2026-02-18 22:54:03 +01:00
**Notes:** All files should be supported, decryption + decompression
**Options:**
`mtk_pkg:no_del_comp` - Don't delete LZHS compressed partition file after decompressing.
2026-02-22 12:54:25 +01:00
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## MediaTek PKG
**Used in:** MediaTek-based TVs (Sony, Philips, Panasonic, Sharp...)
**Notes:** All files should be supported, decryption + decompression, however some Philips files use custom keys - most are included some could be missing
2026-02-18 22:54:03 +01:00
**Thanks to:** https://github.com/openlgtv/epk2extract
**Options:**
`mtk_pkg:no_del_comp` - Don't delete LZHS compressed partition file after decompressing.
2026-02-22 12:54:25 +01:00
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## Novatek PKG (NFWB)
**Used in:** Some older Novatek-based TVs (LG, Philips)
**Notes:** None, all files should be supported.
## Novatek TIMG
**Used in:** Newer Novatek-based TVs (Philips TitanOS, Hisense)
**Notes:** There is an older type of this format that is not yet supported, but for newer type all files should work.
## Panasonic Blu-Ray (PANA_DVD.FRM, PANA_ESD.FRM, PANAEUSB.FRM)
**Used in:** Panasonic Blu-Ray Players and Recorders
2026-02-19 21:29:34 +01:00
**Notes:** **Depends on keys** - see keys.rs (Included keys should work for 99% of players released in and before 2014, and some released in 2018), Note that there is currently an issue with MAIN in some very ancient files not extracting correctly.
2026-02-18 18:03:52 +01:00
**Options:**
2026-02-22 12:54:25 +01:00
`pana_dvd:split_main` - Automatically split the MAIN module into seperate partitions.
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## Philips UPG (Autorun.upg, 2SWU3TXV)
**Used in:** Philips pre-TPVision TVs 200?-2013
**Notes:** **Depends on keys** - see keys.rs
**Thanks to:** https://github.com/frederic/pflupg-tool
## PUP
**Used in:** Sony PlayStation 4/5
**Notes:** File has to be decrypted.
**Thanks to:** https://github.com/Zer0xFF/ps4-pup-unpacker
## Roku
**Used in:** Roku TV's/players
**Notes:** The contents of the update file can be extracted, but some firmware images contained inside are additionally encrypted, and they cannot be decrypted as of now.
## RUF
**Used in:** Samsung Broadcom-based Blu-Ray players
**Notes:** **Depends on keys** - see keys.rs
## RVP/MVP
**Used in:** Sharp Blu-Ray players/recorders
**Notes:** Only the older types of files are supported (XOR-encrypted)
## Samsung (Folder with ***.img.sec)
**Used in:** Samsung TVs pre 2013
**Notes:** **Depends on keys** - see keys.rs
**Thanks to:** https://github.com/george-hopkins/samygo-patcher
## SDDL.SEC
**Used in:** Panasonic TVs
2026-02-18 16:56:32 +01:00
**Notes:** Pre-2011 files are not supported.
**Options:**
2026-02-18 18:39:44 +01:00
`sddl_sec:save_extra` - Save SDIT.FDI and .TXT files that are not extracted by default.
2026-02-21 00:30:12 +01:00
`sddl_sec:split_peaks` - Split PEAKS module into partitions (only on older files). This will also automatically decompress compressed partitions.
`sddl_sec:no_decomp_peaks` - Do not automatically decompress partitions when splitting PEAKS with above option.
2026-01-12 21:43:23 +01:00
## SLP
**Used in:** Samsung Tizen-based NX series cameras
**Notes:** None, all files should be supported.
## Sony BDP
**Used in:** Sony Blu-Ray players
**Notes:** Only platforms up to MSB18 are supported.
2026-01-13 17:41:29 +01:00
**Thanks to:** http://malcolmstagg.com/bdp/s390-firmware.html
# License
2026-02-25 13:28:46 +01:00
Licensed under GNU GPL v3.