1 unstable release
Uses new Rust 2024
| 0.1.0 | Jul 30, 2025 |
|---|
#790 in Testing
12KB
120 lines
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.
Table of Contents
- Features
- Installation
- Usage
- API Reference
- Input Validation
- Testing
- Continuous Integration (CI)
- Contributing
- License
- Disclaimer
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_patternmust be 16 or fewer characters, only digits or 'x'.monthmust be 1-12.yearmust be 2025-2050.cvvmust 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 teston every push and pull request to ensure all tests pass. - Cargo Build Workflow: Runs
cargo buildto 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.
- Fork the repository
- Create a feature branch
- Commit your changes
- 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.
Dependencies
~370KB