I have two variables that contain AES CTR encryption of two different messages with the same password and IV, named "encFlag" and "encText." I also have the unencrypted content of "text."
The size of "text" is smaller than that of "flag."
Using XOR, I can retrieve the initial characters of the flag, but not the rest. How can I recover the remaining characters?
this is my actual code, the idea is pretty simple i xored the ciphers between them, and then with the plaintext, but i got only the first len(text) characters.
def XOR_two_blocks(x, y):
return bytes(a ^ b for a, b in zip(x, y))
def main():
# iv = 7c642365e47f720f460558bd3dc7b105
# blockSize = 16
text = b"Hello the world !"
b64_encFlag = "KB44ZAl8E0ZgWg0gaUsjW1jU8ZF+alr/nazHZeD3Q+c/GxC6gSqw2JqRjfYJPSdQb7GbxzbdQMb3DY5mB1OK1dGFJH+yH502Q5VO1n+IuqJ2SrdxImApUCSBWWs+qahZuW5pb8vYaU/r6klDQ8z+14yEGtfTNHSj5a73stxXIgsrAwsZOyJ6QgpDo4Dd75XUDk365ARZE6cSV5h8xWg9f7ifNfWYgKmmOYwZZtr/oEoWN5hJz6EYXcOvi8zZJ2yw41ezS5H9D7V2AXv2B01n2X5neDJCxo77oGsQJjZD7AAUbE8ub3NqHkz29C4yh9CI"
b64_encText = "LBQmbQt8Dl52Dxdvf0grFAv7jfcFRTSd99fkSoyXIps="
encFlag = binascii.unhexlify(base64.b64decode(b64_encFlag).hex())
encText = binascii.unhexlify(base64.b64decode(b64_encText).hex())
print(f"\n========= Encrypted data =========\n")
print(f"{encFlag=}\n")
print(f"{encText=}\n")
print(f"\n========= Decrypt =========\n")
blob = XOR_two_blocks(encFlag, encText)
flag = XOR_two_blocks(blob, text)
# i got only "Lorem ipsum dolor" but not the rest of my text
print(f"{flag=}")
main()