diff --git a/LSB.py b/LSB.py index ae802b8..572415e 100755 --- a/LSB.py +++ b/LSB.py @@ -15,15 +15,15 @@ def hide(img, message): LSB (Least Significant Bit) technique. """ encoded = img.copy() - width, height = img.size + width, height = img.size index = 0 - message = message + '~~ ' + message = message + '~~~' message_bits = tools.a2bits(message) npixels = width * height if len(message_bits) > npixels * 3: - return """To long message (%s > %s).""" % (len(message_bits), npixels * 3) + return """Too long message (%s > %s).""" % (len(message_bits), npixels * 3) for row in range(height): for col in range(width): @@ -70,12 +70,46 @@ def reveal(img): if __name__ == '__main__': # Point of entry in execution mode - original_image_file = "./pictures/Lenna.png" - encoded_image_file = "Lenna_enc.png" + original_image_file = "./pictures/2010-08-04T15:42:06.png" + encoded_image_file = "./pictures/2010-08-04T15:42:06_enc.png" secret_message = "Avec la technique LSB (Least Significant Bit) l'oeil humain (un normal ;-)) ne voit plus la difference" + Lorem_ipsum = """\ +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. +Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. +Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. +Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +""" img1 = Image.open(original_image_file) - img_encoded = hide(img1, secret_message) + img_encoded = hide(img1, Lorem_ipsum) if img_encoded: # Save it diff --git a/pictures/Lenna.png b/pictures/Lenna.png old mode 100755 new mode 100644 diff --git a/steganalyse.py b/steganalyse.py new file mode 100644 index 0000000..3fc71ae --- /dev/null +++ b/steganalyse.py @@ -0,0 +1,50 @@ +#! /usr/local/bin/python +#-*- coding: utf-8 -*- + +__author__ = "Cedric Bonhomme" +__version__ = "$Revision: 0.1 $" +__date__ = "$Date: 2010/10/01 $" + +from PIL import Image + +def steganalyse(img): + """ + Find a message in an image + (with the LSB technique). + """ + encoded = img.copy() + width, height = img.size + bits = "" + for row in range(height): + for col in range(width): + r, g, b = img.getpixel((col, row)) + if r % 2 == 0: + r = 0 + else: + r = 255 + if g % 2 == 0: + g = 0 + else: + g = 255 + if b % 2 == 0: + b = 0 + else: + b = 255 + encoded.putpixel((col, row), (r, g , b)) + return encoded + +if __name__ == '__main__': + # Point of entry in execution mode + original_image_file = "./pictures/2010-08-04T15:42:06.png" + encoded_image_file = "./pictures/2010-08-04T15:42:06_enc.png" + original_image_file_steganalysed = "./pictures/2010-08-04T15:42:06_steganalysed.png" + encoded_image_file_steganalysed = "./pictures/2010-08-04T15:42:06_enc_steganalysed.png" + + img_original_image_file = Image.open(original_image_file) + img_encoded_image_file = Image.open(encoded_image_file) + + img_original_image_steganalysde = steganalyse(img_original_image_file) + img_encoded_image_steganalysed = steganalyse(img_encoded_image_file) + + img_original_image_steganalysde.save(original_image_file_steganalysed) + img_encoded_image_steganalysed.save(encoded_image_file_steganalysed) \ No newline at end of file