xorxorxor

Autore: Lord Shiva Aggiornamento: 27.08.2023 Tempo di lettura: 05 min.
 

Scaricato i file, troviamo uno script in python:

#!/usr/bin/python3
import os
flag = open('flag.txt', 'r').read().strip().encode()

class XOR:
    def __init__(self):
        self.key = os.urandom(4)
    def encrypt(self, data: bytes) -> bytes:
        xored = b''
        for i in range(len(data)):
            xored += bytes([data[i] ^ self.key[i % len(self.key)]])
        return xored
    def decrypt(self, data: bytes) -> bytes:
        return self.encrypt(data)

def main():
    global flag
    crypto = XOR()
    print ('Flag:', crypto.encrypt(flag).hex())

if __name__ == '__main__':
    main()

e la flag codificata

Flag: 134af6e1297bc4a96f6a87fe046684e8047084ee046d84c5282dd7ef292dc9

Analizzando il codice possiamo vedere che lo script, per codificare la flag, utilizza una chiave Random a 4 Byte.

Per eseguire un bruteforce della chiave mi è stato sufficiente andare sul sito https://www.dcode.fr inserire la flag codificata, impostare a 4 byte la chiave random e andare a ricercarmi la chiave che avesse la seguente forma HTB{.....} e il gioco è fatto.

HTB{rep......................ur3}