Files
unixtract/src/main.rs
T

52 lines
1.4 KiB
Rust
Raw Normal View History

2025-09-11 20:26:51 +02:00
use clap::Parser;
use std::path::{PathBuf};
use std::fs::{File};
mod formats;
mod common;
#[derive(Parser, Debug)]
struct Args {
input_target: String,
output_folder: String,
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("unixtract Firmware extractor v0.0");
let args = Args::parse();
let target_path = args.input_target;
println!("Input target: {}", target_path);
let output_path = args.output_folder;
println!("Output folder: {}", output_path);
let path = PathBuf::from(target_path);
if path.is_dir() {
2025-09-12 22:18:53 +02:00
if formats::samsung_old::is_samsung_old_dir(&path) {
println!("Samsung old firmware dir detected!");
println!();
formats::samsung_old::extract_samsung_old(&path, &output_path)?
} else {
println!("Input format not recognized!");
}
2025-09-11 20:26:51 +02:00
} else {
let file = File::open(path)?;
2025-09-11 22:04:50 +02:00
println!();
2025-09-25 17:49:02 +02:00
if formats::tpv_timg::is_tpv_timg_file(&file) {
println!("TPV TIMG file detected!");
println!();
formats::tpv_timg::extract_tpv_timg(&file, &output_path)?;
} else if formats::mstar::is_mstar_file(&file) {
2025-09-11 20:26:51 +02:00
println!("Mstar upgrade file detected!");
2025-09-12 22:18:53 +02:00
println!();
2025-09-11 22:04:50 +02:00
formats::mstar::extract_mstar(&file, &output_path)?;
2025-09-11 20:26:51 +02:00
} else {
2025-09-12 22:18:53 +02:00
println!("Input format not recognized!");
2025-09-11 20:26:51 +02:00
}
}
Ok(())
}