Guest User

LABA3 IB FINAL

a guest
Oct 13th, 2016
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 23.10 KB | None | 0 0
  1. import tkinter,sqlite3,hashlib,random
  2. import random,os
  3. class file_encryption:
  4.    
  5.     def __init__(self, path, key):
  6.         self.key = key
  7.         self.path = path
  8.         self.encrypted = 0
  9.         self.oldpath = "old"+self.path
  10.         self.old_deleted = 0
  11.         f = open(self.path,'rb')
  12.         old = f.read()
  13.         f.close()
  14.         f = open(self.oldpath,'wb')
  15.         f.write(old)
  16.         f.close()
  17.  
  18.     def set_key(self,key):
  19.         self.key = key
  20.    
  21.     def encrypt(self):
  22.         self.encrypted = 1
  23.         random.seed(self.key)
  24.         f = open(self.path,'rb')
  25.         data = f.read()
  26.         f.close()
  27.         newdata = []
  28.         for i in data:
  29.             newint = i+random.randint(1,110)
  30.             if(newint>255):
  31.                 newint = newint-255
  32.             newdata.append(newint)
  33.         f = open(self.path,'wb')
  34.         f.write(bytes(newdata))
  35.         f.close()
  36.  
  37.     def decrypt(self):
  38.         self.encrypted = 0
  39.         random.seed(self.key)
  40.         f = open(self.path,'rb')
  41.         data = f.read()
  42.         f.close()
  43.         newdata = []
  44.         for i in data:
  45.             newint = i-random.randint(1,110)
  46.             if(newint<0):
  47.                 newint = 255+newint
  48.             newdata.append(newint)
  49.         f = open(self.path,'wb')
  50.         f.write(bytes(newdata))
  51.         f.close()
  52.  
  53.     def delete_old(self):
  54.         if(self.old_deleted==0):
  55.             try:
  56.                 os.remove(self.oldpath)
  57.             except:
  58.                 print("None old")
  59.             self.old_deleted = 1
  60.  
  61. class users_database:
  62.     def __init__(self):
  63.         self.dbname = 'users.db'
  64.         self.new = 1
  65.         connection = sqlite3.connect(self.dbname)
  66.         cursor = connection.cursor()
  67.         if(self.table_exists(cursor)==0):
  68.             cursor.execute("CREATE TABLE users (name text, pwd_h text, blocked text)")
  69.             self.add_admin(cursor)
  70.             connection.commit()
  71.         connection.close()
  72.  
  73.     def table_exists(self,cursor):
  74.         try:
  75.             cursor.execute("SELECT count(*) FROM sqlite_master WHERE type = 'table' AND name = 'users'")
  76.         except:
  77.             self.new = 0
  78.             return 1
  79.         return(cursor.fetchone()[0])
  80.  
  81.     def add_admin(self,cursor):
  82.         cursor.execute("INSERT INTO users VALUES (?,?,?)",("ADMIN","","0"))
  83.  
  84.     #ONLY METHODS LISTED BELOW ARE EXPECTED TO BE CALLED AS OBJECT'S METHODS
  85.     def return_all(self):
  86.         connection = sqlite3.connect(self.dbname)
  87.         cursor = connection.cursor()
  88.         cursor.execute("SELECT * FROM users")
  89.         data = cursor.fetchall()
  90.         connection.close()
  91.         return(data)
  92.    
  93.     def add_user(self,login,pwd_h):
  94.         connection = sqlite3.connect(self.dbname)
  95.         cursor = connection.cursor()
  96.         cursor.execute("INSERT INTO users VALUES (?,?,?)",(login,pwd_h,"0"))
  97.         connection.commit()
  98.         succ = 0
  99.         cursor.execute("SELECT * FROM users WHERE name=?",(login,))
  100.         if(cursor.fetchone()==(login,pwd_h,"0")):
  101.             succ=1
  102.         connection.close()
  103.         return(succ)
  104.  
  105.     def check_login(self,login):
  106.         connection = sqlite3.connect(self.dbname)
  107.         cursor = connection.cursor()
  108.         cursor.execute("SELECT * FROM users WHERE name=?",(login,))
  109.         to_ret = 0
  110.         if(cursor.fetchall()==[]):
  111.             to_ret=1
  112.         connection.close()
  113.         return(to_ret)
  114.  
  115.     def get_user(self,login):
  116.         connection = sqlite3.connect(self.dbname)
  117.         cursor = connection.cursor()
  118.         cursor.execute("SELECT * FROM users WHERE name=?",(login,))
  119.         user = cursor.fetchone()
  120.         connection.close()
  121.         return(user)
  122.    
  123.     def change_password(self,login,pwdh):
  124.         connection = sqlite3.connect(self.dbname)
  125.         cursor = connection.cursor()
  126.         cursor.execute("UPDATE users SET pwd_h = ? WHERE name = ?",(pwdh,login))
  127.         connection.commit()
  128.         succ = 0
  129.         cursor.execute("SELECT pwd_h FROM users WHERE name=?",(login,))
  130.         if(cursor.fetchone()[0]==pwdh):
  131.             succ=1
  132.         connection.close()
  133.         return(succ)
  134.  
  135.     def set_user_state(self,login,state):
  136.         connection = sqlite3.connect(self.dbname)
  137.         cursor = connection.cursor()
  138.         cursor.execute("UPDATE users SET blocked = ? WHERE name = ?",(state,login))
  139.         connection.commit()
  140.         succ = 0
  141.         cursor.execute("SELECT blocked FROM users WHERE name=?",(login,))
  142.         if(cursor.fetchone()[0]==state):
  143.             succ=1
  144.         connection.close()
  145.         return(succ)
  146.    
  147.  
  148.  
  149. class program_windowed:
  150.     def __init__(self):
  151.         self.database = users_database()
  152.         self.crypto = file_encryption('users.db','')
  153.         if(self.database.new==1):
  154.             self.crypto.encrypt()
  155.         self.crypto.encrypted=1
  156.         self.curuser = ''
  157.         self.current_widgets = []
  158.         self.login_fails = 0
  159.        
  160.         self.mainwindow=tkinter.Tk()
  161.         self.mainwindow.geometry('600x600')
  162.         self.mainwindow.title("Laba1_IB_ZUDILOW_A_A")
  163.         self.mainwindow.protocol('WM_DELETE_WINDOW', self.quit_job)
  164.  
  165.         self.draw_login_interface()
  166.        
  167.         self.mainwindow.mainloop()
  168.  
  169.     def quit_job(self):
  170.         if(self.crypto.encrypted==0):
  171.             self.crypto.encrypt()
  172.         self.crypto.delete_old()
  173.         self.mainwindow.destroy()
  174.  
  175.     def draw_login_interface(self):
  176.         self.clear_window()
  177.         self.curuser = ''
  178.         self.mainwindow.geometry('200x170')
  179.         self.login_entry = tkinter.Entry(self.mainwindow)
  180.         self.pwd_entry = tkinter.Entry(self.mainwindow,show='*')
  181.         self.login_label = tkinter.Label(self.mainwindow,text="Login:")
  182.         self.pwd_label = tkinter.Label(self.mainwindow,text="Password:")
  183.         self.login_btn = tkinter.Button(self.mainwindow,text='Login',command=self.login)
  184.         self.logbox = tkinter.Label(self.mainwindow,text='')
  185.         self.about_btn = tkinter.Button(self.mainwindow,text='About..',command = self.about_win)
  186.         self.key_label = tkinter.Label(self.mainwindow,text='Key: ')
  187.         self.key_entry = tkinter.Entry(self.mainwindow,show='*',width=15)
  188.        
  189.         self.login_label.place(x=5,y=10)
  190.         self.pwd_label.place(x=5,y=35)
  191.         self.login_entry.place(x=70,y=10)
  192.         self.pwd_entry.place(x=70,y=35)
  193.         self.login_btn.place(x=5,y=60)
  194.         self.logbox.place(x=5,y=85)
  195.         self.about_btn.place(x=5,y=120)
  196.         self.key_label.place(x=60,y=60)
  197.         self.key_entry.place(x=90,y=60)
  198.  
  199.         self.current_widgets.append(self.login_label)
  200.         self.current_widgets.append(self.pwd_label)
  201.         self.current_widgets.append(self.login_entry)
  202.         self.current_widgets.append(self.pwd_entry)
  203.         self.current_widgets.append(self.login_btn)
  204.         self.current_widgets.append(self.logbox)
  205.         self.current_widgets.append(self.about_btn)
  206.         self.current_widgets.append(self.key_label)
  207.         self.current_widgets.append(self.key_entry)
  208.  
  209.     def about_win(self):
  210.         self.aboutwindow = tkinter.Toplevel(self.mainwindow)
  211.         self.aboutwindow.title('About')
  212.         self.amsg=tkinter.Message(self.aboutwindow,text='Зудилов А А, ИДБ-13-10, Вариант 8(содержит кириллицу и латиницу)')
  213.         self.amsg.pack()
  214.  
  215.     def logoff(self):
  216.         self.crypto.encrypt()
  217.         self.draw_login_interface()
  218.  
  219.     def draw_admin_interface(self,changed_passw):
  220.         self.clear_window()
  221.         self.mainwindow.geometry('500x400')
  222.         self.users_table = tkinter.Listbox(self.mainwindow,width=80)
  223.         users = self.database.return_all()
  224.         for user in users:
  225.             blk_text = 'not blocked,password secure'
  226.             pwd = 'no password'
  227.             if(user[2]=='1'):
  228.                 blk_text='not blocked,password insecure'
  229.             if(user[2]=='2'):
  230.                 blk_text='blocked'
  231.             if(user[1]!=''):
  232.                 pwd = user[1]
  233.             ustring = user[0]+'|||'+pwd+'|||'+blk_text
  234.             self.users_table.insert('end',ustring)
  235.         if(changed_passw=='0'):
  236.             self.new_pwd_label1 = tkinter.Label(self.mainwindow,text='New password:')
  237.             self.new_pwd_label2 = tkinter.Label(self.mainwindow,text='Again:')
  238.             self.new_pwd_entry1 = tkinter.Entry(self.mainwindow,show='*')
  239.             self.new_pwd_entry2 = tkinter.Entry(self.mainwindow,show='*')
  240.             self.new_pwd_btn = tkinter.Button(self.mainwindow,text = 'Change password',command = self.change_fpwd)
  241.  
  242.             self.new_pwd_label1.place(x=5,y=265)
  243.             self.new_pwd_label2.place(x=5,y=290)
  244.             self.new_pwd_entry1.place(x=120,y=265)
  245.             self.new_pwd_entry2.place(x=120,y=290)
  246.             self.new_pwd_btn.place(x=5,y=315)
  247.  
  248.             self.current_widgets.append(self.new_pwd_label1)
  249.             self.current_widgets.append(self.new_pwd_label2)
  250.             self.current_widgets.append(self.new_pwd_entry1)
  251.             self.current_widgets.append(self.new_pwd_entry2)
  252.             self.current_widgets.append(self.new_pwd_btn)
  253.         elif(changed_passw=='1'):
  254.             self.old_pwd_label = tkinter.Label(self.mainwindow,text='Old password:')
  255.             self.new_pwd_label1 = tkinter.Label(self.mainwindow,text='New password:')
  256.             self.new_pwd_label2 = tkinter.Label(self.mainwindow,text='Again:')
  257.             self.old_pwd_entry = tkinter.Entry(self.mainwindow,show='*')
  258.             self.new_pwd_entry1 = tkinter.Entry(self.mainwindow,show='*')
  259.             self.new_pwd_entry2 = tkinter.Entry(self.mainwindow,show='*')
  260.             self.new_pwd_btn = tkinter.Button(self.mainwindow,text = 'Change password',command = self.change_pwd)
  261.  
  262.             self.old_pwd_label.place(x=5,y=265)
  263.             self.old_pwd_entry.place(x=120,y=265)
  264.             self.new_pwd_label1.place(x=5,y=290)
  265.             self.new_pwd_label2.place(x=5,y=315)
  266.             self.new_pwd_entry1.place(x=120,y=290)
  267.             self.new_pwd_entry2.place(x=120,y=315)
  268.             self.new_pwd_btn.place(x=5,y=340)
  269.  
  270.             self.current_widgets.append(self.old_pwd_entry)
  271.             self.current_widgets.append(self.old_pwd_label)
  272.             self.current_widgets.append(self.new_pwd_label1)
  273.             self.current_widgets.append(self.new_pwd_label2)
  274.             self.current_widgets.append(self.new_pwd_entry1)
  275.             self.current_widgets.append(self.new_pwd_entry2)
  276.             self.current_widgets.append(self.new_pwd_btn)
  277.            
  278.         self.newlogin_label = tkinter.Label(self.mainwindow,text='Login:')
  279.         self.newlogin_entry = tkinter.Entry(self.mainwindow)
  280.         self.newlogin_btn = tkinter.Button(self.mainwindow,text='Add new user',command = self.add_new_user)
  281.         self.toggle_block_btn = tkinter.Button(self.mainwindow,text='Toggle block',command = self.toggle_block)
  282.         self.toggle_secure_btn = tkinter.Button(self.mainwindow,text='Toggle secure',command = self.toggle_secure)
  283.         self.exit_btn = tkinter.Button(self.mainwindow,text='Logoff',command = self.logoff)
  284.         self.sas_btn = tkinter.Button(self.mainwindow,text='Fill with random users', command = self.fill_users)
  285.         self.key_entry = tkinter.Entry(self.mainwindow,width=10)
  286.         self.key_label = tkinter.Label(self.mainwindow,text='New crypto key')
  287.         self.key_btn = tkinter.Button(self.mainwindow,text='Change!!!11',command = self.change_key)
  288.        
  289.         self.key_entry.place(x=400,y=180)
  290.         self.key_label.place(x=300,y=180)
  291.         self.key_btn.place(x=360,y=205)
  292.         self.users_table.place(x=5,y=10)
  293.         self.newlogin_label.place(x=5,y=180)
  294.         self.newlogin_entry.place(x=50,y=180)
  295.         self.newlogin_btn.place(x=5,y=215)
  296.         self.toggle_block_btn.place(x=200,y=180)
  297.         self.toggle_secure_btn.place(x=200,y=215)
  298.         self.exit_btn.place(x=300,y=350)
  299.         self.sas_btn.place(x=300, y= 250)
  300.  
  301.         self.current_widgets.append(self.users_table)
  302.         self.current_widgets.append(self.newlogin_label)
  303.         self.current_widgets.append(self.newlogin_entry)
  304.         self.current_widgets.append(self.newlogin_btn)
  305.         self.current_widgets.append(self.toggle_block_btn)
  306.         self.current_widgets.append(self.toggle_secure_btn)
  307.         self.current_widgets.append(self.exit_btn)
  308.         self.current_widgets.append(self.sas_btn)
  309.         self.current_widgets.append(self.key_label)
  310.         self.current_widgets.append(self.key_entry)
  311.         self.current_widgets.append(self.key_btn)
  312.  
  313.     def change_key(self):
  314.         key = self.key_entry.get()
  315.         self.key_entry.delete(0,'end')
  316.         self.crypto.set_key(key)
  317.  
  318.     def fill_users(self):
  319.         for i in range(0,10):
  320.             name = ''
  321.             for j in range(0,5):
  322.                 new_chr = random.randint(97,122)
  323.                 name+=chr(new_chr)
  324.             if(self.database.check_login(name)==1):
  325.                 self.database.add_user(name,'')
  326.         user = self.database.get_user('ADMIN')
  327.         if(user[1]==''):
  328.             self.draw_admin_interface('0')
  329.         else:
  330.             self.draw_admin_interface('1')
  331.  
  332.     def draw_user_interface(self,changed_passw):
  333.         self.mainwindow.geometry('260x250')
  334.         self.clear_window()
  335.         self.report_label = tkinter.Label(self.mainwindow,text='')
  336.         self.report_label.place(x=5,y=10)
  337.         self.current_widgets.append(self.report_label)
  338.         self.exit_btn = tkinter.Button(self.mainwindow,text='Logoff',command = self.logoff)
  339.         self.exit_btn.place(x=200,y=200)
  340.         self.current_widgets.append(self.exit_btn)
  341.        
  342.         if(changed_passw=='0'):
  343.             self.new_pwd_label1 = tkinter.Label(self.mainwindow,text='New password:')
  344.             self.new_pwd_label2 = tkinter.Label(self.mainwindow,text='Again:')
  345.             self.new_pwd_entry1 = tkinter.Entry(self.mainwindow,show='*')
  346.             self.new_pwd_entry2 = tkinter.Entry(self.mainwindow,show='*')
  347.             self.new_pwd_btn = tkinter.Button(self.mainwindow,text = 'Change password',command = self.change_fpwd)
  348.  
  349.             self.new_pwd_label1.place(x=5,y=65)
  350.             self.new_pwd_label2.place(x=5,y=90)
  351.             self.new_pwd_entry1.place(x=120,y=65)
  352.             self.new_pwd_entry2.place(x=120,y=90)
  353.             self.new_pwd_btn.place(x=5,y=115)
  354.  
  355.             self.current_widgets.append(self.new_pwd_label1)
  356.             self.current_widgets.append(self.new_pwd_label2)
  357.             self.current_widgets.append(self.new_pwd_entry1)
  358.             self.current_widgets.append(self.new_pwd_entry2)
  359.             self.current_widgets.append(self.new_pwd_btn)
  360.         elif(changed_passw=='1'):
  361.             self.old_pwd_label = tkinter.Label(self.mainwindow,text='Old password:')
  362.             self.new_pwd_label1 = tkinter.Label(self.mainwindow,text='New password:')
  363.             self.new_pwd_label2 = tkinter.Label(self.mainwindow,text='Again:')
  364.             self.old_pwd_entry = tkinter.Entry(self.mainwindow,show='*')
  365.             self.new_pwd_entry1 = tkinter.Entry(self.mainwindow,show='*')
  366.             self.new_pwd_entry2 = tkinter.Entry(self.mainwindow,show='*')
  367.             self.new_pwd_btn = tkinter.Button(self.mainwindow,text = 'Change password',command = self.change_pwd)
  368.  
  369.             self.old_pwd_label.place(x=5,y=65)
  370.             self.old_pwd_entry.place(x=120,y=65)
  371.             self.new_pwd_label1.place(x=5,y=90)
  372.             self.new_pwd_label2.place(x=5,y=115)
  373.             self.new_pwd_entry1.place(x=120,y=90)
  374.             self.new_pwd_entry2.place(x=120,y=115)
  375.             self.new_pwd_btn.place(x=5,y=140)
  376.  
  377.             self.current_widgets.append(self.old_pwd_entry)
  378.             self.current_widgets.append(self.old_pwd_label)
  379.             self.current_widgets.append(self.new_pwd_label1)
  380.             self.current_widgets.append(self.new_pwd_label2)
  381.             self.current_widgets.append(self.new_pwd_entry1)
  382.             self.current_widgets.append(self.new_pwd_entry2)
  383.             self.current_widgets.append(self.new_pwd_btn)
  384.  
  385.     def report_bad(self):
  386.         self.report_label['text']='Password insecure'
  387.    
  388.     def toggle_secure(self):
  389.         login = self.users_table.get('active').split('|||')[0]
  390.         user = self.database.get_user(login)
  391.         new_state='1'
  392.         if(user[2]=='0'):
  393.             new_state = '1'
  394.         elif(user[2]=='1'):
  395.             new_state = '0'
  396.         else:
  397.             new_state = '2'
  398.         self.database.set_user_state(login,new_state)
  399.         user = self.database.get_user('ADMIN')
  400.         if(user[1]==''):
  401.             self.draw_admin_interface('0')
  402.         else:
  403.             self.draw_admin_interface('1')
  404.  
  405.     def toggle_block(self):
  406.         login = self.users_table.get('active').split('|||')[0]
  407.         user = self.database.get_user(login)
  408.         new_state='1'
  409.         if(user[2]=='0' or user[2]=='1'):
  410.             new_state = '2'
  411.         else:
  412.             new_state = '0'
  413.         self.database.set_user_state(login,new_state)
  414.         user = self.database.get_user('ADMIN')
  415.         if(user[1]==''):
  416.             self.draw_admin_interface('0')
  417.         else:
  418.             self.draw_admin_interface('1')
  419.  
  420.  
  421.     def change_fpwd(self):
  422.         if(self.new_pwd_entry1.get()==self.new_pwd_entry2.get() and self.curuser=='ADMIN'):
  423.             hasher = hashlib.md5()
  424.             hasher.update(self.new_pwd_entry1.get().encode('utf-8'))
  425.             pwd_hash = hasher.hexdigest()
  426.             self.database.change_password('ADMIN',pwd_hash)
  427.             self.draw_admin_interface('1')
  428.         elif(self.new_pwd_entry1.get()==self.new_pwd_entry2.get()):
  429.             user = self.database.get_user(self.curuser)
  430.             if(user[2]=='0'):
  431.                 if(self.check_pwd(self.new_pwd_entry1.get())==1):
  432.                     hasher = hashlib.md5()
  433.                     hasher.update(self.new_pwd_entry1.get().encode('utf-8'))
  434.                     pwd_hash = hasher.hexdigest()
  435.                     self.database.change_password(self.curuser,pwd_hash)
  436.                     self.draw_user_interface('1')
  437.                 else:
  438.                     self.report_bad()
  439.             elif(user[2]=='1'):
  440.                 hasher = hashlib.md5()
  441.                 hasher.update(self.new_pwd_entry1.get().encode('utf-8'))
  442.                 pwd_hash = hasher.hexdigest()
  443.                 self.database.change_password(self.curuser,pwd_hash)
  444.                 self.draw_user_interface('1')
  445.        
  446.  
  447.     def change_pwd(self):
  448.         user = self.database.get_user(self.curuser)
  449.         old_pwd_hash = self.database.get_user(self.curuser)[1]
  450.         hasher = hashlib.md5()
  451.         hasher.update(self.old_pwd_entry.get().encode('utf-8'))
  452.         inp_old_pwd_hash = hasher.hexdigest()
  453.         if(self.new_pwd_entry1.get()==self.new_pwd_entry2.get()\
  454.            and self.curuser=='ADMIN'\
  455.            and old_pwd_hash==inp_old_pwd_hash):
  456.             hasher = hashlib.md5()
  457.             hasher.update(self.new_pwd_entry1.get().encode('utf-8'))
  458.             pwd_hash = hasher.hexdigest()
  459.             self.database.change_password('ADMIN',pwd_hash)
  460.             self.draw_admin_interface('1')
  461.         elif(self.new_pwd_entry1.get()==self.new_pwd_entry2.get()\
  462.            and old_pwd_hash==inp_old_pwd_hash):
  463.             if(user[2]=='0'):
  464.                 if(self.check_pwd(self.new_pwd_entry1.get())==1):
  465.                     hasher = hashlib.md5()
  466.                     hasher.update(self.new_pwd_entry1.get().encode('utf-8'))
  467.                     pwd_hash = hasher.hexdigest()
  468.                     self.database.change_password(self.curuser,pwd_hash)
  469.                     self.draw_user_interface('1')
  470.                 else:
  471.                     self.report_bad()
  472.             elif(user[2]=='1'):
  473.                 hasher = hashlib.md5()
  474.                 hasher.update(self.new_pwd_entry1.get().encode('utf-8'))
  475.                 pwd_hash = hasher.hexdigest()
  476.                 self.database.change_password(self.curuser,pwd_hash)
  477.                 self.draw_user_interface('1')
  478.        
  479.  
  480.     def check_pwd(self,pwd):
  481.         cyrilic = []
  482.         latin = []
  483.         for i in range(1040,1071):
  484.             cyrilic.append(i)
  485.         for i in range(1072,1103):
  486.             cyrilic.append(i)
  487.         cyrilic.append(1025)
  488.         cyrilic.append(1105)
  489.         for i in range(97,122):
  490.             latin.append(i)
  491.         for i in range(65,90):
  492.             latin.append(i)
  493.         is_cyr = 0
  494.         is_lat = 0
  495.         for i in pwd:
  496.             if(ord(i) in cyrilic):
  497.                 is_cyr=1
  498.             if(ord(i) in latin):
  499.                 is_lat=1
  500.         if(is_cyr==1 and is_lat==1):
  501.             return(1)#okay
  502.         else:
  503.             return(0)#bad
  504.    
  505.     def add_new_user(self):
  506.         login = self.newlogin_entry.get()
  507.         if(self.database.check_login(login)==1):
  508.             self.database.add_user(login,'')
  509.         user = self.database.get_user('ADMIN')
  510.         if(user[1]==''):
  511.             self.draw_admin_interface('0')
  512.         else:
  513.             self.draw_admin_interface('1')
  514.    
  515.     def clear_window(self):
  516.         for i in self.current_widgets:
  517.             i.destroy()
  518.         self.current_widgets = []
  519.    
  520.     def login(self):
  521.         login = self.login_entry.get()
  522.         pwd = self.pwd_entry.get()
  523.         key = self.key_entry.get()
  524.         self.login_entry.delete(0,'end')
  525.         self.pwd_entry.delete(0,'end')
  526.         self.key_entry.delete(0,'end')
  527.         self.crypto.set_key(key)
  528.         self.crypto.decrypt()
  529.         bad = 0
  530.         try:
  531.             self.database.check_login(login)
  532.         except:
  533.             bad = 4
  534.             self.crypto.encrypt()
  535.         if(bad==4):
  536.             self.logbox['text']='Wrong crypto key!!!'
  537.             return
  538.         if(self.database.check_login(login)==0):
  539.             user = self.database.get_user(login)
  540.             if(user[1]=='' and pwd==user[1]):
  541.                 self.curuser=login
  542.                 if(login=='ADMIN'):
  543.                     self.draw_admin_interface('0')
  544.                 else:
  545.                     if(user[2]!='2'):
  546.                         self.draw_user_interface('0')
  547.                     else:
  548.                         bad = 3
  549.             elif(user[1]!=''):
  550.                 hasher = hashlib.md5()
  551.                 hasher.update(pwd.encode('utf-8'))
  552.                 pwd_hash = hasher.hexdigest()
  553.                 if(user[1]==pwd_hash):
  554.                     self.curuser=login
  555.                     if(login=='ADMIN'):
  556.                         self.draw_admin_interface('1')
  557.                     else:
  558.                         if(user[2]!='2'):
  559.                             self.draw_user_interface('1')
  560.                         else:
  561.                             bad = 3
  562.                 else:
  563.                     bad = 1
  564.             else:
  565.                 bad = 1
  566.         else:
  567.             bad = 2
  568.         if(bad!=0):
  569.             if(self.login_fails>=3):
  570.                 exit()
  571.             self.login_fails+=1
  572.             if(bad==1):
  573.                 self.logbox['text']='Wrong password or login'
  574.             elif(bad==2):
  575.                 self.logbox['text']='This login does not exist'
  576.             elif(bad==3):
  577.                 self.logbox['text']='Sorry, your account is blocked'
  578.                    
  579.            
  580.  
  581.        
  582. a = program_windowed()
Add Comment
Please, Sign In to add comment