Advertisement
Guest User

LABA 3 SUKA PIZDA

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