Endless Cycle
#!/usr/bin/env python3
# Dati cifrati dalla memoria
encrypted_bytes = [
0xb6, 0x9e, 0xad, 0xc5, 0x92, 0xfa, 0xdf, 0xd5,
0xa1, 0xa8, 0xdc, 0xc7, 0xce, 0xa4, 0x8b, 0xe1,
0x8a, 0xa2, 0xdc, 0xe1, 0x89, 0xfa, 0x9d, 0xd2,
0x9a, 0xb7
]
# Chiave XOR: 0xbeefcafe in formato little-endian
key_bytes = [0xfe, 0xca, 0xef, 0xbe]
# Decifrare utilizzando XOR
decrypted = []
for i in range(len(encrypted_bytes)):
decrypted.append(encrypted_bytes[i] ^ key_bytes[i % 4])
# Convertire in stringa
flag = ''.join(chr(b) for b in decrypted if 32 <= b <= 126) # Solo caratteri stampabili
print("Flag decodificata:", flag)
# Prova anche altre varianti della chiave
print("\nProve con altre varianti della chiave:")
# Big-endian
key_bytes2 = [0xbe, 0xef, 0xca, 0xfe]
decrypted2 = []
for i in range(len(encrypted_bytes)):
decrypted2.append(encrypted_bytes[i] ^ key_bytes2[i % 4])
flag2 = ''.join(chr(b) for b in decrypted2 if 32 <= b <= 126)
print("Variante 1:", flag2)
# Prova con inversione dell'ordine degli encrypted bytes
reversed_enc = encrypted_bytes[::-1]
decrypted3 = []
for i in range(len(reversed_enc)):
decrypted3.append(reversed_enc[i] ^ key_bytes[i % 4])
flag3 = ''.join(chr(b) for b in decrypted3 if 32 <= b <= 126)
print("Variante 2:", flag3)
# Considerando l'ordine di memoria
result = []
for i in range(0, len(encrypted_bytes), 4):
chunk = encrypted_bytes[i:i+4]
# Completa il chunk se necessario
while len(chunk) < 4:
chunk.append(0)
# Applica XOR per ogni dword
for j in range(len(chunk)):
result.append(chunk[j] ^ key_bytes[j])
flag4 = ''.join(chr(b) for b in result if 32 <= b <= 126)
print("Variante 3:", flag4)Last updated
Was this helpful?