Guest User

Untitled

a guest
Jun 16th, 2017
24
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.50 KB | None | 0 0
  1. from socket import *
  2. import Tkinter
  3. from tkFileDialog import askopenfilename
  4. import string
  5. import time
  6. from Crypto.Cipher import AES
  7. from threading import Thread
  8. import os
  9. import unicodedata
  10. import pickle
  11.  
  12. class simpleapp_tk(Tkinter.Tk):
  13. def __init__(self,parent):
  14. Tkinter.Tk.__init__(self,parent)
  15. self.parent = parent
  16. self.initialize()
  17.  
  18. def initialize(self):
  19. self.grid()
  20.  
  21. def Login_to_server(client_s, username, password):
  22. global app
  23. try:
  24. app.label_not1.grid_forget()
  25. except AttributeError:
  26. pass
  27. if username != '' and password != '':
  28. client_s.send('login')
  29. client_s.send(username)
  30. is_ok = client_s.recv(1024)
  31. if is_ok == 'ok':
  32.  
  33. main_screen(client_s, username, password)
  34. else:
  35. app.labelVariable_not1 = Tkinter.StringVar()
  36. app.labelVariable_not1.set('User does not exist')
  37. app.label_not1 = Tkinter.Label(app, textvariable=app.labelVariable_not1, anchor="center", fg="#FF0000",bg="black")
  38. app.label_not1.grid(column=1, row=6, sticky='EW')
  39. app.label_not1.config(font=("Arial", 14))
  40. Login(client_s, 1)
  41. else:
  42. Login(client_s, 1)
  43.  
  44.  
  45.  
  46.  
  47. def Login(client_s, x):
  48. global app
  49. app.labelVariable.set(u"Login")
  50. app.label.grid(column=1, row=0, columnspan=1, sticky='EW', padx='0', pady='30')
  51. app.button_login.grid_forget()
  52. app.button_register.grid_forget()
  53. try:
  54. app.label_not.grid_forget()
  55. except AttributeError:
  56. pass
  57.  
  58. app.icon.grid(column=0, row=0, sticky='E')
  59.  
  60. if x == 0:
  61. app.entryVariable_user = Tkinter.StringVar()
  62. app.entryVariable_user.set('')
  63. app.entry_user = Tkinter.Entry(app, textvariable = app.entryVariable_user)
  64. app.entry_user.grid(column=1, row=3, sticky='EW', columnspan = 4)
  65.  
  66.  
  67. app.entryVariable_password = Tkinter.StringVar()
  68. app.entryVariable_password.set('')
  69. app.entry_password = Tkinter.Entry(app, textvariable = app.entryVariable_password)
  70. app.entry_password.grid(column=1, row=4, sticky='EW')
  71.  
  72.  
  73. app.labelVariable_username = Tkinter.StringVar()
  74. app.label_username = Tkinter.Label(app, textvariable=app.labelVariable_username, anchor="w", fg="black", bg="#FF7700")
  75. app.label_username.grid(column=0, row=3, sticky='EW', padx='5')
  76. app.labelVariable_username.set(u"Username: ")
  77. app.label_username.config(font=("Arial", 14))
  78.  
  79. app.labelVariable_password = Tkinter.StringVar()
  80. app.label_password = Tkinter.Label(app, textvariable=app.labelVariable_password, anchor="w", fg="black", bg="#FF7700")
  81. app.label_password.grid(column=0, row=4, sticky='EW', padx='5')
  82. app.labelVariable_password.set(u"Password: ")
  83. app.label_password.config(font=("Arial", 14))
  84.  
  85.  
  86.  
  87. app.text_explaination = Tkinter.Text(bg='#FF7700', fg="black", font=('Arial', 10), height='3')
  88. 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.')
  89. app.text_explaination.grid(column=1, row=2, columnspan=1, sticky='W')
  90.  
  91. 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')
  92. app.button_login.grid(column=1, row=5, padx='0', pady='10')
  93. app.button_login.config(font=("Arial bold", 12))
  94.  
  95. def register_to_server(client_s, username):
  96. global app
  97. app.entry_user.grid_forget()
  98. app.label_username.grid_forget()
  99. try:
  100. app.label_not.grid_forget()
  101. except AttributeError:
  102. pass
  103. if username != '':
  104. client_s.send('register')
  105. client_s.send(username)
  106. user_ok = client_s.recv(1024)
  107. if user_ok == 'ok':
  108. app.entry_user.grid_forget()
  109. app.label_username.grid_forget()
  110. Login(client_s, 0)
  111. else:
  112. app.labelVariable_not = Tkinter.StringVar()
  113. app.labelVariable_not.set('Invalid username')
  114. app.label_not = Tkinter.Label(app, textvariable= app.labelVariable_not, anchor="center", fg="#FF0000", bg="black")
  115. app.label_not.grid(column=1, row=5, sticky='EW')
  116. app.label_not.config(font=("Arial", 14))
  117. register(client_s)
  118. else:
  119. register(client_s)
  120.  
  121. def shut_down(client_s):
  122. #close sockets
  123. os._exit(0)
  124.  
  125. def get_filepath(client_s, username, password): # a path from the user by using the windows browse window
  126. global app
  127. filename = ''
  128. while filename == '':
  129. filename = askopenfilename()
  130. t = Thread(target = sendFile, args = (client_s, filename, password,))
  131. t.start()
  132.  
  133. app.label__select_files.grid_forget()
  134. app.button_browse.grid_forget()
  135.  
  136. app.label.grid(column=0, row=0, columnspan=3, sticky='EW', padx='0', pady='30')
  137.  
  138. app.label1Variable = Tkinter.StringVar()
  139. app.label1Variable.set(u"Would you like to upload more files?")
  140. app.label_more_files = Tkinter.Label(app, textvariable=app.label1Variable, anchor="center", fg="#0099FF", bg="#FF7700", height='3')
  141. app.label_more_files.grid(column=0, row=1, sticky='EW', padx='0', pady='30')
  142. app.label_more_files.config(font=("Arial", 14))
  143.  
  144. 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')
  145. app.button_yes.grid(column=2, row=2, pady='10')
  146. app.button_yes.config(font=("Arial bold", 14))
  147.  
  148. app.button_no = Tkinter.Button(app, text=u"No", command= lambda: shut_down(client_s), height='4', width='10', bg='white', fg='#0088FF')
  149. app.button_no.grid(column=3, row=2, pady='10')
  150. app.button_no.config(font=("Arial bold", 14))
  151.  
  152.  
  153. def main_screen(client_s, username, password):
  154. global app
  155. app.entry_user.grid_forget()
  156. app.entry_password.grid_forget()
  157. app.label_username.grid_forget()
  158. app.label_password.grid_forget()
  159. app.label.grid_forget()
  160.  
  161. try:
  162. app.button_login.grid_forget()
  163. except AttributeError:
  164. pass
  165.  
  166. try:
  167. app.button_register.grid_forget()
  168. except AttributeError:
  169. pass
  170.  
  171. try:
  172. app.label_more_files.grid_forget()
  173. app.button_yes.grid_forget()
  174. app.button_no.grid_forget()
  175. except AttributeError:
  176. pass
  177.  
  178. try:
  179. app.text_explaination.grid_forget()
  180. except AttributeError:
  181. pass
  182.  
  183. try:
  184. app.label_not1.grid_forget()
  185. except AttributeError:
  186. pass
  187.  
  188.  
  189. app.labelVariable.set(u"GuardCloud")
  190. app.label = Tkinter.Label(app, textvariable=app.labelVariable, anchor="center", fg="#0099FF", bg="#FF7700", height='3', width='10')
  191. app.label.grid(column=2, row=0, columnspan=1, sticky='EW', padx='0', pady='30')
  192. app.label.config(font=("Arial", 24))
  193.  
  194. app.labelVariable_select_files = Tkinter.StringVar()
  195. app.label__select_files = Tkinter.Label(app, textvariable=app.labelVariable_select_files, anchor="w", fg="black",bg="#FF7700")
  196. app.label__select_files.grid(column=0, row=2, sticky='EW', padx='0')
  197. app.labelVariable_select_files.set(u'Please choose a file: ')
  198. app.label__select_files.config(font=("Arial", 14))
  199.  
  200. 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')
  201. app.button_browse.grid(column=1, row=2, padx='0', pady='0')
  202. app.button_browse.config(font=("Arial bold", 12))
  203.  
  204.  
  205. def register(client_s):
  206. global app
  207. app.labelVariable.set(u"Welcome to GuardCloud")
  208. app.label.grid(column=1, row=0, columnspan=1, sticky='EW', padx='0', pady='30')
  209. app.button_login.grid_forget()
  210. app.button_register.grid_forget()
  211.  
  212. app.entryVariable_user = Tkinter.StringVar()
  213. app.entryVariable_user.set('')
  214. app.entry_user = Tkinter.Entry(app, textvariable = app.entryVariable_user)
  215. app.entry_user.grid(column=1, row=2, sticky='EW', columnspan=4)
  216.  
  217. '''app.entryVariable_password = Tkinter.StringVar()
  218. app.entryVariable_password.set('')
  219. app.entry_password = Tkinter.Entry(app, textvariable = app.entryVariable_password)
  220. app.entry_password.grid(column=1, row=3, sticky='EW')'''
  221.  
  222. app.labelVariable_username = Tkinter.StringVar()
  223. app.label_username = Tkinter.Label(app, textvariable=app.labelVariable_username, anchor="w", fg="black", bg="#FF7700")
  224. app.label_username.grid(column=0, row=2, sticky='EW', padx='5')
  225. app.labelVariable_username.set(u"Username: ")
  226. app.label_username.config(font=("Arial", 14))
  227.  
  228. '''app.labelVariable_password = Tkinter.StringVar()
  229. app.label_password = Tkinter.Label(app, textvariable=app.labelVariable_password, anchor="w", fg="black",bg="#FF7700")
  230. app.label_password.grid(column=0, row=3, sticky='EW', padx='5')
  231. app.labelVariable_password.set(u"Password: ")
  232. app.label_password.config(font=("Arial", 14))'''
  233.  
  234. 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')
  235. app.button_register.grid(column=1, row=4, padx='0', pady='40')
  236. app.button_register.config(font=("Arial bold", 12))
  237.  
  238. '''app.labelVariable_password1 = Tkinter.StringVar()
  239. app.label_password1 = Tkinter.Label(app, textvariable=app.labelVariable_password1, anchor="w", fg="black", bg="#FF7700")
  240. app.label_password1.grid(column=1, row=4, columnspan=1, sticky='EW')
  241. app.labelVariable_password1.set(u"(Remember your password otherwise you won't be able to access your files.) ")
  242. app.label_password1.config(font=("Arial", 12))'''
  243.  
  244.  
  245. def tk_first_screen(client_s):
  246. global app
  247. app = simpleapp_tk(None)
  248. app.title('GuardCloud')
  249. app.geometry('700x500')
  250. app.resizable(False, False)
  251. app.configure(background='#FF7700')
  252. app.labelVariable = Tkinter.StringVar()
  253. app.label = Tkinter.Label(app, textvariable=app.labelVariable, anchor="center", fg="#0099FF", bg="#FF7700", height = '3', width ='20')
  254. app.label.grid(column=0, row=0, columnspan=3, sticky='EW', padx='70', pady='40')
  255. app.labelVariable.set(u"GuardCloud")
  256. app.label.config(font=("Arial bold", 26))
  257.  
  258. app.button_login = Tkinter.Button(app, text=u"Login",command= lambda: Login(client_s, 0), height = '4', width = '15', bg = 'white', fg = '#0088FF')
  259. app.button_login.grid(column=0, row=1, pady = '80')
  260. app.button_login.config(font=("Arial bold", 14))
  261.  
  262. app.button_register = Tkinter.Button(app, text=u"Register", command= lambda: register(client_s), height = '4', width = '15', bg = 'white', fg = '#0088FF')
  263. app.button_register.grid(column=2, row=1, pady= '80')
  264. app.button_register.config(font=("Arial bold", 14))
  265.  
  266. app.icon_img = Tkinter.PhotoImage(file='C:\Users\user\Desktop\guardcloud icon.gif')
  267. app.icon = Tkinter.Label(app, image=app.icon_img)
  268. app.icon.grid(column=5, row=0, sticky='E')
  269.  
  270. app.mainloop()
  271.  
  272. def sendFile(s, file_path, password):
  273. pathlist = string.split(file_path, '/')
  274. file_name = pathlist.pop(len(pathlist)-1)
  275. file_name = pickle.dumps(file_name)
  276. s.send('True')
  277. s.send(file_name)
  278. f = open(file_path, 'rb')
  279. data = f.read(1024)
  280. key = 'Shachar Abramson' #encode the pass
  281. IV = 16 * '\x00'
  282. mode = AES.MODE_CFB
  283. encryptor = AES.new(key, mode, IV=IV)
  284. encypteddata = encryptor.encrypt(data)
  285. #encypteddata = pickle.dumps(encypteddata)
  286.  
  287. while (data):
  288. if(s.send(encypteddata)):
  289. data = f.read(1024)
  290. encypteddata = encryptor.encrypt(data)
  291. #encypteddata = pickle.dumps(encypteddata)
  292. f.close()
  293. time.sleep(2)
  294.  
  295.  
  296.  
  297. def main():
  298.  
  299. port = 60000
  300. server_ip = '127.0.0.1'
  301. s = socket()
  302. s.connect((server_ip, port))
  303. t = Thread(target=tk_first_screen, args = (s,))
  304. t.start()
  305.  
  306. ''''''''''more_Files = 'True'
  307. while more_Files == 'True':
  308. file_path = get_filepath()
  309. s.send(more_Files)
  310. sendFile(s, file_path)
  311. print s.recv(1024)
  312.  
  313. x = raw_input('Would you like to save more files?')
  314. if x == 'no':
  315. more_Files = 'False'''''''''
  316. #s.send(more_Files)
  317.  
  318. #s.close()
  319.  
  320.  
  321. if __name__ == "__main__":
  322. main()
Add Comment
Please, Sign In to add comment