Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 48 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg

# Virtual environments
venv/
ENV/
env/

# IDE
.vscode/
.idea/
*.swp
*.swo
*~

# OS
.DS_Store
Thumbs.db

# Output files
*.csv
musteri_kredi_kartlari_tam_liste.csv
pdf_kayitlar/
kart_kayitlari/
organize_kartlar/

# Test coverage
.coverage
htmlcov/
149 changes: 134 additions & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,80 +1,199 @@
# CVV2.NET Card CVV information Extractor

Bu script, farklı formatlarda (düz metin, CSV, JSON, e-posta, PDF) bulunan kredi kartı numarası, son kullanma tarihi (exp) ve CVV bilgilerini tespit edip çıkartmak için geliştirilmiştir. Gelişmiş anahtar kelime havuzu, context analizi ve negatif keyword filtreleme özellikleri sayesinde hem Türkçe hem İngilizce veriyle yüksek başarıyla çalışır.
Bu proje, farklı formatlarda bulunan kredi kartı numarası, son kullanma tarihi (exp) ve CVV bilgilerini tespit edip çıkartmak için geliştirilmiş iki ayrı araç içerir:

1. **cvv2net.py** - Metin tabanlı dosya tarayıcı
2. **ocr_card_extractor.py** - OCR tabanlı PDF ve görsel kart bilgisi çıkartıcı + AI organizasyon sistemi

## Özellikler

### cvv2net.py
- Kredi kartı, exp ve CVV için gelişmiş ve esnek regex havuzu
- JSON, CSV, metin, e-posta ve PDF desteği
- Yan yana ve alt alta geçen verilerde context yakalama
- Alakasız (username, password, domain, host, vb.) alanları filtreleme
- Sonuçları ekrana ve isteğe bağlı olarak CSV dosyasına yazma

### ocr_card_extractor.py ⭐ YENİ ÖZELLİKLER v2.1
- ✅ **PDF ve Görsel Desteği**: PDF, JPG, PNG, BMP, TIFF formatlarını destekler
- ✅ **Akıllı Dosya Tespiti** 🆕: İçerik analiziyle yanlış/eksik uzantılı dosyaları tespit eder
- ✅ **Magic Byte Analizi** 🆕: Uzantıdan bağımsız format tespiti (PDF, JPEG, PNG, GIF, BMP, TIFF, WebP)
- ✅ **Tesseract OCR**: Tam kart bilgisi (PAN, SKT, CVV) çıkarma
- ✅ **Görüntü İşleme**: Kabartmalı/yazılı rakamları netleştirme (Gaussian blur, adaptive threshold)
- ✅ **AI Organizasyon**: Dosyaları kart sahibine göre otomatik organize etme (Nero AI Photo Tagger benzeri)
- ✅ **Çoklu Dil Desteği**: Türkçe, İngilizce, İspanyolca etiket tanıma
- ✅ **Zaman Damgası**: Her tarama için zaman kaydı
- ✅ **Güvenli Çıktı**: CSV dosyasına kısıtlı izinlerle kaydetme (chmod 600)
- ✅ **Detaylı Raporlama**: Başarı/başarısızlık istatistikleri + tespit yöntemi takibi

## Kurulum

### 1. Python Kurulumu

Öncelikle [Python 3](https://www.python.org/downloads/) yüklü olmalı.

### 2. Gerekli Paketler
### 2. Sistem Gereksinimleri (OCR için)

OCR tabanlı çıkartıcı (`ocr_card_extractor.py`) kullanacaksanız, sisteminizde Tesseract OCR kurulu olmalıdır:

Komut satırında aşağıdaki komutlarla gerekli paketleri yükleyin:
**Linux/Ubuntu:**
```bash
sudo apt-get update
sudo apt-get install tesseract-ocr
sudo apt-get install poppler-utils # PDF dönüşümü için
```

**MacOS:**
```bash
pip install PyPDF2
brew install tesseract
brew install poppler
```

**Windows:**
- [Tesseract installer](https://github.com/UB-Mannheim/tesseract/wiki) sayfasından indirip kurun
- Kurulum sonrası `ocr_card_extractor.py` dosyasında tesseract yolunu güncelleyin

### 3. Gerekli Python Paketleri

Tüm bağımlılıkları yüklemek için:

```bash
pip install -r requirements.txt
```

veya manuel olarak:

```bash
pip install PyPDF2 pdf2image pytesseract opencv-python pandas numpy
```

> **Not:** Standart Python kurulumu genellikle diğer gerekli modülleri (json, csv, re) içerir.

### 3. Script Dosyasını İndir
### 4. Script Dosyasını İndir

`ccfinder.py` dosyasını bilgisayarınıza indirin ya da repodan klonlayın.
Scripti bilgisayarınıza indirin ya da repodan klonlayın:

```bash
git clone https://github.com/cvv2com/ccfinder.git
cd ccfinder
```

## Kullanım

### Metin Tabanlı Tarama (cvv2net.py)

Komut satırında scriptin bulunduğu dizine geçin:

```bash
cd "C:\klasor\yolunuz" # Windows
cd /home/kullanici/klasor # Linux/Mac
```

### Temel Kullanım
#### Temel Kullanım

Bir dosyada arama yapmak için:
Bir dosyada veya klasörde arama yapmak için:

```bash
python ccfinder.py
python cvv2net.py
```

Bir klasörü (ve alt klasörlerini) taramak için:
Program sizden taranacak yol ve thread sayısı gibi bilgileri isteyecektir.

### OCR Tabanlı PDF ve Görsel Tarama (ocr_card_extractor.py)

PDF ve görsel dosyalarından OCR ile kart bilgilerini çıkartmak için:

#### 1. Kaynak Klasörü Hazırlayın

```bash
python3 ccfinder.py
mkdir kart_kayitlari
# PDF ve görsel dosyalarınızı bu klasöre koyun
```

Sonuçları CSV dosyasına yazmak için:
**Desteklenen Formatlar:**
- PDF dosyaları (`.pdf`)
- Görsel dosyaları (`.jpg`, `.jpeg`, `.png`, `.bmp`, `.tiff`, `.tif`)

#### 2. Scripti Çalıştırın

```bash
python ccfinder.py
python ocr_card_extractor.py
```

**Script otomatik olarak:**
- `./kart_kayitlari` klasöründeki tüm PDF ve görsel dosyalarını tarar
- PDF'leri 300 DPI çözünürlükte görsele dönüştürür
- Görüntü işleme ve OCR ile rakamları okur
- Kart sahibi, numara, SKT ve CVV bilgilerini ayıklar
- Sonuçları `musteri_kredi_kartlari_tam_liste.csv` dosyasına kaydeder
- **Dosyaları kart sahibine göre `./organize_kartlar` klasörüne organize eder** (AI tagging)

#### 3. Ayarları Özelleştirin

`ocr_card_extractor.py` dosyasını düzenleyerek:
- `KAYNAK_KLASORU`: PDF ve görsellerin bulunduğu klasör yolu
- `CIKTI_DOSYASI`: Çıktı CSV dosyasının adı
- `ORGANIZE_KLASORU`: Organize edilmiş dosyalar için klasör
- `pytesseract.pytesseract.tesseract_cmd`: Windows için Tesseract yolu

### PDF ve E-posta Desteği

PDF dosyalarını taramak için `PyPDF2` paketinin yüklü olması gerekir.
E-posta dosyaları için `.eml` ve `.mbox` desteği vardır.

## Sonuç Örneği
## Sonuç Örnekleri

### cvv2net.py Çıktısı
```
Card: 4556123412341234, Exp: 0528, CVV: 123, Line: 42, Context: Card: 4556 1234 1234 1234 Exp: 05/28 CVV: 123
```

## Negatif Anahtar Kelime Filtresi
### ocr_card_extractor.py Çıktısı
```
Toplam 5 dosya taranacak...
İşleniyor: kart_001.pdf
---> Kart Bulundu: 4546********
İşleniyor: kart_002.pdf
---> Kart Bulundu: 5412********

Başarılı! Tüm veriler 'musteri_kredi_kartlari_tam_liste.csv' dosyasına kaydedildi.
```

CSV Dosyası Format:
```csv
Kart_Sahibi,Kart_Numarasi,SKT,CVV,Dosya_Kaynagi
"JOHN DOE","4546571054123456","04/25","123","kart_001.pdf"
"JANE SMITH","5412345678901234","12/26","456","kart_002.pdf"
```

## Negatif Anahtar Kelime Filtresi (cvv2net.py)

Aşağıdaki anahtar kelimeler içeren satırlar/alanlar **kart/exp/cvv aramasında dikkate alınmaz**:
- user, username, domain, password, pass, host, server, login, smtp, imap, ftp, ssh, dns

## OCR Çalışma Mantığı (ocr_card_extractor.py)

1. **Yüksek Çözünürlük**: PDF'ler 300 DPI ile görsele dönüştürülür (küçük CVV kodlarını okumak için kritik)
2. **Görüntü İşleme**: Adaptive threshold ile kabartmalı yazıları netleştirir
3. **PAN Yakalama**: 13-19 haneli kart numaralarını (boşluklu veya bitişik) yakalar
4. **CVV Ayrıştırma**: "CVV/CVC" etiketi arar, bulamazsa izole 3-4 haneli sayıları alır
5. **Regex Desenleri**: MM/YY formatında son kullanma tarihi ve büyük harfli isim desenleri

## Güvenlik Uyarısı

⚠️ **ÖNEMLİ:** Bu araçlar tarafından oluşturulan CSV dosyaları **PCI-DSS standartlarına göre hassas veri** içerir:

- Tam PAN (Primary Account Number)
- Son kullanma tarihi (Expiration Date)
- CVV/CVC güvenlik kodu

**Güvenlik Önerileri:**
- CSV dosyalarını veritabanına aktardıktan sonra diskten **geri getirilemeyecek şekilde silin** (`shred` komutu veya secure delete araçları)
- Kaynak PDF'leri de aynı şekilde güvenli olarak silin
- Veritabanında kartı saklamak yerine tokenization kullanın
- Erişimi sadece yetkili personelle sınırlandırın
- Tüm işlemleri denetim kaydı (audit log) tutarak yapın

## Hata ve Destek

- Script hem Windows hem Linux hem de MacOS ortamında çalışır.
Expand Down
121 changes: 121 additions & 0 deletions USAGE_GUIDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# OCR Kart Çıkartıcı - Kullanım Kılavuzu

## Hızlı Başlangıç

### 1. Sistem Gereksinimlerini Kurun

**Ubuntu/Debian:**
```bash
sudo apt-get update
sudo apt-get install tesseract-ocr poppler-utils
```

**MacOS:**
```bash
brew install tesseract poppler
```

**Windows:**
- [Tesseract installer](https://github.com/UB-Mannheim/tesseract/wiki) sayfasından indirip kurun
- Poppler için [releases](https://github.com/oschwartz10612/poppler-windows/releases/) sayfasından indirin

### 2. Python Bağımlılıklarını Yükleyin

```bash
pip install -r requirements.txt
```

### 3. PDF Klasörü Oluşturun

```bash
mkdir pdf_kayitlar
```

Kart görüntülerini içeren PDF dosyalarınızı bu klasöre koyun.

### 4. Scripti Çalıştırın

```bash
python ocr_card_extractor.py
```

## Çıktı Formatı

Script, aşağıdaki kolonları içeren bir CSV dosyası oluşturur:

| Kolon | Açıklama | Örnek |
|-------|----------|-------|
| Kart_Sahibi | Kart sahibinin adı | JOHN DOE |
| Kart_Numarasi | Tam kart numarası (PAN) | 4546571054123456 |
| SKT | Son kullanma tarihi | 04/25 |
| CVV | Güvenlik kodu | 123 |
| Dosya_Kaynagi | Kaynak PDF dosyası | kart_001.pdf |

## Ayarları Özelleştirme

`ocr_card_extractor.py` dosyasını düzenleyerek aşağıdaki ayarları değiştirebilirsiniz:

```python
PDF_KLASORU = "./pdf_kayitlar" # PDF'lerin bulunduğu klasör
CIKTI_DOSYASI = "musteri_kredi_kartlari_tam_liste.csv" # Çıktı dosyası
```

**Windows kullanıcıları için:** Tesseract yolunu belirtin:
```python
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
```

## OCR Kalitesi İyileştirme İpuçları

1. **Yüksek Çözünürlük:** PDF'lerin en az 300 DPI çözünürlükte olması önerilir
2. **Net Görüntü:** Bulanık veya düşük kaliteli taramalar OCR başarısını düşürür
3. **Düzgün Işıklandırma:** Gölge veya parlamalar okuma hatalarına yol açabilir
4. **Düz Açı:** Kart düz ve dik açıda taranmalıdır

## Güvenlik Notları

⚠️ **UYARI:** Bu araç hassas finansal veri üretir!

**Güvenlik Kontrol Listesi:**
- [ ] CSV dosyasını veritabanına aktardıktan sonra güvenli olarak silin
- [ ] Kaynak PDF'leri de güvenli olarak silin (`shred` komutu)
- [ ] Erişimi yetkilendirilmiş personelle sınırlandırın
- [ ] Tüm işlemleri denetim kaydına alın
- [ ] Veritabanında PAN'ı tokenize edin
- [ ] PCI-DSS uyumluluk gereksinimlerini kontrol edin
Comment on lines +79 to +85
Copy link

Copilot AI Jan 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The documentation provides a security checklist but uses unchecked checkboxes - [ ], implying these are tasks users should complete. However, there's no enforcement mechanism in the code. For a tool handling PCI-DSS sensitive authentication data (SAD), consider implementing programmatic security controls such as: (1) automatic secure deletion of CSV after a configurable time, (2) file encryption at rest, (3) audit logging of all extractions, or (4) warnings when security best practices aren't followed. At minimum, add runtime warnings reminding users of their security obligations.

Suggested change
**Güvenlik Kontrol Listesi:**
- [ ] CSV dosyasını veritabanına aktardıktan sonra güvenli olarak silin
- [ ] Kaynak PDF'leri de güvenli olarak silin (`shred` komutu)
- [ ] Erişimi yetkilendirilmiş personelle sınırlandırın
- [ ] Tüm işlemleri denetim kaydına alın
- [ ] Veritabanında PAN'ı tokenize edin
- [ ] PCI-DSS uyumluluk gereksinimlerini kontrol edin
**Güvenlik Kontrol Listesi (kullanıcı sorumluluğu):**
Bu maddeler araç tarafından otomatik olarak uygulanmaz; gerekli güvenlik kontrollerini tasarlamak, uygulamak ve denetlemek tamamen sizin ve kurumunuzun sorumluluğundadır.
- CSV dosyasını veritabanına aktardıktan sonra güvenli olarak silin
- Kaynak PDF'leri de güvenli olarak silin (`shred` komutu vb.)
- Erişimi yetkilendirilmiş personelle sınırlandırın
- Tüm işlemleri denetim kaydına alın
- Veritabanında PAN'ı tokenize edin
- PCI-DSS uyumluluk gereksinimlerini bağımsız olarak kontrol edin ve belgelendirin

Copilot uses AI. Check for mistakes.

## Sorun Giderme

### "Tesseract bulunamadı" Hatası
- Tesseract'ın doğru kurulduğundan emin olun
- Windows'ta `tesseract_cmd` yolunu ayarlayın

### OCR Hiçbir Veri Okuyamıyor
- PDF çözünürlüğünü artırın (300+ DPI)
- Görüntü kalitesini kontrol edin
- Kabartmalı yazılar için daha iyi ışıklandırma kullanın

### Yanlış Rakamlar Okuyor
- `preprocess_image_for_card()` fonksiyonundaki threshold parametrelerini ayarlayın
- Farklı tesseract PSM modları deneyin (--psm 6, 11, veya 13)

### Performans Çok Yavaş
- DPI değerini düşürün (ancak bu OCR kalitesini azaltır)
- PDF'leri daha küçük gruplara bölün
- Çok sayfalı PDF'leri tek sayfalık PDF'lere ayırın

## Test Etme

Regex desenlerini test etmek için:

```bash
python test_ocr_extractor.py
```

## Lisans ve Yasal Uyarı

Bu araç yalnızca yasal ve izinli kullanım içindir. Kart verilerini işlerken:

- Yerel veri koruma yasalarına uyun (KVKK, GDPR, vb.)
- PCI-DSS gereksinimlerini karşılayın
- Sadece sahip olduğunuz veya işleme yetkisi aldığınız verileri kullanın
Loading