top of page

Şifre Güçlülük Testi

Detaylı ve Aşama Aşama Çok Uzun Anlatım:

🔧 1. Projenin Amacı ve Katkısı

Bu proje, günümüzde artan dijital güvenlik tehditlerine karşı bireyleri bilinçlendirmek ve güçlü şifre kullanımını teşvik etmek amacıyla tasarlanmıştır. İnsanlar genellikle basit, tahmin edilmesi kolay şifreler kullanır ve çoğu zaman bu şifrelerin ne kadar zayıf olduğunu fark etmez. İşte bu uygulama tam da bu sorunu çözmek için var:Kullanıcının yazdığı şifreyi analiz eder, eksik kriterleri bildirir ve önerilerle birlikte şifrenin güvenliğini artırmasına yardımcı olur.

Bu tarz bir arayüz, özellikle eğitici platformlar ve güvenlik odaklı web siteleri için son derece uygundur. Aynı zamanda Python ve Tkinter öğrenen kullanıcılar için regex, GUI tasarımı, olay tetikleme, renk yönetimi gibi kavramları deneyimlemeleri açısından da etkili bir uygulamadır.

🧱 2. Projenin Yapı Taşları

Bu uygulamanın temel bileşenleri şunlardır:

  • Tkinter: Python’un yerleşik GUI kütüphanesi. Arayüz penceresini ve bileşenleri oluşturmak için kullanılıyor.

  • Regex (Regular Expressions): Belirli karakter desenlerini tanımak için kullanılıyor. Örneğin büyük harf, rakam, sembol gibi.

  • Dinamik Renk ve Geri Bildirim Sistemi: Şifrenin kalitesine göre renkli mesajlar ve kullanıcıya öneriler sunuluyor.

  • Text Widget: Kullanıcıya birden fazla öneriyi düzgün biçimde göstermek için çok satırlı metin kutusu.

🧪 3. Şifre Güç Analizi Nasıl Yapılıyor?

Analiz şu 5 kritere göre yapılır. Her biri kullanıcı şifresine göre tek tek kontrol edilir:

Kriter

Şart

Açıklama

Uzunluk

≥ 8 karakter

Zayıf şifreler genellikle kısa olur. En az 8 karakterlik uzunluk güvenlikte temel adımdır.

Büyük Harf

A–Z arası karakter içerir

Şifre tahminini zorlaştırır.

Küçük Harf

a–z arası karakter içerir

Şifre çeşitliliği sağlar.

Rakam

0–9 arası sayı içerir

Numara eklemek güvenliği artırır.

Sembol

!@#$... gibi özel karakter içerir

Brute force saldırılara karşı dayanıklılık sağlar.

Her sağlanan kriter için şifrenin gücü 1 puan artar. Toplam 5 puan üzerinden değerlendirilir:

  • 0–2 puan (Zayıf Şifre): Güvenlik açığı oluşturur. Sisteme sızmak kolaydır.

  • 3–4 puan (Orta Şifre): Daha iyi ama hâlâ geliştirilmeli.

  • 5 puan (Güçlü Şifre): Brute-force saldırılara karşı güçlüdür.

🎨 4. Arayüz ve Tasarım Detayları

Uygulama koyu temalı ve teknoloji mavi (Robotoryo rengi #00BFFF) ile süslenmiştir. Kullanıcı dostu arayüzde:

  • Giriş kutusu kullanıcıdan şifreyi alır.

  • "Test Et" butonuna basıldığında analiz çalışır.

  • Şifrenin durumu üstte renkli bir yazı ile gösterilir.

  • Alt kısımda eksik kriterler bir Text kutusu içinde listelenir.

  • Kullanıcıya neyi eksik yaptığı net olarak açıklanır: Örneğin "🔸 Rakam içermeli" gibi.

Arayüz bileşenleri:

  • ttk.Entry: Şifre girişi

  • ttk.Button: Test Et butonu

  • ttk.Label: Sonuç mesajı (Zayıf, Orta, Güçlü)

  • tk.Text: Geri bildirim mesajları

🧠 5. Eğitimsel Değeri

Bu proje özellikle şu becerileri öğretir:

  • Regex ile karakter denetimi

  • GUI mantığı: widget yerleşimi, buton kontrolü

  • Text widget kullanımı ve içeriği dinamik olarak değiştirme

  • Stil (stil tema kullanımı) ve renk yönetimi

  • Kullanıcı dostu ve açıklayıcı hata mesajları yazma

Ayrıca Python öğrenen birine şu konularda pratik kazandırır:

  • Koşullu ifadeler (if, elif, else)

  • String işlemleri

  • GUI olay yönetimi (event-driven programming)

🚀 6. Projenin Genişletilebilirliği

Bu proje temel hâliyle sade ve etkili, ancak daha ileri düzeyde şunlar da eklenebilir:

  • Gerçek zamanlı analiz (oninput tetiklemesi): Kullanıcı her karakter girdiğinde sonuçlar anında güncellenir.

  • Şifre tekrar girme alanı + eşleşme kontrolü

  • Şifreyi görünür yapma (göz butonu)

  • Şifre puanını 0–100 arasında yüzdelik olarak gösterme

  • Veritabanı ile şifre geçmişi kaydetme (log)

  • Dark/light tema seçimi

7. Nerelerde Kullanılır?

Bu tür bir uygulama;

  • Eğitim platformlarında (örneğin EduBot gibi),

  • Güvenlik odaklı bloglarda,

  • Kendi uygulama ya da üyelik sistemi geliştiren projelerde,

  • Şifre oluşturucu araçlarda yardımcı modül olarak

rahatlıkla entegre edilebilir.

🔚 8. Sonuç ve Katma Değer

Bu şifre analiz uygulaması sadece teknik olarak değil, kullanıcıya farkındalık kazandırma açısından da değerlidir. Özellikle:

  • Şifrelerde neden sadece uzunluğun yetmediği,

  • Karakter çeşitliliğinin güvenlikte nasıl kritik olduğu,

  • Her kriterin neden önemli olduğu kullanıcıya gösterilir.

Sonuç olarak; sade, modern, güvenlik odaklı ve eğitimsel bir uygulamadır. Gerek Python öğrenen öğrenciler, gerek kendi uygulamasına güvenlik katmak isteyen geliştiriciler için birebir bir çözümdür.




import tkinter as tk
from tkinter import ttk
import re

def check_strength():
    password = entry.get()
    strength = 0
    feedback_list = []

    # Şifre analizi
    if len(password) >= 8:
        strength += 1
    else:
        feedback_list.append("🔸 En az 8 karakter olmalı.")

    if re.search(r"[A-Z]", password):
        strength += 1
    else:
        feedback_list.append("🔸 Büyük harf içermeli (A-Z).")

    if re.search(r"[a-z]", password):
        strength += 1
    else:
        feedback_list.append("🔸 Küçük harf içermeli (a-z).")

    if re.search(r"[0-9]", password):
        strength += 1
    else:
        feedback_list.append("🔸 Rakam içermeli (0-9).")

    if re.search(r"[!@#$%^&*(),.?\":{}|<>]", password):
        strength += 1
    else:
        feedback_list.append("🔸 Sembol içermeli (!@#...).")

    # Sonuç ve renk belirleme
    if strength <= 2:
        result_text = "❌ Zayıf Şifre"
        result_color = "red"
    elif strength == 3 or strength == 4:
        result_text = "⚠️ Orta Seviye"
        result_color = "orange"
    else:
        result_text = "✅ Güçlü Şifre"
        result_color = "lime"

    result_label.config(text=result_text, foreground=result_color)

    # Geri bildirimleri yazdır
    feedback.config(state='normal')
    feedback.delete("1.0", tk.END)
    if feedback_list:
        feedback.insert(tk.END, "\n".join(feedback_list))
    else:
        feedback.insert(tk.END, "🎉 Şifreniz tüm kriterleri karşılıyor.")
    feedback.config(state='disabled')

# Arayüz kurulumu
root = tk.Tk()
root.title("Şifre Güçlülük Testi")
root.geometry("500x350")
root.configure(bg="#1e1e1e")

style = ttk.Style()
style.theme_use('clam')
style.configure("TLabel", background="#1e1e1e", foreground="#00BFFF", font=("Inter", 12))
style.configure("TButton", background="#00BFFF", foreground="white", font=("Inter", 11, "bold"))

title = ttk.Label(root, text="🔐 Şifrenizi Girin ve Güç Testi Yapın")
title.pack(pady=15)

entry = ttk.Entry(root, width=40, font=("Inter", 12))
entry.pack(pady=10)

check_btn = ttk.Button(root, text="Test Et", command=check_strength)
check_btn.pack(pady=10)

result_label = ttk.Label(root, text="", font=("Inter", 14, "bold"))
result_label.pack(pady=10)

feedback = tk.Text(root, height=6, width=50, wrap='word', bg="#2a2a2a", fg="white", font=("Inter", 11))
feedback.pack(pady=10)
feedback.config(state='disabled')

root.mainloop()

Project Gallery

bottom of page