Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from socket import *
- import Tkinter
- from tkFileDialog import askopenfilename
- import string
- import time
- from Crypto.Cipher import AES
- from threading import Thread
- import os
- import unicodedata
- import pickle
- class simpleapp_tk(Tkinter.Tk):
- def __init__(self,parent):
- Tkinter.Tk.__init__(self,parent)
- self.parent = parent
- self.initialize()
- def initialize(self):
- self.grid()
- def Login_to_server(client_s, username, password):
- global app
- try:
- app.label_not1.grid_forget()
- except AttributeError:
- pass
- if username != '' and password != '':
- client_s.send('login')
- client_s.send(username)
- is_ok = client_s.recv(1024)
- if is_ok == 'ok':
- main_screen(client_s, username, password)
- else:
- app.labelVariable_not1 = Tkinter.StringVar()
- app.labelVariable_not1.set('User does not exist')
- app.label_not1 = Tkinter.Label(app, textvariable=app.labelVariable_not1, anchor="center", fg="#FF0000",bg="black")
- app.label_not1.grid(column=1, row=6, sticky='EW')
- app.label_not1.config(font=("Arial", 14))
- Login(client_s, 1)
- else:
- Login(client_s, 1)
- def Login(client_s, x):
- global app
- app.labelVariable.set(u"Login")
- app.label.grid(column=1, row=0, columnspan=1, sticky='EW', padx='0', pady='30')
- app.button_login.grid_forget()
- app.button_register.grid_forget()
- try:
- app.label_not.grid_forget()
- except AttributeError:
- pass
- app.icon.grid(column=0, row=0, sticky='E')
- if x == 0:
- app.entryVariable_user = Tkinter.StringVar()
- app.entryVariable_user.set('')
- app.entry_user = Tkinter.Entry(app, textvariable = app.entryVariable_user)
- app.entry_user.grid(column=1, row=3, sticky='EW', columnspan = 4)
- app.entryVariable_password = Tkinter.StringVar()
- app.entryVariable_password.set('')
- app.entry_password = Tkinter.Entry(app, textvariable = app.entryVariable_password)
- app.entry_password.grid(column=1, row=4, sticky='EW')
- app.labelVariable_username = Tkinter.StringVar()
- app.label_username = Tkinter.Label(app, textvariable=app.labelVariable_username, anchor="w", fg="black", bg="#FF7700")
- app.label_username.grid(column=0, row=3, sticky='EW', padx='5')
- app.labelVariable_username.set(u"Username: ")
- app.label_username.config(font=("Arial", 14))
- app.labelVariable_password = Tkinter.StringVar()
- app.label_password = Tkinter.Label(app, textvariable=app.labelVariable_password, anchor="w", fg="black", bg="#FF7700")
- app.label_password.grid(column=0, row=4, sticky='EW', padx='5')
- app.labelVariable_password.set(u"Password: ")
- app.label_password.config(font=("Arial", 14))
- app.text_explaination = Tkinter.Text(bg='#FF7700', fg="black", font=('Arial', 10), height='3')
- app.text_explaination.insert(Tkinter.END, 'Your password will not be checked, make sure to enter the correct password for the wanted files.\nThe password you enter now will serve as your password for the files you will transfer this time.\nThe same password may be used many times.')
- app.text_explaination.grid(column=1, row=2, columnspan=1, sticky='W')
- app.button_login = Tkinter.Button(app, text=u"Login",command=lambda: Login_to_server(client_s, app.entryVariable_user.get(), app.entryVariable_password.get()), height='3', width='10', bg='white', fg='#0088FF')
- app.button_login.grid(column=1, row=5, padx='0', pady='10')
- app.button_login.config(font=("Arial bold", 12))
- def register_to_server(client_s, username):
- global app
- app.entry_user.grid_forget()
- app.label_username.grid_forget()
- try:
- app.label_not.grid_forget()
- except AttributeError:
- pass
- if username != '':
- client_s.send('register')
- client_s.send(username)
- user_ok = client_s.recv(1024)
- if user_ok == 'ok':
- app.entry_user.grid_forget()
- app.label_username.grid_forget()
- Login(client_s, 0)
- else:
- app.labelVariable_not = Tkinter.StringVar()
- app.labelVariable_not.set('Invalid username')
- app.label_not = Tkinter.Label(app, textvariable= app.labelVariable_not, anchor="center", fg="#FF0000", bg="black")
- app.label_not.grid(column=1, row=5, sticky='EW')
- app.label_not.config(font=("Arial", 14))
- register(client_s)
- else:
- register(client_s)
- def shut_down(client_s):
- #close sockets
- os._exit(0)
- def get_filepath(client_s, username, password): # a path from the user by using the windows browse window
- global app
- filename = ''
- while filename == '':
- filename = askopenfilename()
- t = Thread(target = sendFile, args = (client_s, filename, password,))
- t.start()
- app.label__select_files.grid_forget()
- app.button_browse.grid_forget()
- app.label.grid(column=0, row=0, columnspan=3, sticky='EW', padx='0', pady='30')
- app.label1Variable = Tkinter.StringVar()
- app.label1Variable.set(u"Would you like to upload more files?")
- app.label_more_files = Tkinter.Label(app, textvariable=app.label1Variable, anchor="center", fg="#0099FF", bg="#FF7700", height='3')
- app.label_more_files.grid(column=0, row=1, sticky='EW', padx='0', pady='30')
- app.label_more_files.config(font=("Arial", 14))
- app.button_yes = Tkinter.Button(app, text=u"Yes", command= lambda: main_screen(client_s, username, password), height='4', width='10', bg='white', fg='#0088FF')
- app.button_yes.grid(column=2, row=2, pady='10')
- app.button_yes.config(font=("Arial bold", 14))
- app.button_no = Tkinter.Button(app, text=u"No", command= lambda: shut_down(client_s), height='4', width='10', bg='white', fg='#0088FF')
- app.button_no.grid(column=3, row=2, pady='10')
- app.button_no.config(font=("Arial bold", 14))
- def main_screen(client_s, username, password):
- global app
- app.entry_user.grid_forget()
- app.entry_password.grid_forget()
- app.label_username.grid_forget()
- app.label_password.grid_forget()
- app.label.grid_forget()
- try:
- app.button_login.grid_forget()
- except AttributeError:
- pass
- try:
- app.button_register.grid_forget()
- except AttributeError:
- pass
- try:
- app.label_more_files.grid_forget()
- app.button_yes.grid_forget()
- app.button_no.grid_forget()
- except AttributeError:
- pass
- try:
- app.text_explaination.grid_forget()
- except AttributeError:
- pass
- try:
- app.label_not1.grid_forget()
- except AttributeError:
- pass
- app.labelVariable.set(u"GuardCloud")
- app.label = Tkinter.Label(app, textvariable=app.labelVariable, anchor="center", fg="#0099FF", bg="#FF7700", height='3', width='10')
- app.label.grid(column=2, row=0, columnspan=1, sticky='EW', padx='0', pady='30')
- app.label.config(font=("Arial", 24))
- app.labelVariable_select_files = Tkinter.StringVar()
- app.label__select_files = Tkinter.Label(app, textvariable=app.labelVariable_select_files, anchor="w", fg="black",bg="#FF7700")
- app.label__select_files.grid(column=0, row=2, sticky='EW', padx='0')
- app.labelVariable_select_files.set(u'Please choose a file: ')
- app.label__select_files.config(font=("Arial", 14))
- app.button_browse = Tkinter.Button(app, text=u"Browse...", command= lambda: get_filepath(client_s, username, password), height='3', width='8', bg='white',fg='#0088FF')
- app.button_browse.grid(column=1, row=2, padx='0', pady='0')
- app.button_browse.config(font=("Arial bold", 12))
- def register(client_s):
- global app
- app.labelVariable.set(u"Welcome to GuardCloud")
- app.label.grid(column=1, row=0, columnspan=1, sticky='EW', padx='0', pady='30')
- app.button_login.grid_forget()
- app.button_register.grid_forget()
- app.entryVariable_user = Tkinter.StringVar()
- app.entryVariable_user.set('')
- app.entry_user = Tkinter.Entry(app, textvariable = app.entryVariable_user)
- app.entry_user.grid(column=1, row=2, sticky='EW', columnspan=4)
- '''app.entryVariable_password = Tkinter.StringVar()
- app.entryVariable_password.set('')
- app.entry_password = Tkinter.Entry(app, textvariable = app.entryVariable_password)
- app.entry_password.grid(column=1, row=3, sticky='EW')'''
- app.labelVariable_username = Tkinter.StringVar()
- app.label_username = Tkinter.Label(app, textvariable=app.labelVariable_username, anchor="w", fg="black", bg="#FF7700")
- app.label_username.grid(column=0, row=2, sticky='EW', padx='5')
- app.labelVariable_username.set(u"Username: ")
- app.label_username.config(font=("Arial", 14))
- '''app.labelVariable_password = Tkinter.StringVar()
- app.label_password = Tkinter.Label(app, textvariable=app.labelVariable_password, anchor="w", fg="black",bg="#FF7700")
- app.label_password.grid(column=0, row=3, sticky='EW', padx='5')
- app.labelVariable_password.set(u"Password: ")
- app.label_password.config(font=("Arial", 14))'''
- app.button_register = Tkinter.Button(app, text=u"Register", command= lambda: register_to_server(client_s, app.entryVariable_user.get()), height='3', width='10', bg='white',fg='#0088FF')
- app.button_register.grid(column=1, row=4, padx='0', pady='40')
- app.button_register.config(font=("Arial bold", 12))
- '''app.labelVariable_password1 = Tkinter.StringVar()
- app.label_password1 = Tkinter.Label(app, textvariable=app.labelVariable_password1, anchor="w", fg="black", bg="#FF7700")
- app.label_password1.grid(column=1, row=4, columnspan=1, sticky='EW')
- app.labelVariable_password1.set(u"(Remember your password otherwise you won't be able to access your files.) ")
- app.label_password1.config(font=("Arial", 12))'''
- def tk_first_screen(client_s):
- global app
- app = simpleapp_tk(None)
- app.title('GuardCloud')
- app.geometry('700x500')
- app.resizable(False, False)
- app.configure(background='#FF7700')
- app.labelVariable = Tkinter.StringVar()
- app.label = Tkinter.Label(app, textvariable=app.labelVariable, anchor="center", fg="#0099FF", bg="#FF7700", height = '3', width ='20')
- app.label.grid(column=0, row=0, columnspan=3, sticky='EW', padx='70', pady='40')
- app.labelVariable.set(u"GuardCloud")
- app.label.config(font=("Arial bold", 26))
- app.button_login = Tkinter.Button(app, text=u"Login",command= lambda: Login(client_s, 0), height = '4', width = '15', bg = 'white', fg = '#0088FF')
- app.button_login.grid(column=0, row=1, pady = '80')
- app.button_login.config(font=("Arial bold", 14))
- app.button_register = Tkinter.Button(app, text=u"Register", command= lambda: register(client_s), height = '4', width = '15', bg = 'white', fg = '#0088FF')
- app.button_register.grid(column=2, row=1, pady= '80')
- app.button_register.config(font=("Arial bold", 14))
- app.icon_img = Tkinter.PhotoImage(file='C:\Users\user\Desktop\guardcloud icon.gif')
- app.icon = Tkinter.Label(app, image=app.icon_img)
- app.icon.grid(column=5, row=0, sticky='E')
- app.mainloop()
- def sendFile(s, file_path, password):
- pathlist = string.split(file_path, '/')
- file_name = pathlist.pop(len(pathlist)-1)
- file_name = pickle.dumps(file_name)
- s.send('True')
- s.send(file_name)
- f = open(file_path, 'rb')
- data = f.read(1024)
- key = 'Shachar Abramson' #encode the pass
- IV = 16 * '\x00'
- mode = AES.MODE_CFB
- encryptor = AES.new(key, mode, IV=IV)
- encypteddata = encryptor.encrypt(data)
- #encypteddata = pickle.dumps(encypteddata)
- while (data):
- if(s.send(encypteddata)):
- data = f.read(1024)
- encypteddata = encryptor.encrypt(data)
- #encypteddata = pickle.dumps(encypteddata)
- f.close()
- time.sleep(2)
- def main():
- port = 60000
- server_ip = '127.0.0.1'
- s = socket()
- s.connect((server_ip, port))
- t = Thread(target=tk_first_screen, args = (s,))
- t.start()
- ''''''''''more_Files = 'True'
- while more_Files == 'True':
- file_path = get_filepath()
- s.send(more_Files)
- sendFile(s, file_path)
- print s.recv(1024)
- x = raw_input('Would you like to save more files?')
- if x == 'no':
- more_Files = 'False'''''''''
- #s.send(more_Files)
- #s.close()
- if __name__ == "__main__":
- main()
Add Comment
Please, Sign In to add comment