2023-06-30 15:14:19 +02:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
# Link: https://crackmes.one/crackme/6403ac2a33c5d447bc76179f
|
|
|
|
|
|
|
|
# Conditions that must be fulfilled for the key to be valid:
|
2023-07-02 18:47:44 +02:00
|
|
|
# len(key) == 13 && key[3] == '-'
|
|
|
|
# (sum1 = sum(key[0:3])))
|
|
|
|
# (key[0] ^ sum1 % 3) == sum(key[4:7])
|
|
|
|
# (key[1] ^ sum1 % 3) == sum(key[7:10])
|
|
|
|
# (key[2] ^ sum1 % 3) == sum(key[10:13])
|
2023-06-30 15:14:19 +02:00
|
|
|
|
|
|
|
import random
|
|
|
|
|
|
|
|
|
|
|
|
def complete(base):
|
|
|
|
s = ["", "", ""]
|
|
|
|
base_sum = sum(base)
|
|
|
|
|
|
|
|
for i in range(3):
|
|
|
|
c = base[i] ^ base_sum % 3
|
|
|
|
s[i] = "".join(str(n) for n in find_sum(c))
|
|
|
|
|
|
|
|
return f"{''.join(str(n) for n in base)}-{s[0]}{s[1]}{s[2]}"
|
|
|
|
|
|
|
|
|
|
|
|
def find_sum(total):
|
|
|
|
while True:
|
|
|
|
x = random.randint(0, 9)
|
|
|
|
y = random.randint(0, 9)
|
|
|
|
z = random.randint(0, 9)
|
|
|
|
|
|
|
|
if x + y + z == total:
|
|
|
|
break
|
|
|
|
|
|
|
|
return x, y, z
|
|
|
|
|
|
|
|
|
|
|
|
while True:
|
|
|
|
base = [random.randint(0, 9) for _ in range(3)]
|
|
|
|
print(complete(base))
|