From 09f3712390d003d45455e91ba14f6f05406e7582 Mon Sep 17 00:00:00 2001 From: Yuhki Date: Thu, 15 May 2025 15:16:51 +0200 Subject: [PATCH] kuro security bypass (insane) --- build.rs | 4 +- cartethyia.ico | Bin 0 -> 65488 bytes src/io/util.rs | 68 ++++++++++++----- src/network/client.rs | 170 +++++++++++++++++++++++++++--------------- zani.ico | Bin 42599 -> 0 bytes 5 files changed, 163 insertions(+), 79 deletions(-) create mode 100644 cartethyia.ico delete mode 100644 zani.ico diff --git a/build.rs b/build.rs index e0bdd3c..5bfc5cc 100644 --- a/build.rs +++ b/build.rs @@ -2,7 +2,7 @@ fn main() { #[cfg(windows)] { let mut res = winres::WindowsResource::new(); - res.set_icon("zani.ico"); + res.set_icon("cartethyia.ico"); res.compile().unwrap(); } -} \ No newline at end of file +} diff --git a/cartethyia.ico b/cartethyia.ico new file mode 100644 index 0000000000000000000000000000000000000000..7e907221e4f62a75ceb0efd8f66a4256b22ef3ca GIT binary patch literal 65488 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 literal 0 HcmV?d00001 diff --git a/src/io/util.rs b/src/io/util.rs index d390949..b11fdc7 100644 --- a/src/io/util.rs +++ b/src/io/util.rs @@ -1,15 +1,31 @@ -use std::{fs::File, io, sync::Arc, thread, time::{Duration, Instant}}; use colored::Colorize; use reqwest::blocking::Client; use serde_json::Value; +use std::{ + fs::File, + io, + sync::Arc, + thread, + time::{Duration, Instant}, +}; #[cfg(windows)] use winconsole::console::{clear, set_title}; -use crate::{config::{cfg::Config, status::Status}, download::progress::DownloadProgress, io::logging::log_error, network::client::download_file}; +use crate::{ + config::{cfg::Config, status::Status}, + download::progress::DownloadProgress, + io::logging::log_error, + network::client::download_file, +}; pub fn format_duration(duration: Duration) -> String { let secs = duration.as_secs(); - format!("{:02}:{:02}:{:02}", secs / 3600, (secs % 3600) / 60, secs % 60) + format!( + "{:02}:{:02}:{:02}", + secs / 3600, + (secs % 3600) / 60, + secs % 60 + ) } pub fn bytes_to_human(bytes: u64) -> String { @@ -26,12 +42,12 @@ pub fn calculate_total_size(resources: &[Value], client: &Client, config: &Confi let mut failed_urls = 0; println!("{} Processing files...", Status::info()); - + for (i, item) in resources.iter().enumerate() { if let Some(dest) = item.get("dest").and_then(Value::as_str) { let mut file_size = 0; let mut found_valid_url = false; - + for base_url in &config.zip_bases { let url = format!("{}/{}", base_url, dest); match client.head(&url).send() { @@ -56,7 +72,11 @@ pub fn calculate_total_size(resources: &[Value], client: &Client, config: &Confi total_size += file_size; } else { failed_urls += 1; - println!("{} Could not determine size for file: {}", Status::error(), dest); + println!( + "{} Could not determine size for file: {}", + Status::error(), + dest + ); } } @@ -99,14 +119,16 @@ pub fn exit_with_error(log_file: &File, error: &str) -> ! { #[cfg(windows)] clear().unwrap(); - + println!("{} {}", Status::error(), error); println!("\n{} Press Enter to exit...", Status::warning()); let _ = io::stdin().read_line(&mut String::new()); std::process::exit(1); } -pub fn track_progress(total_size: u64) -> ( +pub fn track_progress( + total_size: u64, +) -> ( Arc, Arc, DownloadProgress, @@ -133,11 +155,19 @@ pub fn start_title_thread( while !should_stop.load(std::sync::atomic::Ordering::SeqCst) { let elapsed = progress.start_time.elapsed(); let elapsed_secs = elapsed.as_secs(); - let downloaded_bytes = progress.downloaded_bytes.load(std::sync::atomic::Ordering::SeqCst); - let total_bytes = progress.total_bytes.load(std::sync::atomic::Ordering::SeqCst); + let downloaded_bytes = progress + .downloaded_bytes + .load(std::sync::atomic::Ordering::SeqCst); + let total_bytes = progress + .total_bytes + .load(std::sync::atomic::Ordering::SeqCst); let current_success = success.load(std::sync::atomic::Ordering::SeqCst); - let speed = if elapsed_secs > 0 { downloaded_bytes / elapsed_secs } else { 0 }; + let speed = if elapsed_secs > 0 { + downloaded_bytes / elapsed_secs + } else { + 0 + }; let (speed_value, speed_unit) = if speed > 1_000_000 { (speed / 1_000_000, "MB/s") } else { @@ -146,7 +176,11 @@ pub fn start_title_thread( let remaining_files = total_files - current_success; let remaining_bytes = total_bytes.saturating_sub(downloaded_bytes); - let eta_secs = if speed > 0 && remaining_files > 0 { remaining_bytes / speed } else { 0 }; + let eta_secs = if speed > 0 && remaining_files > 0 { + remaining_bytes / speed + } else { + 0 + }; let eta_str = format_duration(Duration::from_secs(eta_secs)); let progress_percent = if total_bytes > 0 { @@ -156,7 +190,7 @@ pub fn start_title_thread( }; let title = format!( - "Wuthering Waves Downloader - {}/{} files - Current File: {}{} - Speed: {}{} - Total ETA: {}", + "Wuthering Waves Downloader - {}/{} files - Total Downloaded: {}{} - Speed: {}{} - Total ETA: {}", current_success, total_files, bytes_to_human(downloaded_bytes), @@ -165,10 +199,10 @@ pub fn start_title_thread( speed_unit, eta_str ); - + #[cfg(windows)] set_title(&title).unwrap(); - + thread::sleep(Duration::from_secs(1)); } }) @@ -180,7 +214,7 @@ pub fn setup_ctrlc(should_stop: Arc) { #[cfg(windows)] clear().unwrap(); - + println!("\n{} Download interrupted by user", Status::warning()); }) .unwrap(); @@ -217,4 +251,4 @@ pub fn download_resources( } } } -} \ No newline at end of file +} diff --git a/src/network/client.rs b/src/network/client.rs index f88e133..5808319 100644 --- a/src/network/client.rs +++ b/src/network/client.rs @@ -1,16 +1,21 @@ use colored::Colorize; use flate2::read::GzDecoder; use reqwest::blocking::Client; -use serde_json::{from_reader, from_str, Value}; -use std::{io::{Read, Write}, fs, io, path::Path, time::Duration}; +use serde_json::{Value, from_reader, from_str}; +use std::{ + fs, io, + io::{Read, Write}, + path::Path, + time::Duration, +}; #[cfg(windows)] use winconsole::console::clear; use crate::config::cfg::Config; +use crate::config::status::Status; use crate::download::progress::DownloadProgress; use crate::io::file::{calculate_md5, check_existing_file, get_filename}; use crate::io::{logging::log_error, util::get_version}; -use crate::config::status::Status; const INDEX_URL: &str = "https://gist.githubusercontent.com/yuhkix/b8796681ac2cd3bab11b7e8cdc022254/raw/4435fd290c07f7f766a6d2ab09ed3096d83b02e3/wuwa.json"; const MAX_RETRIES: usize = 3; @@ -45,7 +50,7 @@ pub fn fetch_index(client: &Client, config: &Config, log_file: &fs::File) -> Val #[cfg(windows)] clear().unwrap(); - + println!("{} {}", Status::error(), msg); println!("\n{} Press Enter to exit...", Status::warning()); let _ = io::stdin().read_line(&mut String::new()); @@ -65,7 +70,7 @@ pub fn fetch_index(client: &Client, config: &Config, log_file: &fs::File) -> Val #[cfg(windows)] clear().unwrap(); - + println!("{} Error reading index file: {}", Status::error(), e); println!("\n{} Press Enter to exit...", Status::warning()); let _ = io::stdin().read_line(&mut String::new()); @@ -76,10 +81,10 @@ pub fn fetch_index(client: &Client, config: &Config, log_file: &fs::File) -> Val let mut decompressed_text = String::new(); if let Err(e) = gz.read_to_string(&mut decompressed_text) { log_error(log_file, &format!("Error decompressing index file: {}", e)); - + #[cfg(windows)] clear().unwrap(); - + println!("{} Error decompressing index file: {}", Status::error(), e); println!("\n{} Press Enter to exit...", Status::warning()); let _ = io::stdin().read_line(&mut String::new()); @@ -97,7 +102,7 @@ pub fn fetch_index(client: &Client, config: &Config, log_file: &fs::File) -> Val #[cfg(windows)] clear().unwrap(); - + println!("{} Error reading index file: {}", Status::error(), e); println!("\n{} Press Enter to exit...", Status::warning()); let _ = io::stdin().read_line(&mut String::new()); @@ -112,10 +117,10 @@ pub fn fetch_index(client: &Client, config: &Config, log_file: &fs::File) -> Val Ok(v) => v, Err(e) => { log_error(log_file, &format!("Error parsing index file JSON: {}", e)); - + #[cfg(windows)] clear().unwrap(); - + println!("{} Error parsing index file: {}", Status::error(), e); println!("\n{} Press Enter to exit...", Status::warning()); let _ = io::stdin().read_line(&mut String::new()); @@ -152,13 +157,16 @@ pub fn download_file( let url = format!("{}{}", base_url, dest); if let Ok(head_response) = client.head(&url).timeout(Duration::from_secs(10)).send() { - if let Some(size) = head_response.headers() + if let Some(size) = head_response + .headers() .get("content-length") .and_then(|v| v.to_str().ok()) .and_then(|s| s.parse::().ok()) { file_size = Some(size); - progress.total_bytes.fetch_add(size, std::sync::atomic::Ordering::SeqCst); + progress + .total_bytes + .fetch_add(size, std::sync::atomic::Ordering::SeqCst); break; } } @@ -166,7 +174,11 @@ pub fn download_file( if let (Some(md5), Some(size)) = (expected_md5, file_size) { if should_skip_download(&path, Some(md5), Some(size)) { - println!("{} File is valid: {}", Status::matched(), filename.bright_purple()); + println!( + "{} File is valid: {}", + Status::matched(), + filename.bright_purple() + ); return true; } } @@ -185,23 +197,36 @@ pub fn download_file( let head_response = match client.head(&url).timeout(Duration::from_secs(10)).send() { Ok(resp) if resp.status().is_success() => resp, Ok(resp) => { - log_error(log_file, &format!("CDN {} failed for {} (HTTP {})", i+1, dest, resp.status())); + log_error( + log_file, + &format!("CDN {} failed for {} (HTTP {})", i + 1, dest, resp.status()), + ); continue; - }, + } Err(e) => { - log_error(log_file, &format!("CDN {} failed for {}: {}", i+1, dest, e)); + log_error( + log_file, + &format!("CDN {} failed for {}: {}", i + 1, dest, e), + ); continue; } }; - let expected_size = file_size.or_else(|| head_response.headers() - .get("content-length") - .and_then(|v| v.to_str().ok()) - .and_then(|s| s.parse::().ok())); + let expected_size = file_size.or_else(|| { + head_response + .headers() + .get("content-length") + .and_then(|v| v.to_str().ok()) + .and_then(|s| s.parse::().ok()) + }); if let (Some(md5), Some(size)) = (expected_md5, expected_size) { if check_existing_file(&path, Some(md5), Some(size)) { - println!("{} File is valid: {}", Status::matched(), filename.bright_purple()); + println!( + "{} File is valid: {}", + Status::matched(), + filename.bright_purple() + ); return true; } } @@ -213,7 +238,7 @@ pub fn download_file( while retries > 0 { let result = download_single_file(&client, &url, &path, should_stop, progress); - + match result { Ok(_) => break, Err(e) => { @@ -224,10 +249,14 @@ pub fn download_file( last_error = Some(e); retries -= 1; let _ = fs::remove_file(&path); - + if retries > 0 { - println!("{} Retrying {}... ({} left)", - Status::warning(), filename.yellow(), retries); + println!( + "{} Retrying {}... ({} left)", + Status::warning(), + filename.yellow(), + retries + ); } } } @@ -238,8 +267,14 @@ pub fn download_file( } if retries == 0 { - log_error(log_file, &format!("Failed after retries for {}: {}", dest, - last_error.unwrap_or_default())); + log_error( + log_file, + &format!( + "Failed after retries for {}: {}", + dest, + last_error.unwrap_or_default() + ), + ); println!("{} Failed: {}", Status::error(), filename.red()); return false; } @@ -248,11 +283,16 @@ pub fn download_file( if should_stop.load(std::sync::atomic::Ordering::SeqCst) { return false; } - + let actual = calculate_md5(&path); if actual != expected { - log_error(log_file, &format!("Checksum failed for {}: expected {}, got {}", - dest, expected, actual)); + log_error( + log_file, + &format!( + "Checksum failed for {}: expected {}, got {}", + dest, expected, actual + ), + ); fs::remove_file(&path).unwrap(); println!("{} Checksum failed: {}", Status::error(), filename.red()); return false; @@ -285,26 +325,28 @@ fn download_single_file( return Err(format!("HTTP error: {}", response.status())); } - let mut file = fs::File::create(path) - .map_err(|e| format!("File error: {}", e))?; + let mut file = fs::File::create(path).map_err(|e| format!("File error: {}", e))?; let mut buffer = [0; BUFFER_SIZE]; loop { if should_stop.load(std::sync::atomic::Ordering::SeqCst) { return Err("Download interrupted".into()); } - - let bytes_read = response.read(&mut buffer) + + let bytes_read = response + .read(&mut buffer) .map_err(|e| format!("Read error: {}", e))?; - + if bytes_read == 0 { break; } - + file.write_all(&buffer[..bytes_read]) .map_err(|e| format!("Write error: {}", e))?; - - progress.downloaded_bytes.fetch_add(bytes_read as u64, std::sync::atomic::Ordering::SeqCst); + + progress + .downloaded_bytes + .fetch_add(bytes_read as u64, std::sync::atomic::Ordering::SeqCst); } Ok(()) @@ -312,7 +354,7 @@ fn download_single_file( pub fn get_config(client: &Client) -> Result { let selected_index_url = fetch_gist(client)?; - + #[cfg(windows)] clear().unwrap(); @@ -362,24 +404,31 @@ pub fn get_config(client: &Client) -> Result { println!("{} Using predownload.config", Status::info()); "predownload" } - (true, true) => { - loop { - print!("{} Choose config to use (1=default, 2=predownload): ", Status::question()); - io::stdout().flush().map_err(|e| format!("Failed to flush stdout: {}", e))?; - - let mut input = String::new(); - io::stdin() - .read_line(&mut input) - .map_err(|e| format!("Failed to read input: {}", e))?; - - match input.trim() { - "1" => break "default", - "2" => break "predownload", - _ => println!("{} Invalid choice, please enter 1 or 2", Status::error()), - } + (true, true) => loop { + print!( + "{} Choose config to use (1=default, 2=predownload): ", + Status::question() + ); + io::stdout() + .flush() + .map_err(|e| format!("Failed to flush stdout: {}", e))?; + + let mut input = String::new(); + io::stdin() + .read_line(&mut input) + .map_err(|e| format!("Failed to read input: {}", e))?; + + match input.trim() { + "1" => break "default", + "2" => break "predownload", + _ => println!("{} Invalid choice, please enter 1 or 2", Status::error()), } + }, + (false, false) => { + return Err( + "Neither default.config nor predownload.config found in response".to_string(), + ); } - (false, false) => return Err("Neither default.config nor predownload.config found in response".to_string()), }; let config_data = config @@ -416,10 +465,10 @@ pub fn get_config(client: &Client) -> Result { return Err("No valid CDN URLs found".to_string()); } - let full_index_url = format!("{}/{}", cdn_urls[0], index_file.trim_start_matches('/')); + let full_index_url = format!("{}//{}", cdn_urls[0], index_file.trim_start_matches('/')); let zip_bases = cdn_urls .iter() - .map(|cdn| format!("{}/{}", cdn, base_url.trim_start_matches('/'))) + .map(|cdn| format!("{}//{}", cdn, base_url.trim_start_matches('/'))) .collect(); Ok(Config { @@ -455,14 +504,15 @@ pub fn fetch_gist(client: &Client) -> Result { let gist_data: Value = if content_encoding.contains("gzip") { let mut buffer = Vec::new(); - response.copy_to(&mut buffer) + response + .copy_to(&mut buffer) .map_err(|e| format!("Error reading response: {}", e))?; - + let mut gz = GzDecoder::new(&buffer[..]); let mut decompressed = String::new(); gz.read_to_string(&mut decompressed) .map_err(|e| format!("Error decompressing: {}", e))?; - + from_str(&decompressed).map_err(|e| format!("Invalid JSON: {}", e))? } else { from_reader(response).map_err(|e| format!("Invalid JSON: {}", e))? diff --git a/zani.ico b/zani.ico deleted file mode 100644 index a0206fc25c132f88234fbe894303e339ea121ae7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42599 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