YassineYousfi commited on
Commit
3fb4dd7
1 Parent(s): 9649f08

randomize names

Browse files
Files changed (2) hide show
  1. app.py +13 -12
  2. stc.py +1 -0
app.py CHANGED
@@ -1,10 +1,10 @@
1
- import gradio as gr
2
  import stc
3
- import numpy as np
4
- import imageio
5
- from scipy import signal
6
  import cv2
 
 
 
7
  from PIL import Image
 
8
 
9
 
10
  title = "Steganography"
@@ -13,22 +13,23 @@ description = '''Explore hiding messages in images using content adaptive stega
13
  We use HILL https://ieeexplore.ieee.org/document/7025854 .
14
  Python implementation adapted from Daniel Lerch's https://github.com/daniellerch/pySTC .
15
  To encode:
16
- Drag and drop a PNG file, write a message and enter a key (remember the key).
17
  To decode:
18
- Drap and drop the stego file, enter the key.
19
- Note that this software is supplied "as is," without any services or guaranties.
20
  '''
21
 
22
  def HILL(input_image, operation, message, key):
 
23
  input_image.seek(0)
24
  buffer = input_image.read()
25
  I = cv2.imdecode(np.frombuffer(buffer, np.uint8), 1)
26
  I = cv2.cvtColor(I,cv2.COLOR_BGR2GRAY)
27
- cv2.imwrite('tmp/file.png',I)
28
 
29
  if operation == 'decode':
30
- stc.extract('tmp/file.png', key, 'tmp/output.txt')
31
- return 'tmp/output.txt'
32
 
33
  else:
34
  H = np.array(
@@ -43,8 +44,8 @@ def HILL(input_image, operation, message, key):
43
  costs = 1/costs
44
  costs = signal.convolve2d(costs, L2, mode='same', boundary='symm')
45
  costs[costs == np.inf] = 1
46
- stc.embed('tmp/file.png', costs, message, key, 'tmp/stego.png')
47
- return 'tmp/stego.png'
48
 
49
  iface = gr.Interface(HILL,
50
  ['file', gr.inputs.Radio(['encode', 'decode']), 'text', 'text'],
 
 
1
  import stc
 
 
 
2
  import cv2
3
+ import random
4
+ import numpy as np
5
+ import gradio as gr
6
  from PIL import Image
7
+ from scipy import signal
8
 
9
 
10
  title = "Steganography"
 
13
  We use HILL https://ieeexplore.ieee.org/document/7025854 .
14
  Python implementation adapted from Daniel Lerch's https://github.com/daniellerch/pySTC .
15
  To encode:
16
+ Drag and drop a PNG file, write a message and enter a key (remember the key), the generated image has the secret message encoded.
17
  To decode:
18
+ Drag and drop the stego file that you just generated, enter the key.
19
+ Note that this software is supplied "as is," without any services or security guaranties.
20
  '''
21
 
22
  def HILL(input_image, operation, message, key):
23
+ tmp_name = str(random.randint(100,1000))
24
  input_image.seek(0)
25
  buffer = input_image.read()
26
  I = cv2.imdecode(np.frombuffer(buffer, np.uint8), 1)
27
  I = cv2.cvtColor(I,cv2.COLOR_BGR2GRAY)
28
+ cv2.imwrite('tmp/'+tmp_name+'.png',I)
29
 
30
  if operation == 'decode':
31
+ stc.extract('tmp/'+tmp_name+'.png', key, 'tmp/'+tmp_name+'.txt')
32
+ return 'tmp/'+tmp_name+'.txt'
33
 
34
  else:
35
  H = np.array(
 
44
  costs = 1/costs
45
  costs = signal.convolve2d(costs, L2, mode='same', boundary='symm')
46
  costs[costs == np.inf] = 1
47
+ stc.embed('tmp/'+tmp_name+'.png', costs, message, key, 'tmp/'+tmp_name+'.png')
48
+ return 'tmp/'+tmp_name+'.png'
49
 
50
  iface = gr.Interface(HILL,
51
  ['file', gr.inputs.Radio(['encode', 'decode']), 'text', 'text'],
stc.py CHANGED
@@ -122,6 +122,7 @@ def embed(input_img_path, cost_matrix, msg_file_path, password, output_img_path
122
  if i<len(msg_bits):
123
  message[i] = msg_bits[i]
124
  else:
 
125
  message[i] = 0
126
  # Hide message
127
  stego = (c_int*(width*height))()
 
122
  if i<len(msg_bits):
123
  message[i] = msg_bits[i]
124
  else:
125
+ # This doesn't look optimal
126
  message[i] = 0
127
  # Hide message
128
  stego = (c_int*(width*height))()