mirror of
https://github.com/pcvolkmer/osc-variant.git
synced 2025-04-19 19:56:50 +00:00
Add optional OSB alternative password parameter
This commit is contained in:
parent
7ef1638b58
commit
f851e9c424
10
src/cli.rs
10
src/cli.rs
@ -103,5 +103,13 @@ pub enum SubCommand {
|
|||||||
},
|
},
|
||||||
#[cfg(feature = "unzip-osb")]
|
#[cfg(feature = "unzip-osb")]
|
||||||
#[command(about = "Entpackt eine OSB-Datei")]
|
#[command(about = "Entpackt eine OSB-Datei")]
|
||||||
UnzipOsb { file: String },
|
UnzipOsb {
|
||||||
|
file: String,
|
||||||
|
#[arg(
|
||||||
|
short = 'p',
|
||||||
|
long = "password",
|
||||||
|
help = "Passwort der OSB-Datei (Optional)"
|
||||||
|
)]
|
||||||
|
password: Option<String>,
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
@ -41,6 +41,7 @@ use sha256::digest;
|
|||||||
use crate::cli::{Cli, SubCommand};
|
use crate::cli::{Cli, SubCommand};
|
||||||
use crate::model::onkostar_editor::OnkostarEditor;
|
use crate::model::onkostar_editor::OnkostarEditor;
|
||||||
use crate::profile::Profile;
|
use crate::profile::Profile;
|
||||||
|
use crate::unzip_osb::unzip_osb_using_password;
|
||||||
|
|
||||||
mod cli;
|
mod cli;
|
||||||
mod model;
|
mod model;
|
||||||
@ -258,9 +259,12 @@ fn main() -> Result<(), Box<dyn Error>> {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
#[cfg(feature = "unzip-osb")]
|
#[cfg(feature = "unzip-osb")]
|
||||||
SubCommand::UnzipOsb { file } => {
|
SubCommand::UnzipOsb { file, password } => {
|
||||||
use crate::unzip_osb::unzip_osb;
|
use crate::unzip_osb::unzip_osb;
|
||||||
unzip_osb(file.as_str())
|
match password {
|
||||||
|
Some(password) => unzip_osb_using_password(file.as_str(), password.as_str()),
|
||||||
|
None => unzip_osb(file.as_str()),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -48,11 +48,9 @@ macro_rules! error {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn unzip_osb(path: &str) {
|
pub fn unzip_osb_using_password(path: &str, password: &str) {
|
||||||
println!("Entpacke OSB-Datei {}\n", style(path).yellow());
|
println!("Entpacke OSB-Datei {}\n", style(path).yellow());
|
||||||
|
|
||||||
let pw = deobfuscate(env!("OSB_KEY").trim());
|
|
||||||
|
|
||||||
let file = match fs::File::open(path) {
|
let file = match fs::File::open(path) {
|
||||||
Ok(file) => file,
|
Ok(file) => file,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
@ -78,7 +76,7 @@ pub fn unzip_osb(path: &str) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
for i in 0..archive.len() {
|
for i in 0..archive.len() {
|
||||||
let mut file = if let Ok(Ok(file)) = archive.by_index_decrypt(i, pw.as_bytes()) {
|
let mut file = if let Ok(Ok(file)) = archive.by_index_decrypt(i, password.as_bytes()) {
|
||||||
file
|
file
|
||||||
} else {
|
} else {
|
||||||
println!(
|
println!(
|
||||||
@ -130,3 +128,7 @@ pub fn unzip_osb(path: &str) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn unzip_osb(path: &str) {
|
||||||
|
unzip_osb_using_password(path, deobfuscate(env!("OSB_KEY").trim()).as_str());
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user