### 🛠️ Kurulum Adımları
#### 1. **Python ve Gerekli Araçların Kurulumu**
- Python 3.8 veya üzeri sürüm gereklidir. Terminalde aşağıdaki komutla kontrol edin:
Eğer yoksa, Python'u kurun:
- Linux:
```
```
- Windows: [Python Resmi Sitesi](https://www.python.org/downloads/)'nden indirin.
#### 2. **Proje Dizini Oluşturma**
Terminalde proje için bir dizin oluşturun ve içine girin:
#### 3. **Sanal Ortam Oluşturma ve Etkinleştirme**
- Sanal ortam oluşturun:
- Sanal ortamı etkinleştirin:
- Linux/Mac:
- Windows:
```bash
card_env\Scripts\activate
```
#### 4. **Bağımlılıkları Yükleme**
Aşağıdaki komutlarla gerekli kütüphaneleri yükleyin:
#### 5. **Kafka Kurulumu**
1. Kafka'yı indirin:
2. Zookeeper'ı başlatın:
(Bu terminali açık bırakın, yeni bir terminal açın.)
3. Kafka'yı başlatın:
(Bu terminali de açık bırakın, yeni bir terminal açın.)
4. Kafka topic'i oluşturun:
#### 6. **Proje Dosyalarını Oluşturma**
Proje dizininde `main.py` adında bir Python dosyası oluşturun:
Dosyayı bir metin editörüyle açın (örneğin, `nano` veya `vim`):
İçine [En assagida verdigim kodu yapıştırın ve kaydedin.]
CTRL+X Enter
---
### 🚀 Sistemi Çalıştırma
#### 1. **Kodu Çalıştırma**
Sanal ortam etkinken, proje dizininde aşağıdaki komutu çalıştırın:
#### 2. **Çıktıları İzleme**
- **Loglar**: Terminalde kart üretimi ve doğrulama işlemleri loglanır.
Örnek log:
```
```
- **Veritabanı**: `virtual_card_system_v2.db` dosyası oluşturulur ve kartlar burada saklanır.
- **Kafka**: Kart verileri `virtual-cards` topic'ine gönderilir. Kafka'dan verileri dinlemek için:
---
### 🛑 Sistemi Durdurma
1. **Kodu Durdurma**: Terminalde `Ctrl+C` ile kodu durdurun.
2. **Kafka ve Zookeeper'ı Durdurma**:
- Kafka'yı çalıştıran terminalde `Ctrl+C`.
- Zookeeper'ı çalıştıran terminalde `Ctrl+C`.
---
### 📂 Proje Dizini Yapısı
Kurulum sonrası proje dizini şu şekilde olacaktır:
```
---
### 🔍 Örnek Çıktılar
#### Veritabanı İçeriği
Örnek çıktı:
#### Kafka Mesajları
Kafka'dan gelen mesajlar:
```
4112345678901272|411234|09|28|123|VISA|ABank|United States|2023-10-05 15:30:00
```
Kafka
```
---
Bu adımları takip ederek, **tamamen terminal üzerinden rahatlıkla kullanabilirsiniz
### 🌟 Temel Özellikler
. **Tam Kapsamlı Kart Üretimi**
- ✅ 16 Haneli Gerçekçi Kart Numarası (BIN + Rastgele Hane + Luhn Check Digit)
- ✅ Dinamik Son Kullanma Tarihi (MM/YY formatında, gelecekteki 1-5 yıl arası)
- ✅ Kart Tipine Özel CVV (Visa/MasterCard: 3 hane, Amex: 4 hane)
- 🌍 Ülke ve Banka Entegrasyonu (Örnek: "VISA" ↔ "ABank", "Amex" ↔ "USBank")
2. **Gerçek Zamanlı Doğrulama**
- 🔍 **Luhn Algoritması**: Kart numarasının matematiksel geçerliliği
- 📅 **Tarih Kontrolü**: Son kullanma tarihinin geçmiş olmaması
- 🛡 **CVV Validasyonu**: Uzunluk ve format kontrolü (Örnek: Amex → 4 hane)
- 🏦 **Banka Uyumluluğu**: Kart tipi ile banka eşleşmesi (Config'den kontrol)
3. **Veritabanı Yönetimi**
- 🗄️ SQLite ile Yerel Saklama
- 📊 Tablo Yapısı:
```",
```
---
### ⚙️ Teknik Detaylar
#### 1. **Kart Numarası Üretim Algoritması**
#### 2. **Son Kullanma Tarihi Mantığı**
```python
# Şu an: Ekim 2023 (10/23)
# Üretilen: 09/28 → Eylül 2028 (Geçerli)
# Geçersiz örnek: 05/23 → Mayıs 2023 (Geçmiş)
```
#### 3. **CVV Üretim Kuralları**
---
### 🚀 Sistem Akışı
1. **Adım**: BIN numarası üret (Luhn uyumlu)
2. **Adım**: Tam kart numarası oluştur (BIN + 9 hane + check digit)
3. **Adım**: Son kullanma tarihi ve CVV ekle
4. **Adım**: Anlık validasyon yap (4 kriter)
5. **Adım**: Geçerliyse veritabanına kaydet + Kafka'ya gönder
---
### 🔥 Örnek Senaryo
```python
# Doğrulama Sonucu:
1. Luhn Check: 5425231234567892 → Valid ✅
2. Tarih: 12/27 → Gelecek ✅
3. CVV: 3 hane (MasterCard uyumlu) ✅
4. XBank, MasterCard bankalar listesinde ✅
→ KABUL EDİLDİ 🟢
```
---
### 📌 Ekstra Özellikler
- **Kafka Entegrasyonu**: Kart verileri mesaj kuyruğuna iletilir
- **Fraud Detection**: Makine öğrenmesi ile anormal desenler tespiti (SGDClassifier)
- **Loglama**: Tüm işlemler detaylı loglanır (success/error)
Bu geliştirmelerle sistem:
- 🚀 **Tam kapsamlı sanal kart üretimi**
- 🔍 **Anlık algoritmik doğrulama**
- 🛡 **Banka-kart uyumluluk kontrolü**
- 📅 **Dinamik son kullanma tarihi**
sağlayarak gerçek dünya kullanım senaryolarını tamamen simüle edebilir.

#### 1. **Python ve Gerekli Araçların Kurulumu**
- Python 3.8 veya üzeri sürüm gereklidir. Terminalde aşağıdaki komutla kontrol edin:
Eğer yoksa, Python'u kurun:
- Linux:
```
Kod:
bash
sudo apt update
sudo apt install python3 python3-venv python3-pip
- Windows: [Python Resmi Sitesi](https://www.python.org/downloads/)'nden indirin.
#### 2. **Proje Dizini Oluşturma**
Terminalde proje için bir dizin oluşturun ve içine girin:
Kod:
```bash
mkdir virtual_card_system
cd virtual_card_system
```
#### 3. **Sanal Ortam Oluşturma ve Etkinleştirme**
- Sanal ortam oluşturun:
Kod:
```bash
python3 -m venv card_env
```
- Linux/Mac:
Kod:
```bash
source card_env/bin/activate
```
```bash
card_env\Scripts\activate
```
#### 4. **Bağımlılıkları Yükleme**
Aşağıdaki komutlarla gerekli kütüphaneleri yükleyin:
Kod:
```bash
pip install faker sqlalchemy kafka-python scikit-learn pandas prophet torch asyncio
```
#### 5. **Kafka Kurulumu**
1. Kafka'yı indirin:
Kod:
```bash
wget https://downloads.apache.org/kafka/3.5.1/kafka_2.13-3.5.1.tgz
tar -xzf kafka_2.13-3.5.1.tgz
cd kafka_2.13-3.5.1
```
Kod:
```bash
bin/zookeeper-server-start.sh config/zookeeper.properties
```
3. Kafka'yı başlatın:
Kod:
```bash
bin/kafka-server-start.sh config/server.properties
```
4. Kafka topic'i oluşturun:
Kod:
```bash
bin/kafka-topics.sh --create --topic virtual-cards --bootstrap-server localhost:9092
```
#### 6. **Proje Dosyalarını Oluşturma**
Proje dizininde `main.py` adında bir Python dosyası oluşturun:
Kod:
```bash
touch main.py
```
Kod:
```bash
nano main.py
```
CTRL+X Enter
---
### 🚀 Sistemi Çalıştırma
#### 1. **Kodu Çalıştırma**
Sanal ortam etkinken, proje dizininde aşağıdaki komutu çalıştırın:
Kod:
```bash
python main.py
```
#### 2. **Çıktıları İzleme**
- **Loglar**: Terminalde kart üretimi ve doğrulama işlemleri loglanır.
Örnek log:
```
Kod:
2023-10-05 15:30:00 - CardSystem - INFO - Yeni kart 4112345678901272 veritabanına eklendi ve Kafka'ya gönderildi.
- **Veritabanı**: `virtual_card_system_v2.db` dosyası oluşturulur ve kartlar burada saklanır.
- **Kafka**: Kart verileri `virtual-cards` topic'ine gönderilir. Kafka'dan verileri dinlemek için:
Kod:
```bash
bin/kafka-console-consumer.sh --topic virtual-cards --from-beginning --bootstrap-server localhost:9092
```
---
### 🛑 Sistemi Durdurma
1. **Kodu Durdurma**: Terminalde `Ctrl+C` ile kodu durdurun.
2. **Kafka ve Zookeeper'ı Durdurma**:
- Kafka'yı çalıştıran terminalde `Ctrl+C`.
- Zookeeper'ı çalıştıran terminalde `Ctrl+C`.
---
### 📂 Proje Dizini Yapısı
Kurulum sonrası proje dizini şu şekilde olacaktır:
```
Kod:
```
virtual_card_system/
├── card_env/ # Sanal ortam
├── kafka_2.13-3.5.1/ # Kafka dosyaları
├── main.py # Ana kod dosyası
├── virtual_card_system_v2.db # SQLite veritabanı
└── requirements.txt # Bağımlılıklar
```
---
### 🔍 Örnek Çıktılar
#### Veritabanı İçeriği
Kod:
```sql
sqlite3 virtual_card_system_v2.db
sqlite> SELECT * FROM cards;
```
Kod:
```
4112345678901272|411234|09|28|123|VISA|ABank|United States|2023-10-05 15:30:00
```
Kafka'dan gelen mesajlar:
```
4112345678901272|411234|09|28|123|VISA|ABank|United States|2023-10-05 15:30:00
```
Kafka
Kod:
",
"expiry_month": "09",
"expiry_year": "28",
"cvv": "123",
"card_type": "VISA",
"bank": "ABank",
"country": "United States"
}
---
Bu adımları takip ederek, **tamamen terminal üzerinden rahatlıkla kullanabilirsiniz
### 🌟 Temel Özellikler
. **Tam Kapsamlı Kart Üretimi**
- ✅ 16 Haneli Gerçekçi Kart Numarası (BIN + Rastgele Hane + Luhn Check Digit)
- ✅ Dinamik Son Kullanma Tarihi (MM/YY formatında, gelecekteki 1-5 yıl arası)
- ✅ Kart Tipine Özel CVV (Visa/MasterCard: 3 hane, Amex: 4 hane)
- 🌍 Ülke ve Banka Entegrasyonu (Örnek: "VISA" ↔ "ABank", "Amex" ↔ "USBank")
2. **Gerçek Zamanlı Doğrulama**
- 🔍 **Luhn Algoritması**: Kart numarasının matematiksel geçerliliği
- 📅 **Tarih Kontrolü**: Son kullanma tarihinin geçmiş olmaması
- 🛡 **CVV Validasyonu**: Uzunluk ve format kontrolü (Örnek: Amex → 4 hane)
- 🏦 **Banka Uyumluluğu**: Kart tipi ile banka eşleşmesi (Config'den kontrol)
3. **Veritabanı Yönetimi**
- 🗄️ SQLite ile Yerel Saklama
- 📊 Tablo Yapısı:
```",
Kod:
```python
{
"full_card_number": "4112345678901272", # Primary Key
"bin_number": "411234",
"expiry_month": "09",
"expiry_year": "28",
"cvv": "123",
"card_type": "VISA",
"bank": "ABank",
"country": "United States",
"timestamp": "2023-10-05 14:30:00"
---
### ⚙️ Teknik Detaylar
#### 1. **Kart Numarası Üretim Algoritması**
Kod:
```python
# Örnek: BIN=411234
partial = "411234" + "789012345" # 15 hane
check_digit = 2 # Luhn ile hesaplanır
tam_numara = "4112347890123452" # 16 hane
```
#### 2. **Son Kullanma Tarihi Mantığı**
```python
# Şu an: Ekim 2023 (10/23)
# Üretilen: 09/28 → Eylül 2028 (Geçerli)
# Geçersiz örnek: 05/23 → Mayıs 2023 (Geçmiş)
```
#### 3. **CVV Üretim Kuralları**
Kod:
#### 3. **CVV Üretim Kuralları**
| Kart Tipi | CVV Uzunluğu | Örnek |
|-------------|--------------|---------|
| Visa | 3 | 456 |
| MasterCard | 3 | 789 |
| Amex | 4 | 3456 |
---
### 🚀 Sistem Akışı
1. **Adım**: BIN numarası üret (Luhn uyumlu)
2. **Adım**: Tam kart numarası oluştur (BIN + 9 hane + check digit)
3. **Adım**: Son kullanma tarihi ve CVV ekle
4. **Adım**: Anlık validasyon yap (4 kriter)
5. **Adım**: Geçerliyse veritabanına kaydet + Kafka'ya gönder
---
### 🔥 Örnek Senaryo
```python
Kod:
# Üretilen Kart:
{
"full_card_number": "5425231234567892",
"expiry_month": "12",
"expiry_year": "27",
"cvv": "369",
"card_type": "MasterCard",
"bank": "XBank"
}
# Doğrulama Sonucu:
1. Luhn Check: 5425231234567892 → Valid ✅
2. Tarih: 12/27 → Gelecek ✅
3. CVV: 3 hane (MasterCard uyumlu) ✅
4. XBank, MasterCard bankalar listesinde ✅
→ KABUL EDİLDİ 🟢
```
---
### 📌 Ekstra Özellikler
- **Kafka Entegrasyonu**: Kart verileri mesaj kuyruğuna iletilir
- **Fraud Detection**: Makine öğrenmesi ile anormal desenler tespiti (SGDClassifier)
- **Loglama**: Tüm işlemler detaylı loglanır (success/error)
Bu geliştirmelerle sistem:
- 🚀 **Tam kapsamlı sanal kart üretimi**
- 🔍 **Anlık algoritmik doğrulama**
- 🛡 **Banka-kart uyumluluk kontrolü**
- 📅 **Dinamik son kullanma tarihi**
sağlayarak gerçek dünya kullanım senaryolarını tamamen simüle edebilir.
