Guest User

r/dailyprogrammer #101 intermediate

a guest
Sep 28th, 2012
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.67 KB | None | 0 0
  1. ###########steg.py##############
  2. #reddit.com/r/dailyprogrammer
  3. #int-101
  4. #puts data in image
  5.  
  6. import sys, Image
  7.  
  8. #verify correct number of arguments entered
  9. if len(sys.argv) != 3:
  10.     print 'Please specify correct arguments'
  11.     print 'Usage: steg.py {image file} {data file}'
  12.     sys.exit()
  13.  
  14. #get file names from arguments
  15. image_fn = sys.argv[1]
  16. data_fn = sys.argv[2]
  17.  
  18. #read in our image file and declare variables
  19. img = Image.open(image_fn)
  20. pixels = img.load()
  21. im_width = img.size[0]
  22. im_height = img.size[1]
  23.  
  24. #read in our data file and declare variables
  25. with open(data_fn, 'r') as f:
  26.     data = f.read()
  27. b_data = ""
  28. for char in data:
  29.     b_data += '%08d'%int(bin(ord(char))[2:])
  30.    
  31. b_data += '11111111' #used to find end when getting data out
  32.    
  33. #add data to image file
  34. for x in range(im_width):
  35.     for y in range(im_height):
  36.         if len(b_data) == 0:
  37.             break
  38.            
  39.         pix = pixels[x,y]
  40.        
  41.         blueBase = bin(pix[2])[2:] #current pixels blue binary value
  42.         newBlue = blueBase[:-2] + b_data[0:2] #create new binary value
  43.        
  44.         b_data = b_data[2:] #remove used bits from b_data
  45.        
  46.         pixels[x,y] = (pix[0],pix[1],int(newBlue,2)) #put new pixel into image file
  47.     else:
  48.         continue
  49.     break
  50.  
  51. #save new image
  52. img.save('steg'+image_fn)
  53.  
  54. ###########desteg.py#############
  55. #desteg.py
  56. #reddit.com/r/dailyprogrammer
  57. #int-101
  58. #puts data in image
  59.  
  60. import sys, Image
  61.  
  62. #verify correct number of arguments entered
  63. if len(sys.argv) != 3:
  64.     print 'Please specify correct arguments'
  65.     print 'Usage: steg.py {image file} {data file}'
  66.     sys.exit()
  67.  
  68. #get file names from arguments
  69. image_fn = sys.argv[1]
  70. data_fn = sys.argv[2]
  71.  
  72. #read in our image file and declare variables
  73. img = Image.open(image_fn)
  74. pixels = img.load()
  75. im_width = img.size[0]
  76. im_height = img.size[1]
  77.  
  78. #read in our data file and declare variables
  79. with open(data_fn, 'r') as f:
  80.     data = f.read()
  81. b_data = ""
  82. for char in data:
  83.     b_data += '%08d'%int(bin(ord(char))[2:])
  84.    
  85. b_data += '11111111' #used to find end when getting data out
  86.    
  87. #add data to image file
  88. for x in range(im_width):
  89.     for y in range(im_height):
  90.         if len(b_data) == 0:
  91.             break
  92.            
  93.         pix = pixels[x,y]
  94.        
  95.         blueBase = bin(pix[2])[2:] #current pixels blue binary value
  96.         newBlue = blueBase[:-2] + b_data[0:2] #create new binary value
  97.        
  98.         b_data = b_data[2:] #remove used bits from b_data
  99.        
  100.         pixels[x,y] = (pix[0],pix[1],int(newBlue,2)) #put new pixel into image file
  101.     else:
  102.         continue
  103.     break
  104.  
  105. #save new image
  106. img.save('steg'+image_fn)
Add Comment
Please, Sign In to add comment