import hashlib
import base64

# Data Sampel dari log kamu (Payload sebelum di-base64)
# Format asli: prefix:uuid:timestamp
samples = [
    {"payload": "presensi_qr_admin:66d2b843-614a-11f0-82c6-00155d05b40c:1774961140", "target": "5fca7be9624ed7d0"},
    {"payload": "presensi_qr_admin:66d2b843-614a-11f0-82c6-00155d05b40c:1774961148", "target": "5c923604b68fc8c8"}
]

# Kemungkinan besar Salt
device_id = "dk$31h6965be3a5e2e35.48866057"
possible_salts = [
    device_id,               # Tebakan kuat 1: Salt = Device ID
    "pasuruan",              # Tebakan 2: Nama Kota
    "guru",                  # Tebakan 3: Role
    "2026",                  # Tebakan 4: Tahun
    "",                      # Tebakan 5: Tanpa Salt (hanya MD5 biasa)
]

def crack_salt():
    for salt in possible_salts:
        # Coba berbagai kombinasi separator
        combos = [
            samples[0]["payload"] + salt,           # Gabung langsung
            samples[0]["payload"] + ":" + salt,      # Pake titik dua
            salt + samples[0]["payload"],           # Salt di depan
            hashlib.md5(salt.encode()).hexdigest() + samples[0]["payload"] # MD5 Salt + Payload
        ]
        
        for text in combos:
            res = hashlib.md5(text.encode()).hexdigest()[:16]
            if res == samples[0]["target"]:
                return f"BINGO! Ketemu.\nPola: {text}\nSalt: {salt}"
    
    return "Salt belum ketemu di daftar dasar. Perlu Brute Force karakter acak."

print(crack_salt())