Added steganalyse.py

This commit is contained in:
cedricbonhomme 2010-10-04 00:44:07 +02:00
parent dd4bce8a4a
commit 3449484350
3 changed files with 90 additions and 6 deletions

46
LSB.py
View file

@ -15,15 +15,15 @@ def hide(img, message):
LSB (Least Significant Bit) technique. LSB (Least Significant Bit) technique.
""" """
encoded = img.copy() encoded = img.copy()
width, height = img.size width, height = img.size
index = 0 index = 0
message = message + '~~ ' message = message + '~~~'
message_bits = tools.a2bits(message) message_bits = tools.a2bits(message)
npixels = width * height npixels = width * height
if len(message_bits) > npixels * 3: 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 row in range(height):
for col in range(width): for col in range(width):
@ -70,12 +70,46 @@ def reveal(img):
if __name__ == '__main__': if __name__ == '__main__':
# Point of entry in execution mode # Point of entry in execution mode
original_image_file = "./pictures/Lenna.png" original_image_file = "./pictures/2010-08-04T15:42:06.png"
encoded_image_file = "Lenna_enc.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" 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) img1 = Image.open(original_image_file)
img_encoded = hide(img1, secret_message) img_encoded = hide(img1, Lorem_ipsum)
if img_encoded: if img_encoded:
# Save it # Save it

0
pictures/Lenna.png Executable file → Normal file
View file

Before

Width:  |  Height:  |  Size: 464 KiB

After

Width:  |  Height:  |  Size: 464 KiB

50
steganalyse.py Normal file
View file

@ -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)