/
stegchris2.py
56 lines (37 loc) · 1.11 KB
/
stegchris2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from PIL import Image
import time, argparse
parser = argparse.ArgumentParser()
parser.add_argument("-m", help="message to encode")
parser.add_argument("-f", help="image path")
args = parser.parse_args()
if args.f is None:
exit("Need to specify image path!")
im = Image.open(args.f, 'r')
width,height = im.size
def encode_message(msg = "Hello World!"):
i = 0
for x in range(0,width):
for y in range(0,height):
r,g,b,a = im.getpixel((x,y))
if a <= 25 and i < len(msg):
im.putpixel((x,y),(ord(msg[i]),g,b,a))
i += 1
elif i >= len(msg):
im.putpixel((x,y),(69,69,69,69))
return
def decode_message():
msg = ""
for x in range(0,width):
for y in range(0,height):
r,g,b,a = im.getpixel((x,y))
if a <= 25:
msg += chr(r)
elif (r,g,b,a) == (69,69,69,69):
return msg
return msg
if (args.m is not None):
msg = open(args.m,'rb').read()
encode_message(msg)
im.save(args.f)
else:
print decode_message()