Many Time Pad
Description
I heard that one-time pads are unbreakable! I'm going to use it for everything!!
Static resources:
Solution
Given python code performs xor operation on bytes. Since XOR is symetical encryption we can easily reverse it.
from Crypto.Util.number import long_to_bytes, bytes_to_long
def encrypt(plaintext, key):
return long_to_bytes(bytes_to_long(plaintext) ^ bytes_to_long(key))
groceries = b"I need to buy 15 eggs, 1.7 kiloliters of milk, 11000 candles, 12 cans of asbestos-free cereal, and 0.7 watermelons."
with open('./grocery-list.out', 'rb') as f: grocery_list = f.read()
with open('./many-time-pad.out', 'rb') as f: many_pads = f.read()
key = encrypt(groceries, grocery_list)
flag = encrypt(many_pads, key)
print(flag.decode())
Flag: bcactf{y3a_0nly_uS3_th3sE_1_tim3}
Last updated