def encode(): if secimg.get() == "jpeg": inimage = fileopen response = messagebox.askyesno("popup", "do you want to encode") if response == 1: aaa.hide(inimage, entrysave.get() + '.jpg', entrysecmes.get()) messagebox.showinfo( "popup", "successfully encode" + entrysave.get() + ".jpeg") else: messagebox.showwarning("popup", "unsuccessful") if secimg.get() == "png": inimage = fileopen response = messagebox.askyesno("popup", "do you want to encode") if response == 1: lsb.hide(inimage, message=entrysecmes.get()).save(entrysave.get() + '.png') messagebox.showinfo( "popup", "successfully encode to " + entrysave.get() + ".png") else: messagebox.showwarning("popup", "unsuccessful")
def hide(self, filename, folderOut, message): self.filename = filename self.message = message img = Image.open(filename) binary = self.str2bin(message) + "1111111111111110" # Getting file extension temp = "." + self.fileExtractor(filename, '.').lower() folderOut = folderOut + "/" + self.fileExtractor(filename, '/') # For png & ico images if (temp == '.png' or temp == '.ico'): if img.mode in ('RGBA'): img = img.convert('RGBA') datas = img.getdata() newData = [] digit = 0 temp = '' for item in datas: if (digit < len(binary)): newpix = self.encode( self.rgb2hex(item[0], item[1], item[2]), binary[digit]) if newpix == None: newData.append(item) else: r, g, b = self.hex2rgb(newpix) newData.append((r, g, b, 255)) digit += 1 else: newData.append(item) img.putdata(newData) img.save(folderOut) # For jpeg & jpg images else: con.hide(filename, folderOut, message)
def Encoder(): Response = messagebox.askyesno("PopUp", "Do you want to encode the image") if Response == 1: stg.hide(FileOpen, SaveEntry.get() + ".jpg", entry.get()) messagebox.showinfo("Pop Up", "Successfully Encoded the image") else: messagebox.showwarning("Pop Up", "Unsuccessful,please try again")
def test_with_bytes(self): outputBytes = io.BytesIO() message = b"Secret" with open("./tests/sample-files/20160505T130442.jpg", "rb") as f: exifHeader.hide(f, outputBytes, secret_message=message) clear_message = exifHeader.reveal(outputBytes) self.assertEqual(message, clear_message)
def encodee(): response = messagebox.askyesno("pop up", "do you want to encode") if response == 1: stg.hide(fileopen, entrysave.get() + '.jpg', entry.get()) messagebox.showinfo("pop up", "successfully encode") else: messagebox.showwarning("pop up", "unsuccessful")
def test_with_bytes(self): outputBytes = io.BytesIO() message = b"Secret" exifHeader.hide(open("./tests/sample-files/20160505T130442.jpg", 'rb'), outputBytes, secret_message=message) clear_message = exifHeader.reveal(outputBytes) self.assertEqual(message, clear_message)
def encode_txt_img(self): # Fn to encode our txt to image sel_image = self.ids.encode_image_path.text # getting the file location user_text = self.ids.user_text.text # text to be encoded slash_count = sel_image.count("\\") # getting the file location img_name = sel_image.split("\\", slash_count)[slash_count].split( ".", 1)[0] # selecting only the file name with no extension img_type = sel_image.split("\\", slash_count)[slash_count].split( ".", 1)[1] # selecting only the file extension # Checking if the required folder exists if os.path.exists(r"C:\Secret TXT"): pass else: # if not creating it os.makedirs(r"C:\Secret TXT") try: # checking the type of file first # for png types if img_type == "png": secret_img = f"C:\\Secret TXT\\{img_name} [Encoded].{img_type}" # setting the location to save the encoded images # lsb is used for png # hide is used to encode the image # it's parameters are selected image, the text to be encoded lsb.hide(sel_image, message=user_text).save( secret_img ) # save is used to save the image to the required location self.ids.encode_result.text = "Encoding was successful" # for jpg/jpeg types elif img_type == "jpg" or img_type == "jpeg": secret_img = f"C:\\Secret TXT\\{img_name} [Encoded].{img_type}" # exifHeader is used for jpg/jpeg # hide is used to encode the image # it's parameters are selected image, location to be saved, and the text to be encoded exifHeader.hide(sel_image, secret_img, secret_message=user_text) self.ids.encode_result.text = "Encoding was successful" # if type is not supported else: self.ids.encode_result.text = "Type not supported" except: # fail-safe self.ids.encode_result.text = "Encoding has failed"
def sign_image(signature: str, image_file_path: Union[str, IO[bytes]]): copied_file_path = "{}_{}.tmp".format(image_file_path, time.time()) copyfile(image_file_path, copied_file_path) exifHeader.hide(input_image_file=copied_file_path, img_enc=image_file_path, secret_message=signature) os.remove(copied_file_path) secret_image = lsbset.hide(input_image=image_file_path, message=signature, generator=generators.fermat()) secret_image.save(image_file_path)
def encodee(): response=messagebox.askyesno("pop up","do you want to encode") if response==1: mes=entry.get() elmsg=fun(mes) #print(elmsg) stg.hide(fileopen,entrysave.get()+'.jpg',elmsg) messagebox.showinfo("pop up","successfully encoded") else: messagebox.warning("pop up","unsuccessful")
def main(): print HTML_HEADER print HEAD data = cgi.FieldStorage() fileds = data['file'] if fileds.filename.endswith('.jpg') or fileds.filename.endswith( '.png') or fileds.filename.endswith( '.jpeg') or fileds.filename.endswith( '.tiff') and fileds.filename.count('/') == -1: os.chdir('files') with open(fileds.filename, 'wb') as fout: shutil.copyfileobj(fileds.file, fout, 100000) os.chdir('../') # do NOT touch above code if fileds.filename.endswith('.png'): sec = lsb.hide('files/' + fileds.filename, data['message'].value) sec.save('files/' + fileds.filename) if fileds.filename.endswith('.jpg') or fileds.filename.endswith('.jpeg'): secret = exifHeader.hide('files/' + fileds.filename, 'files/' + fileds.filename, secret_message=data['message'].value) print "Successfully generated." print '<a href="http://jonathanwong.koding.io/bstego/files/' + fileds.filename + '">Link here</a>' print END
def test_with_png_image(self): secret = exifHeader.hide("./tests/sample-files/Lenna.png", "./image.png", secret_message="Secret") #secret.save(""./image.png"") with self.assertRaises(ValueError): clear_message = exifHeader.reveal("./image.png")
def test_with_image_without_exif_data(self): secret = exifHeader.hide("./tests/sample-files/Elisha-Cuthbert.jpg", "./image.jpg", secret_message="") #secret.save(""./image.png"") clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(b"", clear_message)
def test_with_image_without_exif_data(self): secret = exifHeader.hide("./tests/sample-files/Lenna.jpg", "./image.jpg", secret_message="") #secret.save(""./image.png"") clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(b"", clear_message)
def test_hide_empty_message(self): """Test hiding the empty string. """ secret = exifHeader.hide("./tests/sample-files/20160505T130442.jpg", "./image.jpg", secret_message="") #secret.save(""./image.png"") clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(b"", clear_message)
def test_hide_and_reveal(self): messages_to_hide = ["a", "foo", "Hello World!", ":Python:"] for message in messages_to_hide: secret = exifHeader.hide("./tests/sample-files/20160505T130442.jpg", "./image.jpg", secret_message=message) clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(message, message)
def test_hide_empty_message(self): """Test hiding the empty string.""" secret = exifHeader.hide("./tests/sample-files/20160505T130442.jpg", "./image.jpg", secret_message="") # secret.save(""./image.png"") clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(b"", clear_message)
def test_with_text_file(self): text_file_to_hide = "./tests/sample-files/lorem_ipsum.txt" with open(text_file_to_hide, "rb") as f: message = f.read() secret = exifHeader.hide("./tests/sample-files/20160505T130442.jpg", img_enc="./image.jpg", secret_file=text_file_to_hide) clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(message, clear_message)
def test_with_text_file(self): text_file_to_hide = "./tests/sample-files/lorem_ipsum.txt" with open(text_file_to_hide, "rb") as f: message = f.read() secret = exifHeader.hide("./tests/sample-files/Elisha-Cuthbert.jpg", img_enc="./image.jpg", secret_file=text_file_to_hide) clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(message, clear_message)
def write_wm(wm, ifpath, ofpath): global LSB, EXIF if get_ftype(ifpath) in LSB: encoded = lsb.hide(ifpath, wm.dumpjson()) encoded.save(ofpath) elif get_ftype(ifpath) in EXIF: encoded = exifHeader.hide(ifpath, ofpath, wm.dumpjson()) else: return err_file_type_nsupported(get_ftype(ifpath)) return 0
def test_hide_and_reveal(self): messages_to_hide = ["a", "foo", "Hello World!", ":Python:"] for message in messages_to_hide: secret = exifHeader.hide( "./tests/sample-files/20160505T130442.jpg", "./image.jpg", secret_message=message) clear_message = exifHeader.reveal("./image.jpg") self.assertEqual(message, message)
def POST(self): input = web.input(file={}) filename = input['file'].filename fileds = input['file'].value message = input.message if filename.endswith('.jpg') or filename.endswith( '.png' ) or filename.endswith('.jpeg') and filename.count('/') == -1: os.chdir('static/files') with open(filename, 'wb') as fout: shutil.copyfileobj(input['file'].file, fout, 100000) os.chdir('../../') # do NOT touch above code if filename.endswith('.png'): sec = lsb.hide('static/files/' + filename, message) sec.save('static/files/' + filename) if filename.endswith('.jpg') or filename.endswith('.jpeg'): secret = exifHeader.hide('static/files/' + filename, 'static/files/' + filename, secret_message=message) return ''' <!DOCTYPE html> <html lang="en"> <head> <title> Your image </title> <style> img { width: 500px; height: 500px; } </style> </head> <body> <h1> Right click on the image and click <i>Save As</i> to save it. </h1> <img src="static/files/''' + filename + '''" /> </body> </html> ''' else: return
def main(): print HTML_HEADER print HEAD data = cgi.FieldStorage() fileds = data['file'] if fileds.filename.endswith('.jpg') or fileds.filename.endswith('.png') or fileds.filename.endswith('.jpeg') or fileds.filename.endswith('.tiff') and fileds.filename.count('/') == -1: os.chdir('files') with open(fileds.filename, 'wb') as fout: shutil.copyfileobj(fileds.file, fout, 100000) os.chdir('../') # do NOT touch above code if fileds.filename.endswith('.png'): sec = lsb.hide('files/'+fileds.filename, data['message'].value) sec.save('files/'+fileds.filename) if fileds.filename.endswith('.jpg') or fileds.filename.endswith('.jpeg'): secret = exifHeader.hide('files/'+fileds.filename, 'files/'+fileds.filename, secret_message=data['message'].value) print "Successfully generated." print '<a href="http://jonathanwong.koding.io/bstego/files/'+fileds.filename+'">Link here</a>' print END
def POST(self): input = web.input(file={}) filename = input['file'].filename fileds = input['file'].value message = input.message if filename.endswith('.jpg') or filename.endswith('.png') or filename.endswith('.jpeg') and filename.count('/') == -1: os.chdir('static/files') with open(filename, 'wb') as fout: shutil.copyfileobj(input['file'].file, fout, 100000) os.chdir('../../') # do NOT touch above code if filename.endswith('.png'): sec = lsb.hide('static/files/' + filename, message) sec.save('static/files/' + filename) if filename.endswith('.jpg') or filename.endswith('.jpeg'): secret = exifHeader.hide('static/files/' + filename, 'static/files/' + filename, secret_message = message) return ''' <!DOCTYPE html> <html lang="en"> <head> <title> Your image </title> <style> img { width: 500px; height: 500px; } </style> </head> <body> <h1> Right click on the image and click <i>Save As</i> to save it. </h1> <img src="static/files/'''+filename+'''" /> </body> </html> ''' else: return
def encode(request): if request.user.is_authenticated: if request.method == "POST": message = str(request.POST['msg']) uploaded_filename = save_upload_image(request.FILES['img'], 'upload') user_defined_key = str(request.POST['custom_key']) try: details = Stega.objects.get(username=request.user.username, user_key=user_defined_key) messages.error(request, "Looks like there is a problem with the key") return render(request, 'menu/encode.html') except Stega.DoesNotExist: fkey = Fernet.generate_key() f = Fernet(fkey) spc_name = request.user.username + str(int( time.time())) + ".jpg" message = f.encrypt(message.encode()).decode() storage_path = "/home/jack1and1jack/django_projects/easystega/media/upload/" + spc_name img = exifHeader.hide(uploaded_filename, storage_path, message) new_entry = Stega(username=request.user.username, user_key=user_defined_key, fernet_key=fkey.decode()) new_entry.save() os.remove(uploaded_filename) messages.success(request, "The information is successfully encoded") return render(request, 'menu/encode.html', {'source': spc_name}) except: messages.error(request, "Looks like there is a problem with the file") return render(request, 'menu/encode.html') else: return render(request, 'menu/encode.html') else: return redirect('%s' % (settings.LOGIN_URL))
def hide_file(currentos): if currentos == "windows": os.system("cls") #get file to hide file = input(colored("File Location -->> ","green")) #remove " and whitespace file = file.replace('"','') file = file.strip() #file extinsion file_addr = file.split("\\") file_name = file_addr[len(file_addr)-1] file_ext = file_name.split(".") ext = file_ext[len(file_ext)-1] #get image t hide file image = input(colored("Image To Hide File -->> ","green")) #get the image file name and extension img = image.replace('"','') img = img.strip() img_name_arr = img.split("/") img_name = img_name_arr[len(img_name_arr)-1] img_ext_arr = img_name.split(".") img_ext = img_ext_arr[len(img_ext_arr)-1] os.system("clear") if img_ext == "jpg" or img_ext == "jpeg": #try to hide message to file try: with open(file,'rb') as f: data = f.read() data = data + file_name.encode() exifHeader.hide(img,"./Images/"+img_ext_arr[0]+".jpg", data) except Exception as e: print(colored(e,"red")) finally: print(colored("Filed Hidden In the Image...","green")) print(colored("File Is Under Images Folder "+img_ext_arr[0]+".jpg","yellow")) goto = input(colored("Type E(exit) M(main menu)")) if goto.lower() == "e": os.system("exit") elif goto.lower() == "m": banner(currentos) else: print(colored("Wrong Input...","red")) os.system("exit") elif img_ext == "png": try: with open(file,'rb') as f: data = f.read() data = data + file_name.encode() hide = lsbset.hide(img,msg,generators.eratosthenes()) hide.save("./Images/"+img_ext_arr[0]+".png") except Exception as e: print(colored(e,"red")) finally: print(colored("File Hidden In the Image...","green")) print(colored("File Is Under Images Folder "+img_ext_arr[0]+".jpg","yellow")) goto = input(colored("Type E(exit) M(main menu)")) if goto.lower() == "e": os.system("exit") elif goto.lower() == "m": banner(currentos) else: print(colored("Wrong Input...","red")) os.system("exit") #if image file is not supported else: print(colored("We Recommend using jpg,png Format Images","red")) os.system("exit") elif currentos == "linux": os.system("clear") #get file to hide file = input(colored("File Location -->> ","green")) #remove " and whitespace file = file.replace('"','') file = file.strip() #file extinsion file_addr = file.split("/") file_name = file_addr[len(file_addr)-1] file_ext = file_name.split(".") ext = file_ext[len(file_ext)-1] #get image t hide file image = input(colored("Image To Hide File -->> ","green")) #get the image file name and extension img = image.replace('"','') img = img.strip() img_name_arr = img.split("/") img_name = img_name_arr[len(img_name_arr)-1] img_ext_arr = img_name.split(".") img_ext = img_ext_arr[len(img_ext_arr)-1] os.system("clear") if img_ext == "jpg" or img_ext == "jpeg": #try to hide message to file try: with open(file,'rb') as f: data = f.read() data = data + file_name.encode() exifHeader.hide(img,"./Images/"+img_ext_arr[0]+".jpg", data) except Exception as e: print(colored(e,"red")) finally: print(colored("Filed Hidden In the Image...","green")) print(colored("File Is Under Images Folder "+img_ext_arr[0]+".jpg","yellow")) goto = input(colored("Type E(exit) M(main menu)")) if goto.lower() == "e": os.system("exit") elif goto.lower() == "m": banner(currentos) else: print(colored("Wrong Input...","red")) os.system("exit") elif img_ext == "png": try: with open(file,'rb') as f: data = f.read() data = data + file_name.encode() hide = lsbset.hide(img,msg,generators.eratosthenes()) hide.save("./Images/"+img_ext_arr[0]+".png") except Exception as e: print(colored(e,"red")) finally: print(colored("File Hidden In the Image...","green")) print(colored("File Is Under Images Folder "+img_ext_arr[0]+".jpg","yellow")) goto = input(colored("Type E(exit) M(main menu)")) if goto.lower() == "e": os.system("exit") elif goto.lower() == "m": banner(currentos) else: print(colored("Wrong Input...","red")) os.system("exit") #if image file is not supported else: print(colored("We Recommend using jpg,png Format Images","red")) os.system("exit")
#4.1 Написать программу, "прячущую" заданную строку в # текстовый или графический контейнер. Предусмотреть # извлечение текста из контейнера. from stegano import exifHeader # импортируем библиотеку message = input('Введите ваше секретное послание: \n') # пользователь программы вводит сообщение для зашифровки secret = exifHeader.hide("img/urfu.jpg", "img/urfu_secret.jpg",f'{message}') # заданная строка прячется в графический контейнер result = exifHeader.reveal("img/urfu_secret.jpg") # чтение изображения с посланием result = result.decode() # расшифровка полученного сообщения print(f'\nПослание, полученное при расшифровке изображения:\n{result}') # вывод расшифрованных данных
def jpg_tiff_encode(file_name, message, mfile_name): secret = exifHeader.hide(file_name, mfile_name, secret_message=message)
if func == "-e": msg = input('Enter secret message:') trans = lsb.hide(file, message=msg) trans.save(file2) os.remove(file) os.rename(file2, file) print(' ') print('Message Successfully Hidden!!!') if func == "-d": message = lsb.reveal(file) print(' ') print('The Message Was:') print(message) elif file.endswith('.jpg'): file2 = 'photo2.jpg' if func == "-e": msg = input('Enter secret message:') parser.hide(file, file2, msg) os.remove(file) os.rename(file2, file) print(' ') print('Message Successfully Hidden!!!') if func == "-d": message = parser.reveal(file) print('The Message Was:') print(message.decode('utf-8')) else: print('FILE FORMAT NOT SUPPORTED.')
def hide_message_console(currentos,msg,image): #hide message for windows os if currentos == "windows": os.system("cls") #get the image file name and extension img = image.replace('"','') img = img.strip() img_name_arr = img.split("\\") img_name = img_name_arr[len(img_name_arr)-1] img_ext_arr = img_name.split(".") img_ext = img_ext_arr[len(img_ext_arr)-1] #method if image file is jpg or jpeg if img_ext == "jpg" or img_ext == "jpeg": print(colored("Message: "+msg,"green")) print(colored("Image: "+img_name,"green")) confirm = input(colored("Type Y to confirm X to retry -->> ","green")) if(confirm.lower() == "y"): #try to hide message to file try: exifHeader.hide(img,"./Images/"+img_ext_arr[0]+".jpg", msg) os.system("cls") print(colored("Message Hidden In Image","green")) print(colored("Image Available Under Images Folder","green")) os.system("exit") except Exception as e: print(colored("We have A Problem. Try Later...","red")) os.system("exit") elif confirm.lower() == "x": os.system("cls") os.system("exit") #method if image file is png elif img_ext == "png": print(colored("Message: "+msg,"green")) print(colored("Image: "+img_name,"green")) confirm = input(colored("Type Y to confirm X to retry -->> ","green")) if(confirm.lower() == "y"): #try to hide msg to file try: hide = lsbset.hide(img,msg,generators.eratosthenes()) hide.save("./Images/"+img_ext_arr[0]+".png") os.system("cls") print(colored("Message Hidden In Image","green")) print(colored("Image Available Under Images Folder","green")) os.system("exit") except Exception as e: print(e) print(colored("We have A Problem. Try Later...","red")) os.system("exit") elif confirm.lower() == "x": os.system("cls") os.system("exit") #if image file is not supported else: print(colored("We Recommend using jpg,png Format Images","red")) os.system("exit") elif currentos == "linux": os.system("clear") #get the image file name and extension img = image.replace('"','') img = img.strip() img_name_arr = img.split("/") img_name = img_name_arr[len(img_name_arr)-1] img_ext_arr = img_name.split(".") img_ext = img_ext_arr[len(img_ext_arr)-1] #method if image file is jpg or jpeg if img_ext == "jpg" or img_ext == "jpeg": print(colored("Message: "+msg,"green")) print(colored("Image: "+img_name,"green")) confirm = input(colored("Type Y to confirm X to retry -->> ","green")) if(confirm.lower() == "y"): #try to hide message to file try: exifHeader.hide(img,"./Images/"+img_ext_arr[0]+".jpg", msg) os.system("clear") print(colored("Message Hidden In Image","green")) print(colored("Image Available Under Images Folder","green")) os.system("exit") except Exception as e: print(e) #print(colored("We have A Problem. Try Later...","red")) #os.system("exit") elif confirm.lower() == "x": os.system("clear") os.system("exit") #method if image file is png elif img_ext == "png": print(colored("Message: "+msg,"green")) print(colored("Image: "+img_name,"green")) confirm = input(colored("Type Y to confirm X to retry -->> ","green")) if(confirm.lower() == "y"): #try to hide msg to file try: hide = lsbset.hide(img,msg,generators.eratosthenes()) hide.save("./Images/"+img_ext_arr[0]+".png") os.system("clear") print(colored("Message Hidden In Image","green")) print(colored("Image Available Under Images Folder","green")) os.system("exit") except Exception as e: print(colored("We have A Problem. Try Later...","red")) os.system("exit") elif confirm.lower() == "x": os.system("clear") os.system("exit") #if image file is not supported else: print(colored("We Recommend using jpg,png Format Images","red")) os.system("exit")
def hide_msg(path, message): message_time = datetime.datetime.now().strftime("%y%m%d%H%M%S") new_img = 'Secret_pic' + message_time + '.jpg' exifHeader.hide(path.get(), new_img, secret_message=message.get()) msBox.showinfo("saved", "image has been saved with name " + new_img)