mirror of
https://github.com/Ap0dexMe0/unixtract.git
synced 2026-07-15 21:00:03 +02:00
mtk_pkg_old: add additional header checks
This commit is contained in:
@@ -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 encrypted_header = common::read_file(&file, 0, 152).expect("Failed to read from file.");
|
||||||
let header = decrypt(&encrypted_header, KEY, Some(HEADER_XOR_MASK));
|
let header = decrypt(&encrypted_header, KEY, Some(HEADER_XOR_MASK));
|
||||||
if &header[4..12] == b"#DH@FiRm" {
|
if &header[4..12] == b"#DH@FiRm" {
|
||||||
true
|
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 {
|
} else {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user