Steganography with AES encryption
For cases like this:

if padding &lt; 0:
        print "Image too small to encode the file. \
You can store 1 byte per pixel."
        exit()


It's probably better to define a custom exception and raise that:

class SizeError(Exception):
    pass

...

if padding &lt; 0 :
    raise SizeError("Image too small to encode the file. \
    You can store 1 byte per pixel.")


I'm no security expert, but is it ok to use the string you want to encode as salt in kdf? This looks like security through obscurity (because it means you just double the input before encrypting).