2025-12-26 22:46:36 +01:00
# unixtract
Extractor for various file formats.
2026-06-05 21:02:40 +08:00
This project is a fork of [theubusu/unixtract ](https://github.com/theubusu/unixtract ), adding extra features and improvements.
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.
2026-06-05 21:02:40 +08:00
2026-02-28 00:14:19 +01:00
**PLEASE NOTE** - this program is NOT, and will never be designed for re-packing the extracted files!
2026-01-12 21:43:23 +01:00
2026-06-05 21:02:40 +08:00
## About this fork
This fork extends the upstream project with additional features and bug fixes. For the original README and format support details, see the [upstream repository ](https://github.com/theubusu/unixtract ).
2026-01-12 21:43:23 +01:00
# 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.
2026-06-05 21:02:40 +08:00
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-06-05 21:02:40 +08:00
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
2026-04-09 16:28:49 +02:00
## CD5
**Used in:** Some Samsung TV tuners, and possibly other Irdeto(?)-based tuners
**Notes:** Decryption is not supported.
2026-01-12 21:43:23 +01:00
## 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-05-11 19:55:01 +02:00
## Funai MStar
**Used in:** MStar-based Funai & Funai-made Philips TVs (USA market)
**Notes:** Inner SoC part is extracted with mstar_secure_old
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
2026-04-27 18:37:03 +02:00
## GX DVB
**Used in:** Cheap NationalChip GX-based DVB tuners
**Notes:** None, all files should be supported
2026-01-12 21:43:23 +01:00
## INVINCIBLE_IMAGE
**Used in:** LG Broadcom-based Blu-Ray players
2026-04-29 16:28:21 +02:00
**Notes:** Key ID 1 (<2010) is not supported.
2026-04-28 18:41:49 +02:00
Tip: if you have split ROM (.ROM-00 and .ROM-01), extract both into the same folder so they get combined.
2026-01-12 21:43:23 +01:00
## 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:**
2026-05-11 16:21:45 +02:00
`mstar:keep_unknown` - Save data with unknown destination.
2026-02-22 12:54:25 +01:00
※ Support `dump_dec_hdrs` option (will save the script)
2026-01-12 21:43:23 +01:00
2026-05-11 16:21:45 +02:00
## MStar upgrade bin (Secure, old)
**Used in:** Older MStar-based TVs with Secure upgrade mode (encrypted+signed)
**Notes:** Only default upgrade key is supported. This use the extractor above after decrypting.
2026-05-11 19:55:01 +02:00
**Options:**
`mstar_secure_old:keep_decrypted` - Keep decrypted file (it will be deleted by default).
2026-05-11 16:21:45 +02:00
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-06-05 21:02:40 +08:00
**Thanks to:** https://github.com/theubusu/mtkdec
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
## Novatek PKG (NFWB)
**Used in:** Some older Novatek-based TVs (LG, Philips)
**Notes:** None, all files should be supported.
## Novatek TIMG
2026-04-11 14:07:41 +02:00
**Used in:** Newer Novatek-based TVs (Philips(TPVision), Hisense, TCL...)
2026-05-01 21:38:35 +02:00
**Notes:** None, all files should be supported.
## Onkyo
**Used in:** Onkyo AVRs and other AV devices
**Notes:** Newer files seem to use a different encryption and are not (yet) supported.
**Thanks to:** http://divideoverflow.com/2014/04/decrypting-onkyo-firmware-files/
**Options:**
※ Support `dump_dec_hdrs` option
2026-01-12 21:43:23 +01:00
## 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)
2026-05-05 19:27:51 +02:00
**Used in:** Philips pre-TPVision TVs 200?-2013 and some Sony TVs
2026-01-12 21:43:23 +01:00
**Notes:** **Depends on keys** - see keys.rs
2026-05-05 19:27:51 +02:00
**Thanks to:** https://github.com/frederic/pflupg-tool
**Options:**
`pfl_upg:no_extract_inner_upg` - Do not automatically extract inner UPGs. (Warning: this can cause file collisions sometimes!)
2026-01-12 21:43:23 +01:00
2026-05-04 13:58:34 +02:00
## Philips BDP
**Used in:** Philips MediaTek-based Blu-ray players/Home theatre systems
**Notes:** The main partition (ID 0) can be sometimes encrypted, and there is no good way to detect that. So if MTK BDP extraction fails, try running with `philips_bdp:decrypt` option.
**Options:**
`philips_bdp:decrypt` - Decrypt main partition
2026-01-12 21:43:23 +01:00
## 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
2026-04-08 18:34:22 +02:00
## SDBoot
**Used in:** Panasonic TVs SD boot
**Notes:** There is only one known sample, so support may vary.
**Base:** https://github.com/theubusu/sddl_dec
2026-01-12 21:43:23 +01:00
## SDDL.SEC
**Used in:** Panasonic TVs
2026-06-05 21:02:40 +08:00
**Notes:** None, all files should be supported.
2026-02-18 16:56:32 +01:00
**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.
2026-06-05 21:02:40 +08:00
`sddl_sec:no_decomp_peaks` - Do not automatically decompress partitions when splitting PEAKS with above option.
2026-04-08 18:34:22 +02:00
**Base:** https://github.com/theubusu/sddl_dec
## SDImage (SDImage.bin)
**Used in:** Some 2010 USA Panasonic TVs
2026-06-05 21:02:40 +08:00
**Notes:** Decryption is not yet supported.
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
2026-05-04 13:58:34 +02:00
**Used in:** Sony MediaTek-based Blu-Ray players
2026-05-13 19:01:54 +02:00
**Notes:** **Depends on keys** - see keys.rs (Platforms up to MSB29 are supported)
2026-01-13 17:41:29 +01:00
**Thanks to:** http://malcolmstagg.com/bdp/s390-firmware.html
2026-05-24 22:18:58 +02:00
## TSB Bin
**Used in:** Older Toshiba TVs
**Notes:** None, all files should be supported.
**Options:**
※ Support `dump_dec_hdrs` option
2026-01-13 17:41:29 +01:00
# License
2026-02-25 13:28:46 +01:00
Licensed under GNU GPL v3.