Skip to content

Commit

Permalink
feat: initial macos implement
Browse files Browse the repository at this point in the history
  • Loading branch information
thewh1teagle committed Sep 29, 2023
1 parent d193065 commit 0a9e3a5
Show file tree
Hide file tree
Showing 2 changed files with 68 additions and 0 deletions.
16 changes: 16 additions & 0 deletions rookie-rs/src/chromium.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@ fn get_v10_key() -> Result<Vec<u8>, bcrypt_pbkdf::Error> {
Ok(output.to_vec())
}

#[cfg(target_os = "macos")]
fn get_v10_key() -> Result<Vec<u8>, 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") {
Expand Down Expand Up @@ -123,3 +130,12 @@ pub fn chromium_based(key: PathBuf, db_path: PathBuf, domains: Option<Vec<&str>>
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<Vec<&str>>) -> Result<Vec<Cookie>, Box<dyn Error>> {
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)
}
52 changes: 52 additions & 0 deletions rookie-rs/src/paths.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}

0 comments on commit 0a9e3a5

Please sign in to comment.