Aşağıda, eğitim ve lokal test amaçlı yazdığım basit bir Python scripti var. Amaç: Luhn algoritmasına uygun (test) kredi kartı numarası oluşturup, buna uygun CVV ve rastgele son kullanma tarihi üretmek. ÖNEMLİ: Bu script gerçek, yetkisiz kullanım veya dolandırıcılık amaçlı kullanılmamalıdır. Gerçek ödemeler/testler için mutlaka ödeme sağlayıcınızın (Stripe/PayPal/Sanal POS vb.) sunduğu sandbox/test kart numaralarını kullanın.
Ne yapıyor
Ne yapıyor
- Visa / Mastercard / American Express için (seçime bağlı) kart numarası üretiyor (Luhn kontrolü ile),
- Kart tipine göre 3 veya 4 haneli CVV üretiyor,
- 2–5 yıl arası rastgele bir son kullanma tarihi atıyor,
- Birden çok kart üretme fonksiyonu var (ör: 10 adet).
Python:
import random
from datetime import datetime, timedelta
def luhn_checksum(card_number):
"""Luhn algoritması ile checksum hesapla."""
def digits_of(n):
return [int(d) for d in str(n)]
digits = digits_of(card_number)
odd_digits = digits[-1::-2]
even_digits = digits[-2::-2]
checksum = sum(odd_digits)
for d in even_digits:
checksum += sum(digits_of(d * 2))
return checksum % 10
def generate_credit_card(prefix, length):
"""Belirli prefix ile Luhn geçerli kredi kartı numarası üret."""
card_number = prefix
while len(card_number) < (length - 1):
card_number += str(random.randint(0, 9))
checksum = luhn_checksum(int(card_number))
check_digit = (10 - checksum) % 10
return card_number + str(check_digit)
def generate_cvv(card_type):
"""Kart tipine göre CVV üret (Visa/MC: 3 hane, Amex: 4 hane)."""
if card_type == "American Express":
return f"{random.randint(0, 9999):04d}"
return f"{random.randint(0, 999):03d}"
def generate_expiry_date():
"""Rastgele son kullanma tarihi üret (2-5 yıl sonrası)."""
current_year = datetime.now().year % 100 # Son iki hane
expiry_year = current_year + random.randint(2, 5)
expiry_month = f"{random.randint(1, 12):02d}"
return f"{expiry_month}/{expiry_year}"
def generate_multiple_cards(card_type, count=10):
"""Seçilen kart tipi için birden fazla kart üret."""
card_configs = {
"Visa": {"prefixes": ["4"], "length": 16},
"Mastercard": {"prefixes": [f"5{i}" for i in range(1, 6)], "length": 16},
"American Express": {"prefixes": ["34", "37"], "length": 15}
}
if card_type not in card_configs:
raise ValueError("Geçersiz kart tipi! Visa, Mastercard veya American Express seç.")
config = card_configs[card_type]
prefix = random.choice(config["prefixes"])
length = config["length"]
cards = []
for _ in range(count):
card_number = generate_credit_card(prefix, length)
cvv = generate_cvv(card_type)
expiry = generate_expiry_date()
cards.append({"card_type": card_type, "card_number": card_number, "cvv": cvv, "expiry": expiry})
return cards
# Örnek kullanım: Her tipte 10 kart
if __name__ == "__main__":
card_types = ["Visa", "Mastercard", "American Express"]
print("Hangi kart tipini istersin? Seçenekler: Visa, Mastercard, American Express")
for card_type in card_types:
print(f"\n{card_type} için 10 kart üretiyorum:")
generated_cards = generate_multiple_cards(card_type, 10)
for i, card in enumerate(generated_cards, 1):
print(f"Kart {i}: {card['card_type']}, Numara: {card['card_number']}, CVV: {card['cvv']}, Son Kullanma: {card['expiry']}")


