Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ###########steg.py##############
- #reddit.com/r/dailyprogrammer
- #int-101
- #puts data in image
- import sys, Image
- #verify correct number of arguments entered
- if len(sys.argv) != 3:
- print 'Please specify correct arguments'
- print 'Usage: steg.py {image file} {data file}'
- sys.exit()
- #get file names from arguments
- image_fn = sys.argv[1]
- data_fn = sys.argv[2]
- #read in our image file and declare variables
- img = Image.open(image_fn)
- pixels = img.load()
- im_width = img.size[0]
- im_height = img.size[1]
- #read in our data file and declare variables
- with open(data_fn, 'r') as f:
- data = f.read()
- b_data = ""
- for char in data:
- b_data += '%08d'%int(bin(ord(char))[2:])
- b_data += '11111111' #used to find end when getting data out
- #add data to image file
- for x in range(im_width):
- for y in range(im_height):
- if len(b_data) == 0:
- break
- pix = pixels[x,y]
- blueBase = bin(pix[2])[2:] #current pixels blue binary value
- newBlue = blueBase[:-2] + b_data[0:2] #create new binary value
- b_data = b_data[2:] #remove used bits from b_data
- pixels[x,y] = (pix[0],pix[1],int(newBlue,2)) #put new pixel into image file
- else:
- continue
- break
- #save new image
- img.save('steg.png')
- ###########desteg.py#############
- #desteg.py
- #reddit.com/r/dailyprogrammer
- #int-101
- #pulls data out of image
- import sys, Image
- #verify correct number of arguments entered
- if len(sys.argv) != 2:
- print 'Please specify correct arguments'
- print 'Usage: desteg.py {image file}'
- sys.exit()
- #get file names from arguments
- image_fn = sys.argv[1]
- #read in our image file and declare variables
- img = Image.open(image_fn)
- pixels = img.load()
- im_width = img.size[0]
- im_height = img.size[1]
- #get bianry data
- b_data = ""
- for x in range(im_width):
- for y in range(im_height):
- pix = pixels[x,y]
- b_data += bin(pix[2])[-2:]
- #get actual data
- s_data = ""
- for x in range(0,len(b_data),8):
- chunk = b_data[x:x+8]
- if chunk == '11111111':
- break #end of steganography data
- char = chr(int(chunk,2))
- s_data += char
- print s_data
Add Comment
Please, Sign In to add comment