Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-*-coding: utf-8 -*-
- #!/usr/bin/env python
- from kivy.app import App
- from kivy.uix.boxlayout import BoxLayout
- import sqlite3 as db
- import hashlib
- import re
- import pyaes
- conn = db.connect('main.db')
- conn.text_factory = str
- c = conn.cursor()
- c.execute('PRAGMA encoding="UTF-8";')
- c.execute('''CREATE TABLE IF NOT EXISTS user
- (login text, password text) ''')
- c.execute('''CREATE TABLE IF NOT EXISTS service
- (username text, service_name text, service_login text, service_pwd text)''')
- class Root(BoxLayout):
- def reg(self):
- var1 = self.ids.name
- c.execute("SELECT COUNT(login) FROM user WHERE user.login=?", (var1.text,))
- user = c.fetchone()
- if user[0] != 1:
- if self.ids.name_pwd.text == self.ids.name_pwd2.text:
- hash_pwd = hashlib.sha224((self.ids.name_pwd.text).encode('utf-8')).hexdigest()
- c.execute("INSERT INTO user(login, password) VALUES (?, ?)", (var1.text, hash_pwd,))
- conn.commit()
- self.ids.sm.current = 'sc5'
- else:
- self.ids.sm.current = 'sc4'
- def ent(self):
- var2 = self.ids.name_e
- c.execute("SELECT COUNT(login) FROM user WHERE user.login=?", (var2.text,))
- _user = c.fetchone()
- if _user[0] == 1:
- pwd = hashlib.sha224((self.ids.pwd.text).encode('utf-8')).hexdigest()
- c.execute("SELECT password FROM user WHERE user.login=?", (var2.text,))
- pwd_db = c.fetchone()
- if pwd_db[0] == pwd:
- self.ids.sm.current='sc6'
- else:
- self.ids.sm.current = 'sc7'
- else:
- self.ids.sm.current='sc7'
- def add_serv(self):
- var2 = self.ids.name_e
- key = (self.ids.secret.text).encode('utf-8')
- if len(key) < 32:
- while len(key) < 32:
- key += '{'.encode('utf-8')
- elif len(key) > 32:
- key = key[0:31]
- aes = pyaes.AESModeOfOperationCTR(key)
- ciphertext = aes.encrypt((self.ids.serv_pwd.text).encode('utf-8'))
- c.execute("INSERT INTO service(username, service_name, service_login, service_pwd) VALUES (?, ?, ?, ?)",
- (var2.text, self.ids.serv_name.text, self.ids.serv_login.text, ciphertext,))
- conn.commit()
- self.ids.sm.current='sc10'
- self.ids.sn.text='Сервис, '+self.ids.serv_name.text+' - добавлен.'
- def all(self):
- self.ids.sm.current='sc11'
- var2 = self.ids.name_e
- c.execute(u"SELECT service_name FROM service WHERE service.username = ?", (var2.text,))
- for i in c.fetchall():
- self.ids.s_out.text+=i[0]+'\n'
- c.execute(u"SELECT service_name FROM service WHERE service.username = ?", (var2.text,))
- if c.fetchone() is None:
- self.ids.s_out.text='Сервисы не были добавлены.'+'\n'
- def ls(self):
- var2 = self.ids.name_e
- key = (self.ids.secret.text).encode('utf-8')
- if len(key) < 32:
- while len(key) < 32:
- key += '{'.encode('utf-8')
- elif len(key) > 32:
- key = key[0:31]
- self.ids.sm.current='sc13'
- try:
- c.execute(u"SELECT service_name FROM service WHERE service.username = ?", (var2.text,))
- check_serv = c.fetchall()
- if self.ids.ask_serv.text not in check_serv[0]:
- self.ids.sm.current='sc15'
- except IndexError as e:
- self.ids.sm.current='sc15'
- c.execute( "SELECT service_login,service_pwd FROM service WHERE service.username=? AND service.service_name = ?",
- (var2.text, self.ids.ask_serv.text,))
- aes = pyaes.AESModeOfOperationCTR(key)
- self.ids.answ_serv.text='Сервис, '+self.ids.ask_serv.text
- for i in c.fetchall():
- try:
- self.ids.list_serv.text='логин - '+'\t'+i[0]+'\n' + 'пароль - '+'\t'+aes.decrypt(i[1]).decode('utf-8')+'\n'
- except UnicodeDecodeError as e:
- self.ids.sm.current='sc14'
- except TypeError as e:
- self.ids.sm.current='sc14'
- class main(App):
- def build(self):
- self.title = 'PwdHelper'
- return Root()
- if __name__ == '__main__':
- main().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement