From 3a9d914acc78579f6384d479e70ba672da5a7841 Mon Sep 17 00:00:00 2001 From: AaronPatterson1 Date: Sat, 6 Apr 2024 19:23:47 -0400 Subject: [PATCH 1/3] Adding CC generator --- src/data/base/creditcards/creditcards.rs | 98 ++++++++++++++++++++++++ src/data/base/creditcards/mod.rs | 1 + 2 files changed, 99 insertions(+) create mode 100644 src/data/base/creditcards/creditcards.rs create mode 100644 src/data/base/creditcards/mod.rs diff --git a/src/data/base/creditcards/creditcards.rs b/src/data/base/creditcards/creditcards.rs new file mode 100644 index 0000000..81ca4d9 --- /dev/null +++ b/src/data/base/creditcards/creditcards.rs @@ -0,0 +1,98 @@ +use wasm_bindgen::prelude::*; +use crate::utils::seeder; +use rand::Rng; +use std::iter; +use chrono::{Datelike, Utc}; + +#[wasm_bindgen] +pub fn get_cc_number() -> String { + let cardnum = get_cc_number_and_issuer(); + let cardnum_split = cardnum.split_once(": ").unwrap(); + cardnum_split.1.to_string() +} + +#[wasm_bindgen] +pub fn get_cc_issuer() -> String { + ISSUERS[seeder::gen_range(0..ISSUERS_LEN)].to_string() +} + +#[wasm_bindgen] +pub fn get_cc_number_and_issuer() -> String { + let mut card_number = String::from(""); + let issuer = ISSUERS[seeder::gen_range(0..ISSUERS_LEN)]; + const CHARSET: &[u8] = b"0123456789"; + let mut rng = rand::thread_rng(); + let one_char = || CHARSET[rng.gen_range(0..CHARSET.len())] as char; + + match issuer { + "Visa" => { + card_number.push('4'); + let num_of_digits = [12,15][seeder::gen_range(0..2)]; + let digits: String = iter::repeat_with(one_char).take(num_of_digits).collect(); + card_number.push_str(&digits); + }, + "Mastercard" => { + card_number.push('5'); + let digits: String = iter::repeat_with(one_char).take(15).collect(); + card_number.push_str(&digits); + }, + "American Express" => { + card_number.push('3'); + card_number.push(['4','7'][seeder::gen_range(0..2)]); + let digits: String = iter::repeat_with(one_char).take(13).collect(); + card_number.push_str(&digits); + + }, + "Discover" => { + card_number.push('6'); + let digits: String = iter::repeat_with(one_char).take(15).collect(); + card_number.push_str(&digits); + }, + "Diners Club" => { + card_number.push('3'); + card_number.push(['0','6','8'][seeder::gen_range(0..3)]); + let digits: String = iter::repeat_with(one_char).take(12).collect(); + card_number.push_str(&digits); + // Add either 0, 6, 8 + }, + "Carte Blanche" => { + card_number.push('3'); + card_number.push(['0','6','8'][seeder::gen_range(0..3)]); + let digits: String = iter::repeat_with(one_char).take(12).collect(); + card_number.push_str(&digits); + // Add either 0, 6, 8 + }, + _ => {}, + }; + + format!("{}: {}", issuer, card_number) +} + +#[wasm_bindgen] +pub fn get_cc_cvv() -> String { + const CHARSET: &[u8] = b"0123456789"; + let mut rng = rand::thread_rng(); + let one_char = || CHARSET[rng.gen_range(0..CHARSET.len())] as char; + let digits: String = iter::repeat_with(one_char).take(3).collect(); + digits +} + +#[wasm_bindgen] +pub fn get_cc_expiry() -> String { + let mut rng = rand::thread_rng(); + let month = rng.gen_range(1..13); + let now = Utc::now(); + let year = (now.year() + rng.gen_range(1..6)).to_string().split_off(2); + + format!("{:02}/{}", month, year) +} + +static ISSUERS: [&'static str; 6] = [ + "Visa", + "Mastercard", + "American Express", + "Discover", + "Diners Club", + "Carte Blanche", +]; +static ISSUERS_LEN: usize = ISSUERS.len(); \ No newline at end of file diff --git a/src/data/base/creditcards/mod.rs b/src/data/base/creditcards/mod.rs new file mode 100644 index 0000000..54b025e --- /dev/null +++ b/src/data/base/creditcards/mod.rs @@ -0,0 +1 @@ +pub mod creditcards; \ No newline at end of file From 15f6d02470f4b2c5436fa8cc837ec4d23701d9bc Mon Sep 17 00:00:00 2001 From: AaronPatterson1 Date: Sat, 6 Apr 2024 19:26:05 -0400 Subject: [PATCH 2/3] adding mod change --- src/data/base/mod.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/data/base/mod.rs b/src/data/base/mod.rs index f3213e5..1763c1c 100644 --- a/src/data/base/mod.rs +++ b/src/data/base/mod.rs @@ -1,4 +1,5 @@ pub mod hacker; pub mod color; pub mod location; -pub mod internet; \ No newline at end of file +pub mod internet; +pub mod creditcards; \ No newline at end of file From abe59e77e83b1411a2770e582e9a1187b10a1072 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Sat, 6 Apr 2024 19:40:02 -0400 Subject: [PATCH 3/3] Fixed function names. --- src/data/base/creditcards/creditcards.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/data/base/creditcards/creditcards.rs b/src/data/base/creditcards/creditcards.rs index 81ca4d9..0d690a5 100644 --- a/src/data/base/creditcards/creditcards.rs +++ b/src/data/base/creditcards/creditcards.rs @@ -5,19 +5,19 @@ use std::iter; use chrono::{Datelike, Utc}; #[wasm_bindgen] -pub fn get_cc_number() -> String { - let cardnum = get_cc_number_and_issuer(); +pub fn get_credit_card_number() -> String { + let cardnum = get_credit_card_number_and_issuer(); let cardnum_split = cardnum.split_once(": ").unwrap(); cardnum_split.1.to_string() } #[wasm_bindgen] -pub fn get_cc_issuer() -> String { +pub fn get_credit_card_issuer() -> String { ISSUERS[seeder::gen_range(0..ISSUERS_LEN)].to_string() } #[wasm_bindgen] -pub fn get_cc_number_and_issuer() -> String { +pub fn get_credit_card_number_and_issuer() -> String { let mut card_number = String::from(""); let issuer = ISSUERS[seeder::gen_range(0..ISSUERS_LEN)]; const CHARSET: &[u8] = b"0123456789"; @@ -69,7 +69,7 @@ pub fn get_cc_number_and_issuer() -> String { } #[wasm_bindgen] -pub fn get_cc_cvv() -> String { +pub fn get_credit_card_cvv() -> String { const CHARSET: &[u8] = b"0123456789"; let mut rng = rand::thread_rng(); let one_char = || CHARSET[rng.gen_range(0..CHARSET.len())] as char; @@ -78,7 +78,7 @@ pub fn get_cc_cvv() -> String { } #[wasm_bindgen] -pub fn get_cc_expiry() -> String { +pub fn get_credit_card_expiry() -> String { let mut rng = rand::thread_rng(); let month = rng.gen_range(1..13); let now = Utc::now(); @@ -95,4 +95,4 @@ static ISSUERS: [&'static str; 6] = [ "Diners Club", "Carte Blanche", ]; -static ISSUERS_LEN: usize = ISSUERS.len(); \ No newline at end of file +static ISSUERS_LEN: usize = ISSUERS.len();