Skip to content

Junaid433/CCGen_rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ccgen_rs logo

CCGen_rs

A fast, flexible, and customizable credit card number generator library for Rust.
Generate valid (Luhn-compliant) credit card numbers for testing, QA, and development purposes.

Cargo Test Status Cargo Build Status Crates.io Version docs.rs MIT License


Table of Contents


Features

  • Generate valid credit card numbers using the Luhn algorithm
  • Customizable BIN patterns (with support for 'x' wildcards)
  • Specify or randomize expiration month, year, and CVV
  • Generate single or multiple cards at once
  • Input validation for all fields
  • Designed for easy integration and extension
  • Comprehensive test suite

Installation

Add ccgen_rs to your Cargo.toml:

[dependencies]
ccgen_rs = "0.1.0"

Usage

Basic Example

use ccgen_rs::{GeneratorOptions, Generate_Cards};

let opts = GeneratorOptions {
    bin_pattern: "411111xxxxxxxxxx", // Visa BIN with 10 random digits
    month: Some(12),
    year: Some(2030),
    cvv: Some(123),
    amount: Some(3),
};
let cards = Generate_Cards(&opts);
for card in cards {
    println!("{}|{}|{}|{}", card.number, card.month, card.year, card.cvv);
}

Randomized Example

let opts = GeneratorOptions {
    bin_pattern: "5xxxxxxxxxxxxxxx", // MasterCard BIN with 15 random digits
    month: None, // random month
    year: None,  // random year
    cvv: None,   // random cvv
    amount: Some(5),
};
let cards = Generate_Cards(&opts);

API Reference

GeneratorOptions

pub struct GeneratorOptions<'a> {
    pub bin_pattern: &'a str, // 16 chars, digits or 'x'
    pub month: Option<usize>, // 1-12
    pub year: Option<usize>,  // 2025-2050
    pub cvv: Option<usize>,   // 0-999
    pub amount: Option<usize>,// number of cards to generate
}

CardInfo

pub struct CardInfo {
    pub number: String, // 16-digit Luhn-valid card number
    pub month: String,  // MM
    pub year: String,   // YYYY
    pub cvv: String,    // 3 digits
}

Generate_Cards

pub fn Generate_Cards(opts: &GeneratorOptions) -> Vec<CardInfo>
  • Returns a vector of generated cards based on the provided options.
  • Returns an empty vector if input is invalid (e.g., bad BIN pattern, out-of-range month/year/cvv).

Input Validation

  • bin_pattern must be 16 or fewer characters, only digits or 'x'.
  • month must be 1-12.
  • year must be 2025-2050.
  • cvv must be 0-999.
  • Invalid input returns an empty vector.

Testing

Run the test suite with:

cargo test

The project includes 22+ tests covering edge cases, input validation, and Luhn compliance.

Continuous Integration (CI)

This project uses GitHub Actions for CI. Two workflows are provided:

  • Cargo Test Workflow: Runs cargo test on every push and pull request to ensure all tests pass.
  • Cargo Build Workflow: Runs cargo build to verify the project builds successfully.

You can find these workflows in .github/workflows/.

Contributing

Contributions are welcome! Please open issues or submit pull requests for bug fixes, new features, or improvements.

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Open a pull request

License

This project is licensed under the MIT License. See LICENSE for details.

Disclaimer

This library is for testing and development purposes only. Do not use generated card numbers for fraudulent or illegal activities.

About

A fast, flexible, and customizable credit card number generator library for Rust.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages