Exemple #1
0
def test_break_encrypted():
    """ Set 2, Challenge 13 """
    key = os.urandom(16)

    aes_ecb = AESOracle(key=key, mode=AesMode.ECB, prepend='', append='', encode_fn=profile_for, decode_fn=key_value_parser)

    # Make sure our test setup is working
    assert aes_ecb.decrypt(aes_ecb.encrypt('*****@*****.**')) == {'email': '*****@*****.**', 'uid': '10', 'role': 'user'}

    # Run the real test
    assert aes_ecb.decrypt(set2.break_encrypted_profile(aes_ecb.encrypt)) == {'email': '*****@*****.**', 'uid': '10', 'role': 'admin'}
Exemple #2
0
def test_aes_ctr():
    """ Set 3, Challenge 18 """

    test_string = "L77na/nrFsKvynd6HzOoG7GHTLXsTVu9qvY/2syLXzhPweyyMTJULu/6/kXX0KSvoOLSFQ==".decode('base64')

    ctr_oracle = AESOracle(mode=AesMode.CTR, key='YELLOW SUBMARINE', prepend='', append='')

    assert ctr_oracle.decrypt(test_string, simple_nonce_generator()) == "Yo, VIP Let's kick it Ice, Ice, baby Ice, Ice, baby "

    my_test = 'A' * 22

    assert ctr_oracle.decrypt(ctr_oracle.encrypt(my_test, simple_nonce_generator()), simple_nonce_generator()) == my_test
Exemple #3
0
def test_cbc_bitflipping_attack():
    """ Set 2, Challenge 16 """
    def parse_by_semi(text):
        print text
        print text.split(';')
        return [key_value_parser(s) for s in text.split(';')]

    aes_cbc = AESOracle(key=os.urandom(16), mode=AesMode.CBC,
                        prepend='comment1=cooking%20MCs;userdata=', append=';comment2=%20like%20a%20pound%20of%20bacon',
                        encode_fn=quote, decode_fn=parse_by_semi)

    ciphertext, iv = set2.cbc_bitflipping_attack(aes_cbc.encrypt)

    assert {'admin': 'true'} in aes_cbc.decrypt(ciphertext, iv)