diff --git a/rookie-rs/src/chromium.rs b/rookie-rs/src/chromium.rs index bd4ab79..2d15a55 100644 --- a/rookie-rs/src/chromium.rs +++ b/rookie-rs/src/chromium.rs @@ -32,6 +32,13 @@ fn get_v10_key() -> Result, bcrypt_pbkdf::Error> { Ok(output.to_vec()) } +#[cfg(target_os = "macos")] +fn get_v10_key() -> Result, bcrypt_pbkdf::Error> { + let mut output = [0u8; 64]; + bcrypt_pbkdf::bcrypt_pbkdf(b"peanuts", b"saltysalt", 1, output.as_mut())?; + Ok(output.to_vec()) +} + fn decrypt_encrypted_value(value: String, encrypted_value: &[u8], key: &[u8]) -> String { let key_type = &encrypted_value[..3]; if value.is_empty() && (key_type == b"v11" || key_type == b"v10") { @@ -123,3 +130,12 @@ pub fn chromium_based(key: PathBuf, db_path: PathBuf, domains: Option> let v10_key = get_v10_key(); query_cookies(v10_key.unwrap(), db_path, domains) } + + +#[cfg(target_os = "macos")] +pub fn chromium_based(key: PathBuf, db_path: PathBuf, domains: Option>) -> Result, Box> { + let content = fs::read_to_string(&key).unwrap(); + let _key_dict: serde_json::Value = serde_json::from_str(content.as_str()).expect("Cant read json file"); + let v10_key = get_v10_key(); + query_cookies(v10_key.unwrap(), db_path, domains) +} \ No newline at end of file diff --git a/rookie-rs/src/paths.rs b/rookie-rs/src/paths.rs index f0884b6..d7d2b89 100644 --- a/rookie-rs/src/paths.rs +++ b/rookie-rs/src/paths.rs @@ -93,3 +93,55 @@ pub fn find_edge_paths() -> (PathBuf, PathBuf) { (key_path, db_path) } + + + + +#[cfg(target_os = "macos")] +pub fn find_firefox_paths() -> PathBuf { + let username = env::var("USER").unwrap(); + let user_home_str = format!("/home/{}", username.as_str()); + let user_home_path = path::Path::new(&user_home_str); + + let firefox_path = user_home_path.join("snap/firefox/common/.mozilla/firefox"); + + let profiles_path = firefox_path.join("profiles.ini"); + let default_profile = get_default_profile(&profiles_path).unwrap(); + let db_path = firefox_path.join(default_profile).join("cookies.sqlite"); + db_path +} + + +#[cfg(target_os = "macos")] +pub fn find_chrome_paths() -> (PathBuf, PathBuf) { + let appdata_path = env::var("APPDATA").unwrap(); + let appdata_path = path::Path::new(appdata_path.as_str()); + let user_data_path = appdata_path.join("../local/Google/Chrome/User Data"); + let key_path = user_data_path.join("Local State"); + let db_path = user_data_path.join("Default/Network/Cookies"); + (key_path, db_path) +} + + +#[cfg(target_os = "macos")] +pub fn find_brave_paths() -> (PathBuf, PathBuf) { + let appdata_path = env::var("APPDATA").unwrap(); + let appdata_path = path::Path::new(appdata_path.as_str()); + + let user_data_path = appdata_path.join("../local/BraveSoftware/Brave-Browser/User Data"); + let key_path = user_data_path.join("Local State"); + let db_path = user_data_path.join("Default/Network/Cookies"); + (key_path, db_path) +} + +#[cfg(target_os = "macos")] +pub fn find_edge_paths() -> (PathBuf, PathBuf) { + let appdata_path = env::var("APPDATA").unwrap(); + let appdata_path = path::Path::new(appdata_path.as_str()); + + let user_data_path = appdata_path.join("../local/Microsoft/Edge/User Data"); + let key_path = user_data_path.join("Local State"); + let db_path = user_data_path.join("Default/Network/Cookies"); + (key_path, db_path) +} +