def main(): if len(sys.argv) < 3: key = SAMPLE_KEY filename = SAMPLE_FILENAME else: key = sys.argv[1] filename = sys.argv[2] f = open(filename, "r") ciphertext = "" for line in f: ciphertext += common.b64decode(line.rstrip()) print common.aes_cbc_decrypt(ciphertext, key, "\x00" * 16) if False: for _ in range(1000): key = common.randbytes(16) pt = common.randbytes(random.randint(1, 64)) iv = common.randbytes(16) AFTER = binascii.hexlify(common.aes_cbc_decrypt(common.aes_cbc_encrypt(pt, key, iv), key, iv)) PT = binascii.hexlify(common.pkcs7_pad(pt, len(pt) + (16 - (len(pt) % 16)))) print PT == AFTER
def decryption_oracle(ct, IV): global key try: pt = common.aes_cbc_decrypt(ct, key, IV) unpadpt = common.unpad(common.aes_cbc_decrypt(ct, key, IV), 16) except common.InvalidPaddingError as e: return False # print hex(ord(pt[-1])) return True
def decryption_oracle(ct): global key global IV try: t = common.aes_cbc_decrypt(ct, key, IV).index(";admin=true;") except: return False return True