Esempio n. 1
0
	dupe_count = find_duplicate_blocks(data)
	if dupe_count > 2:
		return 2
	elif dupe_count == 0:
		return 1
	else:
		return -1

success = 0
fail = 0
msg = "111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111"

for i in range(200):
	enc_msg = generate_jibber_jabber(msg)
	mode = randint(1,2)
	if mode == 1:
		a = AESCipher(key=generate_key(), bs=16, iv=generate_key())
		enc = a.cbc_encrypt(enc_msg)
	elif mode == 2:
		a = AESCipher(key=generate_key(), bs=16, iv=generate_key())
		enc = a.ecb_encrypt(enc_msg)

	computed_mode = encryption_oracle(enc)

	if mode == computed_mode:
		success += 1
	else:
		fail += 1

print "Success rate: %.3f" % float(float(success)/float((success + fail)))
Esempio n. 2
0
def decrypt_and_check_pad(a, enc):
    msg = a.cbc_decrypt(enc)
    
    try:
        a.pkcs7chk(msg)
    except ValueError:
        return False

    return msg

aes = AESCipher()
aes.key="YELLOW SUBMARINE"

msg = strings[0]
cph = aes.cbc_encrypt(msg)

def print_msg(msg):
    if DEBUG:
        print msg

def decrypt_block(a, cph, block, pos, char):
    print_msg( "%s (%s): %s" % (pos, char, repr(block)))

    if len(block) < 16:
        block.append(chr(random.randint(0,2)))
        block = decrypt_block(a, cph, block, len(block), ord(block[pos-1]))

    print_msg( "Starting iterations on character: %s. Starting at char: %s" % (pos, char))
    block_guess = block
    for c in range(char, 256):