MySQL PASSWORD hash'i nasıl çözülür?

NihatOnline

Üye
Üye
Mesaj
3
Beğeni
0
Puan
40
Ticaret Puanı
0
Herkesin aradığı sorunun cevabı artık burda...
Doğru yermi bilmiyorum taşınabilir?

BRUT-FORCE yöntemi ile bulunabilinir ama DECRİPTO etmek imkansız gibi birşey!!!
Neden ? çok basit anlamamız

MySQL PASSWORD() fonksiyonunun adımları
İlk SHA-1 Şifreyi SHA-1 ile hash'ler ve hex olur sonra binariye dönüştürür,
Örnek: 12345 → *,00A51F3F48415C7D4E8908980D443C29C69B60C9 40 karakterlik (hex) → binary'e dönüştürür.
İkinci SHA-1: Binary sonucu tekrar SHA-1'den geçirip hex'e çevirir.
Önüne * ekler ve tüm karakterleri BÜYÜK HARF yapar.

Netice: bunu tersinden geriye doğru açılması diye bişe yoktur.
Hash fonksiyonları geri döndürülemez dir artık (one-way function) deniyor
Matematiksel İspat: Hash'ler salt ve bilinen bir algoritmayla (SHA-1x2) üretilse bile, sonsuz olası şifre kombinasyonu vardır.

Tek yol tahmin ettiğiniz şifreleri sizde cripto ederek benzermi onu görebilirsiniz veya şu adresde veri tabanı var 15gb lık onların içinde varsa yazdığınız hash size sunabiliyor ordan bakabilirsiniz.

Linkleri görebilmek için giriş yap veya kayıt ol.


Özet:
Rainbow table deneyin (özellikle yaygın şifreler için).
Metin2'ye özel sözlük listeleri kullanın BurtForce (örnek: metin2_passwords.txt gibi araştırmalar yapılabilinir).
Veritabanındaki diğer şifrelerden kalıp çıkartın ve aşşadaki kodlarla sonuca bakın çıkartın.
Eğer hash gerçekten kritikse ve bulunamıyorsa, brute-force için GPU hızlandırmalı araçlar (hashcat) kullanabilirsiniz, ancak bu zaman alır. aylar yıllar gibi!!!
Brute-force olmadan çözmenin tek yolu, hash'in sizin tahmin edebileceğiniz bir şifreye ait olmasıdır. Aksi takdirde şifreyi bulmak mümkün değildir.

Python'da hashlib.sha1(sha1(binary)).hexdigest() ile hash üretip karşılaştırın.

Kod:
Genişlet Daralt Kopyala
python
import hashlib
def mysql_hash(password):
return '*' + hashlib.sha1(hashlib.sha1(password.encode()).digest()).hexdigest().upper()


Kod:
Genişlet Daralt Kopyala
import hashlib

def mysql_hash(password):
    step1 = hashlib.sha1(password.encode()).digest()
    step2 = hashlib.sha1(step1).hexdigest().upper()
    return '*' + step2

target_hash = "*27AEDA0D3A56422C3F1D20DAFF0C8109058134F3"
common_passwords = ["metin2", "admin", "abc123", "oyuncu", "123456", "qwerty"]

for pwd in common_passwords:
    if mysql_hash(pwd) == target_hash:
        print(f"Şifre bulundu: {pwd}")
        break
else:
    print("Şifre tahmin edilemedi.")
 
Son düzenleme:
sadece hashleniyorsa evet brute force denenebilir fakat herkes rate limiting uyguluyor ayrıca güvenlik standartı artık hash + salt yalnızca hashing değil yani bu gibi yaklaşımlar pek makul sayılmaz
 
Geri
Üst