← Back to list

Python ile Hash Cracker Yapımı

Siber güvenlik dünyasına dışarıdan bakıldığında, siyah ekranlarda akan yeşil kodlar ve saniyeler içinde patlatılan şifreler tam bir büyü…

Kadir Dokur · 2026-06-05 11:05 · 0 claps · 4.6 min read
#python #hash #password-cracking #cybersecurity #hashing
Open on Medium ↗
Wiki topics: 🔒 · Cybersecurity

Python ile Hash Cracker Yapımı

Siber güvenlik dünyasına dışarıdan bakıldığında, siyah ekranlarda akan yeşil kodlar ve saniyeler içinde patlatılan şifreler tam bir büyü gibi görünür. Ancak işin mutfağına indiğinizde, her şeyin arkasında çok mantıklı bir matematik ve harika bir yazılım mimarisi yatar.

Bu yazıda, siber güvenlik dünyasının en temel kavramlarından biri olan şifre saklama ve şifre kırma (Hash Cracker) mantığını, hayatında hiç kod yazmamış birinin bile rahatlıkla anlayabileceği şekilde, adım adım inceleyeceğiz. Yazının sonunda kendi şifre kırma aracımızı parça parça inşa etmiş olacağız.

1. Bölüm: Web Siteleri Şifremizi Nasıl Saklar?

Bir web sitesine üye olurken şifrenizi admin123 yaptınız diyelim. Çoğu insan, bu şifrenin sitenin veritabanında aynen admin123 olarak yazılı durduğunu sanır. Bu büyük bir yanlıştır. Eğer öyle olsaydı, o site hacklendiği an dünyadaki herkesin şifresi kabak gibi ortada kalırdı.

Sistemler bunun yerine Hash (Özetleme) fonksiyonu adı verilen özel matematiksel makineler kullanır.

Nedir bu Hash Fonksiyonu? (Kıyma Makinesi Benzetmesi)

Hash fonksiyonunu mutfaktaki bir kıyma makinesine benzetebilirsiniz.

  • Makinenin içine bir parça et (yani şifreniz olan admin123 metnini) atarsınız.
  • Makine kolunu çevirirsiniz ve alttan kıyma (rastgele görünen 0192023a7bbd... gibi bir karakter yığını) çıkar.
  • Buradaki sihir şudur: Dünyanın en iyi aşçısı bile olsanız, o kıymayı birleştirip tekrar eski parça et haline getiremezsiniz. Yani bu işlem tek yönlüdür; geri dönüşü yoktur.

Siz siteye her giriş yaptığınızda şifrenizi yazarsınız, site şifrenizi tekrar bu makineye atar ve çıkan kıyma, veritabanındaki kıymayla uyuşuyorsa “Hoş geldiniz” der.

İşte MD5, SHA-1 ve günümüzün en güvenli standartlarından biri olan SHA-256, bu kıyma makinesinin farklı teknolojilere sahip markaları gibidir.

2. Bölüm: Madem Geri Dönüşü Yok, Şifre Nasıl “Kırılıyor”?

Madem kıymadan et yapamıyoruz, o zaman siber güvenlik uzmanları veya hackerlar bu şifreleri nasıl kırıyor?

Cevap çok basit: Çözmüyoruz, çok hızlı tahmin ediyoruz!

Bu yönteme siber güvenlikte Dictionary Attack (Sözlük Saldırısı) denir. Mantığı şöyledir:

  1. Elimizde internetten sızdırılmış bir hash (kıyma) var: 0192023a...
  2. Elimizde dünyada en çok kullanılan milyonlarca şifrenin olduğu devasa bir metin dosyası var (Buna Wordlist diyoruz).
  3. Yazacağımız program sırayla listedeki kelimeleri (örneğin sırayla password, 123456, admin123) alır.
  4. Her kelimeyi tek tek kıyma makinesine atıp kendi hash’ini üretir.
  5. Ürettiği hash, elimizdeki gizemli hash ile eşleştiği an program çıktı verir: “Bu hash’i üreten kelime admin123'müş!”

3. Bölüm: Kod Parçalarını Ameliyat Edelim (Adım Adım Python)

Şimdi bu mantığı Python dilinde nasıl koda döktüğümüzü parça parça inceleyelim. Kod bilmenize gerek yok, her satırı Türkçe’ye çeviriyoruz.

Adım 1: Gerekli Kütüphaneler

  • import os: Bilgisayarın dosya ve klasör sistemine erişmek için kullandığımız bir araç seti.
  • import hashlib: İçinde az önce bahsettiğimiz MD5, SHA-256 gibi hazır "kıyma makinelerini" barındıran kriptografi kütüphanesi.
  • import datetime: Şifrenin ne kadar sürede kırıldığını ölçmek için zamanı tutan saatimiz.

Adım 2: Raporlama Sistemi ve Akıllı Dosya Yönetimi

Programın düzenli çalışması, kırdığı şifreleri bir yere kaydetmesi gerekir.

  • **BASE_DIR = ...*: Python'a "Şu an hangi klasörün içinde çalışıyorsan oranın tam adresini (yolunu) hafızaya al"* diyoruz.
  • **LOG_DIR = ...**: O çalıştığımız klasörün içine logs adında yeni bir klasör yolu tanımlıyoruz.
  • **if not os.path.exists...*: Bilgisayara küçük bir kontrol yaptırıyoruz: "Eğer burada logs adında bir klasör yoksa, bir tane oluştur (os.makedirs)."*
  • **LOG_FILE = ...**: Sonuçları yazacağımız metin dosyasının (crack_results.txt) tam adresini belirliyoruz.

Adım 3: Dosyaya Yazma Fonksiyonu

Program her başarılı işlemde bu fonksiyonu çağırıp dosyaya yazı yazacak.

  • **def log_result(data):: Python'da def (definition), bir işi defalarca yapmak için kurduğumuz fonksiyon** mekanizmasıdır.
  • **with open(LOG_FILE, "a"...)**: Belirlediğimiz rapor dosyasını açıyoruz. Burardaki "a" harfi (Append - Ekleme) anlamına gelir. Dosyanın içindekileri silme, her yeni sonucu en alt satıra ekle der.
  • **f.write(...)**: Gelen başarı verisini dosyaya fiziksel olarak yazar.

Adım 4: Şifre Arama ve Bellek (RAM) Yönetimi

Şimdi sözlükteki kelimeleri tek tek dönen o ana mekanizmayı kuruyoruz:

  • **def crack_hash(...)**: Şifre kırma fonksiyonunu başlatıyoruz. Dışarıdan 3 bilgi istiyor: Kırılacak hash, sözlük dosyasının yolu ve algoritma türü.
  • **.strip().lower()**: Kullanıcı kopyala-yapıştır yaparken yanlışlıkla başında veya sonunda boşluk bıraktıysa onu siler (strip) ve harflerin hepsini küçük harfe çevirir (lower).

Şimdi sözlük dosyasını açıp satır satır okuyoruz:

  • **try / except*: "Bu işlemi yapmayı dene, eğer dosya bulunamazsa çökme, bana bir hata mesajı göster"* demektir.
  • **for line in f:: En kritik yer! Eğer sözlük dosyamızda 10 milyon tane şifre varsa ve biz bunu tek seferde bilgisayara yükleseydik, bilgisayarın belleği (RAM) dolardı ve program çökerdi. for line in f döngüsü, dosyayı satır satır (akış halinde)** okur. Bir kelimeyi alır, test eder, hafızadan siler, sonraki kelimeye geçer. Bilgisayarı asla yormaz.

Adım 5: Canlı Karşılaştırma ve Şifrenin Kırılması

Sözlükten sıradaki kelimeyi (örneğin admin123) aldık. Şimdi test zamanı:

  • **word.encode('utf-8')**: Python'a metni bilgisayarın anlayacağı sıfırlar ve birlere (byte) çevirmesini söyleriz, çünkü hash makineleri düz yazı değil byte kabul eder.
  • **hash_func(...).hexdigest()**: Seçtiğimiz kıyma makinesinin kolunu çevirir ve bize 64 karakterlik o karmaşık hash çıktısını verir.
  • **print(...)**: Ekranda canlı akan o görüntü işte bu satır sayesinde olur. Programın arkada uyumadığını, o an hangi şifreyi denediğini canlı canlı izleriz.

Son adım:

**if hashed_word == target_hash**: İki hash'i yan yana koyar. Karakterler birebir uyuşuyorsa, aradığımız gizli şifreyi bulmuşuz demektir! Zamanı ölçer, ekrana başarı mesajını basar, log dosyasına yazar ve return word diyerek görevi başarıyla sonlandırır.

Sonuç

Bu pratik geliştirme sürecinden hem yazılım mimarisine hem de siber güvenliğe dair iki çıkarıma ulaşıyoruz:

  1. Zayıf Şifrelerin Riski: Eğer bir kullanıcı şifresini admin123, 123456 veya password gibi internetteki sözlüklerde kolayca bulunabilen kelimelerden seçtiyse, geliştirdiğimiz bu basit Python scripti o şifreyi milisaniyeler içinde kırabilir. Şifrelerimizin neden harf, sayı ve sembollerden oluşan karmaşık yapılar olması gerektiğinin kanıtı tam olarak budur.
  2. Büyük Veri Yönetimi: Milyonlarca satırlık büyük veri dosyalarıyla (Sözlüklerle) çalışırken, bilgisayarın kaynaklarını tüketmemek adına dosyaları döngüler eşliğinde satır satır akış (stream) mantığıyla işlemenin önemini gördük.

Siber güvenlik dünyasında her aracı sıfırdan ezbere yazmak zorunda değilsiniz; ancak kullandığınız veya yazdığınız araçların arka planda hangi mantıkla çalıştığını bilmek sizi gerçek bir uzman yapar.

Yazıyı okuduğunuz için teşekkürler, bir sonraki siber güvenlik projesinde görüşmek üzere!


메타데이터
post_id
0dc2f30f255f
slug
python-ile-hash-cracker-yapımı-0dc2f30f255f
url
https://medium.com/@kadirrdokurr_23364/python-ile-hash-cracker-yap%C4%B1m%C4%B1-0dc2f30f255f
canonical_url
https://medium.com/@kadirrdokurr_23364/python-ile-hash-cracker-yap%C4%B1m%C4%B1-0dc2f30f255f
author_url
https://medium.com/@kadirrdokurr_23364
status
ok
fetched_at
2026-06-09 15:37:30