# L0v32x0r - ARACTF 2023
## Description
Vonny and Zee were having a treasure hunt game until they realized that one of the clues was a not alike the other clues as it has a random text written on the clue.
The clue was "001300737173723a70321e3971331e352975351e247574387e3c".
Help them to find what the hidden clue means!
## Solution
The `clue` is a hex character that has probably been XOR with a size of 1 byte. As we know that 1 hex character is worth 4 bits, so 2 hex characters will be worth 8 bits or 1 byte. If you look at the `clue`, it has a length of 52 bits, that means if we divide the length by 2 there will be 26 characters with a length of 2 bits. The solution to this problem is in this Python program.
```python
def xor(hex_a, hex_b):
return hex(int(hex_a, 16) ^ int(hex_b, 16))[2:]
def xor_count(cipher, key):
hex_key = ''
result = ''
for i in range(0, round(len(cipher)/2), 1):
hex_key += hex(ord(key[i % len(key)]))[2:]
cipher_xor = xor(cipher, hex_key)
for j in range(0, len(cipher_xor)-1, 2):
result += chr(int(cipher_xor[j]+cipher_xor[j+1], 16))
return result
def main():
cipher = '001300737173723a70321e3971331e352975351e247574387e3c'
key = 'A'
print(xor_count(cipher, key))
if __name__ == '__main__':
main()
```
### Alternate Solution
In addition to using the Python program above, you can also use the following Python program to bruteforce the flag against 1 byte XOR.
``` python
cipher = '001300737173723a70321e3971331e352975351e247574387e3c'
cipher = bytes.fromhex(cipher).decode('utf-8')
for i in range(0x00,0xff):
result = ''
for j in cipher:
result += chr(i^ord(j))
if 'ARA2023{' in result:
print('flag :', result)
```
## Flag
`ARA2023{1s_x0r_th4t_e45y?}`