xorxorxor

Read code first, challenge.py

#!/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()
Flag: 134af6e1297bc4a96f6a87fe046684e8047084ee046d84c5282dd7ef292dc9

If flag starts with HTB{ , then we can figure out the key = 5b1eb49a by:

$ echo -n HTB{ | hex
4854427b
134af6e1 xor 5b1eb49a = 4854427b = HTB{
#getflag.py
#!/usr/bin/python3
import os
flag = open('output.txt', 'r').read().strip()
flag=bytes.fromhex(flag)

class XOR:
    def __init__(self):
        #self.key = os.urandom(4)
        self.key = b'\x5b\x1e\xb4\x9a'
        
    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('Key: ', crypto.key)
    print('Flag:', crypto.encrypt(flag))
    print ('Flag:', crypto.encrypt(flag).decode('utf-8') )

if __name__ == '__main__':
    main()
$ python3 getflag.py 
Key:  b'[\x1e\xb4\x9a'
Flag: b'HTB{rep34t3d_x0r_n0t_s0_s3cur3}'
Flag: HTB{rep34t3d_x0r_n0t_s0_s3cur3}
#getflag.py
s = '134af6e1297bc4a96f6a87fe046684e8047084ee046d84c5282dd7ef292dc9'
s = bytes.fromhex(s)
# s = b'\x13J\xf6\xe1){\xc4\xa9oj\x87\xfe\x04f\x84\xe8\x04p\x84\xee\x04m\x84\xc5(-\xd7\xef)-\xc9'
m = b'HTB{'
from itertools import cycle
k = [x ^ y for x, y in zip(s[:4], m)]
# k=[91, 30, 180, 154]
m = [x ^ y for x, y in zip(s, cycle(k))]
print(bytes(m))
#b'HTB{rep34t3d_x0r_n0t_s0_s3cur3}'

Navigation