fix Mediatek "iMtK" header handling

This commit is contained in:
theubusu
2025-10-19 15:53:39 +02:00
parent 6ac1f32488
commit 1d433a8c4b
2 changed files with 4 additions and 20 deletions
+2 -10
View File
@@ -122,16 +122,8 @@ pub fn extract_mtk_pkg(mut file: &File, output_folder: &str) -> Result<(), Box<d
//strip iMtK thing //strip iMtK thing
let extra_header_len = if &out_data[48..52] == b"iMtK" { let extra_header_len = if &out_data[48..52] == b"iMtK" {
let imtk_len = u32::from_le_bytes(out_data[56..60].try_into().unwrap()); let imtk_len = u32::from_le_bytes(out_data[52..56].try_into().unwrap());
let imtk_content = common::string_from_bytes(&out_data[60..60 + imtk_len as usize]); imtk_len + 8
println!("iMtK Info: {}", imtk_content);
if &out_data[60 + imtk_len as usize..(60 + imtk_len as usize) + 4] == b"iPAd" {
//println!("iPAd found!");
64
} else {
imtk_len + 12
}
} else { } else {
0 0
}; };
+2 -10
View File
@@ -43,16 +43,8 @@ pub fn extract_mtk_upgrade_loader(mut file: &File, output_folder: &str) -> Resul
//strip iMtK thing //strip iMtK thing
let extra_header_len = if &data[0..4] == b"iMtK" { let extra_header_len = if &data[0..4] == b"iMtK" {
let imtk_len = u32::from_le_bytes(data[8..12].try_into().unwrap()); let imtk_len = u32::from_le_bytes(data[4..8].try_into().unwrap());
let imtk_content = common::string_from_bytes(&data[12..12 + imtk_len as usize]); imtk_len + 8
println!("iMtK Info: {}", imtk_content);
if &data[12 + imtk_len as usize..(12 + imtk_len as usize) + 4] == b"iPAd" {
//println!("iPAd found!");
64
} else {
imtk_len + 12
}
} else { } else {
0 0
}; };