示例#1
0
        for p in range(16):
            cph_guess[b*16+p] = chr(ord(cph[b*16+p]) ^ ord(block_guess[p]))

        print_msg( "cph_guess after xor with block: %s" % repr(cph_guess[b*16:b*16+16]))

        for p in range(pos-1,16):
            print_msg( "Padding byte: %s with value: %s" % (b*16+p+1, 17-pos))
            cph_guess[b*16+p] = chr(ord(cph_guess[b*16+p]) ^ (17 - pos))

        print_msg( "cph_guess after xor with pad byte: %s" % repr(cph_guess[b*16:b*16+16]))

        if decrypt_and_check_pad(a, "".join(cph_guess)):
            print_msg( "Valid!!!")
            return block
        else:
            print_msg( "Not valid padding")

    return block

decrypted_msg = ""
for i in range(len(cph)/16):
    block = ["\x00"]
    decrypted_block = decrypt_block(aes, cph, block, 1, 0)
    print "\nDecrypted a block!\n"
    print repr(decrypted_block)
    decrypted_msg = "".join(decrypted_block) + decrypted_msg
    cph = cph[:-16]
    
    
print aes.pkcs7chk(decrypted_msg)