🎉 init
This commit is contained in:
commit
1429089795
5 changed files with 2651 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/target
|
2562
Cargo.lock
generated
Normal file
2562
Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load diff
8
Cargo.toml
Normal file
8
Cargo.toml
Normal file
|
@ -0,0 +1,8 @@
|
|||
[package]
|
||||
name = "cookiex"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
|
||||
[dependencies]
|
||||
clap = "4.5.34"
|
||||
rookie = "0.5.6"
|
14
README.md
Normal file
14
README.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
# CookieX
|
||||
Extract cookies from your browser session
|
||||
|
||||
```
|
||||
Usage: cookiex [OPTIONS] [DOMAINS]
|
||||
|
||||
Arguments:
|
||||
[DOMAINS] List of domains to process
|
||||
|
||||
Options:
|
||||
-b, --browser <BROWSER> The browser to extract cookies from [firefox / chromium / chrome]
|
||||
-h, --help Print help
|
||||
-V, --version Print version
|
||||
```
|
66
src/main.rs
Executable file
66
src/main.rs
Executable file
|
@ -0,0 +1,66 @@
|
|||
use clap::{Arg, Command};
|
||||
use rookie::enums::Cookie;
|
||||
|
||||
fn main() {
|
||||
let matches = Command::new("cookiex")
|
||||
.version("1.0")
|
||||
.author("JMARyA <jmarya@hydrar.de>")
|
||||
.about("Extract cookies from your browser session")
|
||||
.arg(
|
||||
Arg::new("browser")
|
||||
.short('b')
|
||||
.long("browser")
|
||||
.value_name("BROWSER")
|
||||
.help("The browser to extract cookies from [firefox / chromium / chrome]"),
|
||||
)
|
||||
.arg(
|
||||
Arg::new("domains")
|
||||
.help("List of domains to process")
|
||||
.value_name("DOMAINS"),
|
||||
)
|
||||
.get_matches();
|
||||
|
||||
let browser: Option<&String> = matches.get_one("browser");
|
||||
let domains: Option<&String> = matches.get_one::<String>("domains");
|
||||
let domains = domains.map(|x| {
|
||||
x.split(',')
|
||||
.map(std::string::ToString::to_string)
|
||||
.collect::<Vec<_>>()
|
||||
});
|
||||
|
||||
let cookies = match browser
|
||||
.map_or("firefox".to_string(), |x| x.to_lowercase())
|
||||
.as_str()
|
||||
{
|
||||
"firefox" => rookie::firefox(domains).unwrap(),
|
||||
"chromium" => rookie::chromium(domains).unwrap(),
|
||||
"chrome" => rookie::chrome(domains).unwrap(),
|
||||
_ => {
|
||||
std::process::exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
for cookie in cookies {
|
||||
let line = cookie.netscape();
|
||||
println!("{line}");
|
||||
}
|
||||
}
|
||||
|
||||
pub trait NetscapeCookie {
|
||||
fn netscape(&self) -> String;
|
||||
}
|
||||
|
||||
impl NetscapeCookie for Cookie {
|
||||
fn netscape(&self) -> String {
|
||||
format!(
|
||||
"{}\t{}\t{}\t{}\t{}\t{}\t{}",
|
||||
self.domain,
|
||||
self.http_only.to_string().to_uppercase(),
|
||||
self.path,
|
||||
self.secure.to_string().to_uppercase(),
|
||||
self.expires.unwrap_or(u64::MAX),
|
||||
self.name,
|
||||
self.value
|
||||
)
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue