From 16427a8767282be7f297f70a9317423380ea4fc4 Mon Sep 17 00:00:00 2001 From: theubusu <80545678+theubusu@users.noreply.github.com> Date: Mon, 15 Dec 2025 00:38:15 +0100 Subject: [PATCH] mtk_pkg_old: add additional header checks --- src/formats/mtk_pkg_old.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/formats/mtk_pkg_old.rs b/src/formats/mtk_pkg_old.rs index b9e7001..8b70f17 100644 --- a/src/formats/mtk_pkg_old.rs +++ b/src/formats/mtk_pkg_old.rs @@ -49,11 +49,19 @@ impl PartEntry { } } -pub fn is_mtk_pkg_old_file(file: &File) -> bool { +pub fn is_mtk_pkg_old_file(mut file: &File) -> bool { let encrypted_header = common::read_file(&file, 0, 152).expect("Failed to read from file."); let header = decrypt(&encrypted_header, KEY, Some(HEADER_XOR_MASK)); if &header[4..12] == b"#DH@FiRm" { true + } else if &header[68..76] == b"#DH@FiRm" { + //check for 64 byte additional header used in some Sony and Philips firmwares and skip it + file.seek(std::io::SeekFrom::Start(64)).expect("Failed to seek"); + true + } else if &header[132..140] == b"#DH@FiRm" { + //check for 128 byte additional header used in some Philips firmwares and skip it + file.seek(std::io::SeekFrom::Start(128)).expect("Failed to seek"); + true } else { false }