Advertisement
j7sx

main.py

Aug 6th, 2015
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.29 KB | None | 0 0
  1. #-*-coding: utf-8 -*-
  2. #!/usr/bin/env python
  3.  
  4. from kivy.app import App
  5. from kivy.uix.boxlayout import BoxLayout
  6. import sqlite3 as db
  7. import hashlib
  8. import re
  9. import pyaes
  10.  
  11. conn = db.connect('main.db')
  12. conn.text_factory = str
  13. c = conn.cursor()
  14. c.execute('PRAGMA encoding="UTF-8";')
  15. c.execute('''CREATE TABLE IF NOT EXISTS user
  16.    (login text, password text) ''')
  17. c.execute('''CREATE TABLE IF NOT EXISTS service
  18.    (username text, service_name text, service_login text, service_pwd text)''')
  19.  
  20. class Root(BoxLayout):
  21.     def reg(self):
  22.         var1 = self.ids.name
  23.         c.execute("SELECT COUNT(login) FROM user WHERE user.login=?", (var1.text,))
  24.         user = c.fetchone()
  25.         if user[0] != 1:
  26.             if self.ids.name_pwd.text == self.ids.name_pwd2.text:
  27.                 hash_pwd = hashlib.sha224((self.ids.name_pwd.text).encode('utf-8')).hexdigest()
  28.                 c.execute("INSERT INTO user(login, password) VALUES (?, ?)", (var1.text, hash_pwd,))
  29.                 conn.commit()
  30.                 self.ids.sm.current = 'sc5'
  31.             else:
  32.                 self.ids.sm.current = 'sc4'
  33.  
  34.     def ent(self):
  35.         var2 = self.ids.name_e
  36.         c.execute("SELECT COUNT(login) FROM user WHERE user.login=?", (var2.text,))
  37.         _user = c.fetchone()
  38.         if _user[0] == 1:
  39.             pwd = hashlib.sha224((self.ids.pwd.text).encode('utf-8')).hexdigest()
  40.             c.execute("SELECT password FROM user WHERE user.login=?", (var2.text,))
  41.             pwd_db = c.fetchone()
  42.             if pwd_db[0] == pwd:
  43.                 self.ids.sm.current='sc6'
  44.             else:
  45.                 self.ids.sm.current = 'sc7'
  46.         else:
  47.             self.ids.sm.current='sc7'
  48.     def add_serv(self):
  49.         var2 = self.ids.name_e
  50.         key = (self.ids.secret.text).encode('utf-8')
  51.         if len(key) < 32:
  52.             while len(key) < 32:
  53.                 key += '{'.encode('utf-8')
  54.         elif len(key) > 32:
  55.             key = key[0:31]
  56.         aes = pyaes.AESModeOfOperationCTR(key)
  57.         ciphertext = aes.encrypt((self.ids.serv_pwd.text).encode('utf-8'))
  58.         c.execute("INSERT INTO service(username, service_name, service_login, service_pwd) VALUES (?, ?, ?, ?)",
  59.                 (var2.text, self.ids.serv_name.text, self.ids.serv_login.text, ciphertext,))
  60.         conn.commit()
  61.         self.ids.sm.current='sc10'
  62.         self.ids.sn.text='Сервис, '+self.ids.serv_name.text+' - добавлен.'
  63.     def all(self):
  64.         self.ids.sm.current='sc11'
  65.         var2 = self.ids.name_e
  66.         c.execute(u"SELECT service_name FROM service WHERE service.username = ?", (var2.text,))
  67.         for i in c.fetchall():
  68.             self.ids.s_out.text+=i[0]+'\n'
  69.         c.execute(u"SELECT service_name FROM service WHERE service.username = ?", (var2.text,))
  70.         if c.fetchone() is None:
  71.             self.ids.s_out.text='Сервисы не были добавлены.'+'\n'
  72.     def ls(self):
  73.         var2 = self.ids.name_e
  74.         key = (self.ids.secret.text).encode('utf-8')
  75.         if len(key) < 32:
  76.             while len(key) < 32:
  77.                 key += '{'.encode('utf-8')
  78.         elif len(key) > 32:
  79.             key = key[0:31]
  80.         self.ids.sm.current='sc13'
  81.         try:
  82.             c.execute(u"SELECT service_name FROM service WHERE service.username = ?", (var2.text,))
  83.             check_serv = c.fetchall()
  84.             if self.ids.ask_serv.text not in check_serv[0]:
  85.                 self.ids.sm.current='sc15'
  86.         except IndexError as e:
  87.             self.ids.sm.current='sc15'
  88.         c.execute( "SELECT service_login,service_pwd FROM service WHERE service.username=? AND service.service_name = ?",
  89.             (var2.text, self.ids.ask_serv.text,))
  90.         aes = pyaes.AESModeOfOperationCTR(key)
  91.         self.ids.answ_serv.text='Сервис, '+self.ids.ask_serv.text
  92.         for i in c.fetchall():
  93.             try:
  94.                 self.ids.list_serv.text='логин - '+'\t'+i[0]+'\n' + 'пароль - '+'\t'+aes.decrypt(i[1]).decode('utf-8')+'\n'
  95.             except UnicodeDecodeError as e:
  96.                 self.ids.sm.current='sc14'
  97.             except TypeError as e:
  98.                 self.ids.sm.current='sc14'
  99.  
  100. class main(App):
  101.  
  102.     def build(self):
  103.         self.title = 'PwdHelper'
  104.         return Root()
  105.  
  106.  
  107. if __name__ == '__main__':
  108.     main().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement