Advertisement
agnishom

Steganography.py

Aug 15th, 2012
475
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.08 KB | None | 0 0
  1. def getmessage(filename):
  2.     f = open(filename, 'rb')
  3.     return f.read()
  4. def buildfile(message, filename):
  5.     f = open(filename, 'wb')
  6.     f.write(message)
  7.     f.flush()
  8. def encode(key, image, message):
  9.     img = Image.open(image)
  10.     new = Image.new('RGB',img.size)
  11.     x = 0
  12.     y = 0
  13.     for x in range(0,img.size[0],1):
  14.         for y in range(0,img.size[1],1):
  15.             new.putpixel((x,y),img.getpixel((x,y)))
  16.     pos = 0
  17.     for i in range(len(message)):
  18.         new.putpixel((pos%img.size[0],pos/img.size[0]),(ord(message[i])^ord(key[i%len(key)])))
  19.         pos = pos + ord(key[i%len(key)])
  20.     filename = raw_input('Enter file name to save in:')
  21.     new.save(filename)
  22.  
  23. def decode(key, image, pix):
  24.     img = Image.open(image)
  25.     pos = 0
  26.     msg = ""
  27.     for i in range(pix):
  28.         msg += chr(img.getpixel((pos%img.size[0],pos/img.size[0]))[0]^ord(key[i%len(key)]))
  29.         pos = pos + ord(key[i%len(key)])
  30.     return msg
  31.  
  32. import Image
  33. key = raw_input('Enter Password:')
  34. image = raw_input('Enter image file name:')
  35. while True:
  36.     print "Choose one of the following:\n1.Create Steganographic Data\n2.Read Steganographic Data\n3.Exit\n"
  37.     x = raw_input('Your Choice:')
  38.     if (x == '1'):
  39.         i = raw_input("1. Read from a file\n2. Enter text manually\nYour Choice:")
  40.         if (i == '2'):
  41.             message = raw_input('Enter Message:')
  42.         elif (i == '1'):
  43.             filename = raw_input('Enter data file name:')
  44.             message = getmessage(filename)
  45.         encode(key, image, message)
  46.         print "The length of the message was " + str(len(message))
  47.     elif (x == '2'):
  48.         pix = int(raw_input('Enter the number of characters you want to retrieve:'))
  49.         msg = decode(key, image, pix)
  50.         i = raw_input("1. Write to a file\n2. Display on Console\nYour Choice:")
  51.         if (i == '2'):
  52.             print msg
  53.         elif (i == '1'):
  54.             filename = raw_input('Enter file name to write in:')
  55.             buildfile(msg, filename)
  56.     elif (x == '3'):
  57.         break
  58.     else:
  59.         print
  60.         pass
  61. raw_input()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement