# Python2 ver. # If you use Python3 interpreter, the trouble will be in print format # [KSL Playground][Crypto][IDCC2018 DecryptME] written by Mr. Goodnight # Link: https://euectf.stikom-bali.ac.id/challenges#[IDCC]%20DecryptME # Flag: IDCC{S1mpl3_4nd_stR4ight} from base64 import * # Encryption algorithm # ciphertext = plaintext + keys with open('./enkripsi', mode = 'r') as f: ciphertext = f.read() # plaintext = ciphertext - keys # Make my own function to decrypt the ciphertext def decrypt(ciphertext, keys): plaintext = "" for num,char in enumerate (ciphertext): plaintext += chr((ord(char) - ord(keys[num % len(keys)])) % 127) return plaintext # keys = ciphertext - plaitext # Find the key by using known string attack # Then I found out that the key is raja known_string = b64encode("IDCC{") keys = "" for num,char in enumerate (known_string): keys += chr((ord(ciphertext[num]) - ord(char)) % 127) # Run the decrypt function the decode it keys = "raja" flag = b64decode(decrypt(ciphertext, keys)) print ("Flag: {f}".format(f = flag))