[h4g2 v1] python crackme

Thojyy

DX01WARE
Diamond Üye
Katılım
24 Şub 2021
Mesajlar
576
Beğeniler
81
h4g2 crackme test amaçlıdır.
Özellikler:
Honeypot
Anti-VM
Anti-Debug
Cryptographic Key Derivation
String & Symbol Obfuscation
CFF
istenilen:
password|secret key



DİE SONUCU

image.png
 
Son düzenleme:
h4g2 crackme test amaçlıdır.
Özellikler:
Honeypot
Anti-VM
Anti-Debug
Cryptographic Key Derivation
String & Symbol Obfuscation
CFF
istenilen:
password|secret key



DİE SONUCU

image.png
3.14 Ancak bakmaya çalışacağım.
 
1 2 koruma daha ekledim bekliyorum ama zannetmiyorum patch veya bypass ile bunu geçebileceğini
Programında mantıksal olarak bir hata var oda şu Kullanıcı doğru keyi bilmiyorsa o payloadı kimse çözemez, yani kısaca key programdada sabit olarak yok sadece en başta bu programı üreten kişinin şifresine göre bir payload türetilmiş.


Kod:
import sys
import ctypes
import time
import base64
import zlib
import marshal
import hashlib
import os

def rc4_init(key):
    s = list(range(256))
    j = 0
    for i in range(256):
        j = (j + s[i] + key[i % len(key)]) % 256
        s[i], s[j] = s[j], s[i]
    return s

def rc4_crypt(data, key):
    s = rc4_init(key)
    i = j = 0
    output = bytearray()
    
    for byte in data:
        i = (i + 1) % 256
        j = (j + s[i]) % 256
        s[i], s[j] = s[j], s[i]
        keystream = s[(s[i] + s[j]) % 256]
        output.append(byte ^ keystream)
    
    return bytes(output)

def get_key():
    user_input = input('Key: ')
    key = hashlib.pbkdf2_hmac('sha256',
                              user_input.encode('utf-8'),
                              b'Th1s_1s_S4lt_F0r_K3y',
                              1000000)
    return key

payload = 'vx4cHRXCpHV5zI2H0K3eu/HJCey6144DCpY1tUd/J6+vNEQj+bHTfO5e6p9CAKP1FX13m3YyuAh31cYDNNHQpXyn7ounqH/7DC2uAU58QeM9txen8djaefiNTiLN9T3TCp6QsGxh6PeNVwFpUvgi8IBDzwoBEwLSMixiF3LNjn7YOKIxySuC3cGlLkLg6BUQNBCUpNO8U2Bq/O0o3pLfe5SA7WfF9aD1Q+ZHQ2tS4I29/LnpmZ5Wu5PAOK51xENONrZWL6j1oLUM7BI/YU//G0Pt0MNWZoBhH3H1zUYOR9k+z29pgHeo7ikKCdfoGmHWWGvjf26tirIuth+ATJnFA9Kj5AhY+zospIFIghe9SmVyPEPZ8TO3tDm3dXtnWd8Nt9saZdTE0Ng3I5GX6xe2G3/Hx9yV7mjpfN7A3ViUN7/QSQ4sZ0gVAe9A0/ol'

def main():
    key = get_key()
    if key is None:
        sys.exit()
    
    encrypted_data = base64.b64decode(payload)
    
    decrypted_data = rc4_crypt(encrypted_data, key)
    
    try:
        decompressed = zlib.decompress(decrypted_data)
        
        code_object = marshal.loads(decompressed)
        
        exec(code_object, globals())
        print('Success')
    except Exception:
        print('Wrong')
        sys.exit(1)

if __name__ == '__main__':
    main()
 
Programında mantıksal olarak bir hata var oda şu Kullanıcı doğru keyi bilmiyorsa o payloadı kimse çözemez, yani kısaca key programdada sabit olarak yok sadece en başta bu programı üreten kişinin şifresine göre bir payload türetilmiş.


Kod:
import sys
import ctypes
import time
import base64
import zlib
import marshal
import hashlib
import os

def rc4_init(key):
    s = list(range(256))
    j = 0
    for i in range(256):
        j = (j + s[i] + key[i % len(key)]) % 256
        s[i], s[j] = s[j], s[i]
    return s

def rc4_crypt(data, key):
    s = rc4_init(key)
    i = j = 0
    output = bytearray()
   
    for byte in data:
        i = (i + 1) % 256
        j = (j + s[i]) % 256
        s[i], s[j] = s[j], s[i]
        keystream = s[(s[i] + s[j]) % 256]
        output.append(byte ^ keystream)
   
    return bytes(output)

def get_key():
    user_input = input('Key: ')
    key = hashlib.pbkdf2_hmac('sha256',
                              user_input.encode('utf-8'),
                              b'Th1s_1s_S4lt_F0r_K3y',
                              1000000)
    return key

payload = 'vx4cHRXCpHV5zI2H0K3eu/HJCey6144DCpY1tUd/J6+vNEQj+bHTfO5e6p9CAKP1FX13m3YyuAh31cYDNNHQpXyn7ounqH/7DC2uAU58QeM9txen8djaefiNTiLN9T3TCp6QsGxh6PeNVwFpUvgi8IBDzwoBEwLSMixiF3LNjn7YOKIxySuC3cGlLkLg6BUQNBCUpNO8U2Bq/O0o3pLfe5SA7WfF9aD1Q+ZHQ2tS4I29/LnpmZ5Wu5PAOK51xENONrZWL6j1oLUM7BI/YU//G0Pt0MNWZoBhH3H1zUYOR9k+z29pgHeo7ikKCdfoGmHWWGvjf26tirIuth+ATJnFA9Kj5AhY+zospIFIghe9SmVyPEPZ8TO3tDm3dXtnWd8Nt9saZdTE0Ng3I5GX6xe2G3/Hx9yV7mjpfN7A3ViUN7/QSQ4sZ0gVAe9A0/ol'

def main():
    key = get_key()
    if key is None:
        sys.exit()
   
    encrypted_data = base64.b64decode(payload)
   
    decrypted_data = rc4_crypt(encrypted_data, key)
   
    try:
        decompressed = zlib.decompress(decrypted_data)
       
        code_object = marshal.loads(decompressed)
       
        exec(code_object, globals())
        print('Success')
    except Exception:
        print('Wrong')
        sys.exit(1)

if __name__ == '__main__':
    main()
knkcm nasıl src cıkartıyorsun
 
knkcm nasıl src cıkartıyorsun
Her türlü şey için src çıkarma methodlarım farklı ancak Pyinstaller için githubdan pyinstxtractor kullan çıkan bytecodeyi 3.13 sürümüne kadar pylinegual ve pycdc ile decompile edebilirsin eğer 3.14 için istiyorsan pylinegualin azda olsa desteği var veya pycdc modlayabilirsin ben modlıyorum ancak hala stabil değil.
 
Her türlü şey için src çıkarma methodlarım farklı ancak Pyinstaller için githubdan pyinstxtractor kullan çıkan bytecodeyi 3.13 sürümüne kadar pylinegual ve pycdc ile decompile edebilirsin eğer 3.14 için istiyorsan pylinegualin azda olsa desteği var veya pycdc modlayabilirsin ben modlıyorum ancak hala stabil değil.
bu bilgin için teşşekür ederim
 
Programında mantıksal olarak bir hata var oda şu Kullanıcı doğru keyi bilmiyorsa o payloadı kimse çözemez, yani kısaca key programdada sabit olarak yok sadece en başta bu programı üreten kişinin şifresine göre bir payload türetilmiş.


Kod:
import sys
import ctypes
import time
import base64
import zlib
import marshal
import hashlib
import os

def rc4_init(key):
    s = list(range(256))
    j = 0
    for i in range(256):
        j = (j + s[i] + key[i % len(key)]) % 256
        s[i], s[j] = s[j], s[i]
    return s

def rc4_crypt(data, key):
    s = rc4_init(key)
    i = j = 0
    output = bytearray()
   
    for byte in data:
        i = (i + 1) % 256
        j = (j + s[i]) % 256
        s[i], s[j] = s[j], s[i]
        keystream = s[(s[i] + s[j]) % 256]
        output.append(byte ^ keystream)
   
    return bytes(output)

def get_key():
    user_input = input('Key: ')
    key = hashlib.pbkdf2_hmac('sha256',
                              user_input.encode('utf-8'),
                              b'Th1s_1s_S4lt_F0r_K3y',
                              1000000)
    return key

payload = 'vx4cHRXCpHV5zI2H0K3eu/HJCey6144DCpY1tUd/J6+vNEQj+bHTfO5e6p9CAKP1FX13m3YyuAh31cYDNNHQpXyn7ounqH/7DC2uAU58QeM9txen8djaefiNTiLN9T3TCp6QsGxh6PeNVwFpUvgi8IBDzwoBEwLSMixiF3LNjn7YOKIxySuC3cGlLkLg6BUQNBCUpNO8U2Bq/O0o3pLfe5SA7WfF9aD1Q+ZHQ2tS4I29/LnpmZ5Wu5PAOK51xENONrZWL6j1oLUM7BI/YU//G0Pt0MNWZoBhH3H1zUYOR9k+z29pgHeo7ikKCdfoGmHWWGvjf26tirIuth+ATJnFA9Kj5AhY+zospIFIghe9SmVyPEPZ8TO3tDm3dXtnWd8Nt9saZdTE0Ng3I5GX6xe2G3/Hx9yV7mjpfN7A3ViUN7/QSQ4sZ0gVAe9A0/ol'

def main():
    key = get_key()
    if key is None:
        sys.exit()
   
    encrypted_data = base64.b64decode(payload)
   
    decrypted_data = rc4_crypt(encrypted_data, key)
   
    try:
        decompressed = zlib.decompress(decrypted_data)
       
        code_object = marshal.loads(decompressed)
       
        exec(code_object, globals())
        print('Success')
    except Exception:
        print('Wrong')
        sys.exit(1)

if __name__ == '__main__':
    main()
Bunun içindeki payloadı çözmeye çalışıyorum ben de 1 saattir.
 

Şuanda konuyu görüntüleyen kullanıcılar

Geri
Üst Alt