28 lines
827 B
Python
28 lines
827 B
Python
import sys
|
|
|
|
def solve():
|
|
binary_path = './crackme_esdi'
|
|
|
|
# L'adresse virtuelle 0x402090 dans un binaire sans PIE (base 0x400000)
|
|
# correspond à l'offset fichier 0x2090
|
|
file_offset = 0x2090
|
|
password_length = 14
|
|
xor_key = 0x42
|
|
|
|
try:
|
|
with open(binary_path, 'rb') as f:
|
|
f.seek(file_offset)
|
|
encrypted_bytes = f.read(password_length)
|
|
|
|
# Application du XOR inverse pour casser le chiffrement
|
|
password = "".join(chr(b ^ xor_key) for b in encrypted_bytes)
|
|
|
|
print(f"[+] Crackme résolu : valeur = {password}")
|
|
|
|
except FileNotFoundError:
|
|
print(f"[-] Erreur : Le fichier {binary_path} est introuvable.")
|
|
except Exception as e:
|
|
print(f"[-] Une erreur est survenue : {e}")
|
|
|
|
if __name__ == '__main__':
|
|
solve() |