164 lines
5.1 KiB
Python
164 lines
5.1 KiB
Python
|
#!/usr/bin/env python3
|
||
|
import os
|
||
|
import time
|
||
|
import subprocess
|
||
|
import ntru_nino
|
||
|
import gi
|
||
|
gi.require_version('Gtk','3.0')
|
||
|
from gi.repository import Gtk, Gdk, GLib, GdkPixbuf
|
||
|
import paho.mqtt.client as paho
|
||
|
#from simplecrypt import encrypt, decrypt
|
||
|
import base64
|
||
|
from ctypes import *
|
||
|
import _ctypes
|
||
|
from textwrap import wrap
|
||
|
|
||
|
|
||
|
os.chdir(ntru_nino.__path__[0])
|
||
|
#broker = "192.168.0.108"
|
||
|
broker = "localhost"
|
||
|
client = paho.Client()
|
||
|
port = 1883
|
||
|
|
||
|
builder = Gtk.Builder()
|
||
|
builder.add_from_file("./Publisher.glade")
|
||
|
# File filter
|
||
|
|
||
|
window2 = builder.get_object("windowCheck")
|
||
|
spinner = builder.get_object("spinner_check")
|
||
|
window = builder.get_object("windowMain")
|
||
|
msg = builder.get_object("message")
|
||
|
key_file = builder.get_object("openfile")
|
||
|
res_text = builder.get_object("result_text")
|
||
|
enc_time = builder.get_object("enc_time")
|
||
|
enc_size = builder.get_object("enc_size")
|
||
|
enc_seq = builder.get_object("enc_seq")
|
||
|
msg_len = builder.get_object("msg_len")
|
||
|
msg_arr = builder.get_object("msg_arr")
|
||
|
enc_401 = builder.get_object("enc_401")
|
||
|
enc_593 = builder.get_object("enc_593")
|
||
|
|
||
|
set_command = 'gcc -shared -fPIC $(cat ./satan.txt) EES401/URG_encrypt.c -o /tmp/401_encrypt.so -I include'
|
||
|
set_command2 = 'gcc -shared -fPIC $(cat ./satan.txt) EES593/URG_encrypt.c -o /tmp/593_encrypt.so -I include'
|
||
|
|
||
|
|
||
|
# filterfilter1 = Gtk.FileFilter()
|
||
|
# filterfilter1.set_name("Shared Object")
|
||
|
# filterfilter1.add_pattern("*.so")
|
||
|
# key_file.add_filter(filterfilter1)
|
||
|
if not (os.path.isfile("/tmp/401_encrypt.so")):
|
||
|
# window2.show()
|
||
|
# spinner.start()
|
||
|
# time.sleep(3)
|
||
|
os.system(set_command)
|
||
|
os.system(set_command2)
|
||
|
# subprocess.run(str(set_command), shell=True, text=True)
|
||
|
# spinner.stop()
|
||
|
# window2.hide()
|
||
|
window.show()
|
||
|
# window.show_all()
|
||
|
|
||
|
class mainWindowHandler:
|
||
|
|
||
|
def u_encrypt(self, arg, enc_method):
|
||
|
so_file = enc_method
|
||
|
u_enc = CDLL(so_file)
|
||
|
u_enc.main.restype = c_double
|
||
|
u_enc.main.argtype = c_char_p
|
||
|
tmp_num = "07"
|
||
|
c_return = u_enc.main(arg.encode('utf-8'), tmp_num.encode("utf-8"))
|
||
|
# print("Python Log : C Return ", c_return)
|
||
|
_ctypes.dlclose(u_enc._handle)
|
||
|
return c_return
|
||
|
|
||
|
def file_handler(self, f_name, num):
|
||
|
num = str(num).zfill(2)
|
||
|
f = open("/tmp/"+f_name+"_"+num+".dat", "rb")
|
||
|
return f.read()
|
||
|
|
||
|
def payload_process(self, plain):
|
||
|
enc_glob = enc_box
|
||
|
cip_glob = cip_box
|
||
|
print(enc_glob)
|
||
|
# time_enc = self.u_encrypt(plain, key_file.get_filename())
|
||
|
time_enc = self.u_encrypt(plain, enc_glob)
|
||
|
# plain = self.file_handler("cipher_EES401", 7)
|
||
|
plain = self.file_handler(cip_glob, 7)
|
||
|
bff_text = Gtk.TextBuffer()
|
||
|
bff_text.set_text(str(plain, errors="replace"))
|
||
|
res_text.set_buffer(bff_text)
|
||
|
enc_size.set_text(str(len(plain)))
|
||
|
send_data = base64.b64encode(plain)
|
||
|
return send_data, time_enc
|
||
|
|
||
|
def on_windowMain_destroy(self, *args):
|
||
|
Gtk.main_quit()
|
||
|
|
||
|
def on_close_window_clicked(self, button):
|
||
|
Gtk.main_quit()
|
||
|
|
||
|
def enc_m01(self, button):
|
||
|
print("Checkbox 1 Called")
|
||
|
if enc_401.get_active():
|
||
|
enc_593.set_sensitive(False)
|
||
|
else:
|
||
|
enc_593.set_sensitive(True)
|
||
|
# enc_593.set_active(True)
|
||
|
print("Release m02")
|
||
|
global enc_box
|
||
|
global cip_box
|
||
|
enc_box = "/tmp/401_encrypt.so"
|
||
|
cip_box = "cipher_EES401"
|
||
|
|
||
|
def enc_m02(self, button):
|
||
|
print("Checkbox 2 Called")
|
||
|
if enc_593.get_active():
|
||
|
enc_401.set_sensitive(False)
|
||
|
else:
|
||
|
enc_401.set_sensitive(True)
|
||
|
print("Release m01")
|
||
|
global enc_box
|
||
|
global cip_box
|
||
|
enc_box = "/tmp/593_encrypt.so"
|
||
|
cip_box = "cipher_EES593"
|
||
|
|
||
|
def on_msg_clicked(self, button):
|
||
|
bff_text = Gtk.TextBuffer()
|
||
|
bff_text.set_text("Loading . . . ")
|
||
|
res_text.set_buffer(bff_text)
|
||
|
i = 0
|
||
|
my_ip = "device01"
|
||
|
identifier = "&"
|
||
|
f_name = "cipher"
|
||
|
time_arr = []
|
||
|
plain_arr = []
|
||
|
cipher_arr = []
|
||
|
plain = str(msg.get_text())
|
||
|
# if enc_box == None:
|
||
|
# bff_text.set_text("Please Enter Message First !")
|
||
|
# res_text.set_buffer(bff_text)
|
||
|
plain_original = plain
|
||
|
print(plain)
|
||
|
x = 16 - (len(plain) % 16)
|
||
|
plain = plain+(" "*x)
|
||
|
plain_arr = wrap(plain, 16, replace_whitespace=False, drop_whitespace=False)
|
||
|
print(plain_arr)
|
||
|
print("Join List Test ", ''.join(plain_arr))
|
||
|
client.connect(broker, port)
|
||
|
for i in range(len(plain_arr)):
|
||
|
data_now, time_enc = self.payload_process(plain_arr[i])
|
||
|
cipher_arr.append(data_now)
|
||
|
time_arr.append(time_enc)
|
||
|
|
||
|
enc_time.set_text(str(sum(time_arr)))
|
||
|
enc_seq.set_text(str(i))
|
||
|
msg_arr.set_text(str(plain_arr))
|
||
|
msg_len.set_text(str(len(plain_original)))
|
||
|
|
||
|
print(time_arr)
|
||
|
print(msg.get_text())
|
||
|
print("Your File ", key_file.get_filename())
|
||
|
|
||
|
builder.connect_signals(mainWindowHandler())
|
||
|
Gtk.main()
|