Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #exist errors
- #-*-coding: cp1251 -*-
- __author__ = 'Sergey aka j7sx'
- __email__ = "admin@mobipayer.ru"
- __name__= 'pwdhelper'
- __title__ = 'password helper with sqllite3'
- __version__ = '0.25'
- __python_version__ = '2.7.10'
- import sqlite3 as db
- import hashlib
- import base64
- import re
- import pyaes
- #создаём базу и таблицы, если не существует
- conn = db.connect('main.db')
- c = conn.cursor()
- 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)''')
- print "Добро пожаловать в менеджер паролей"
- print "Разрешены только буквы латинского алфавита и цифры"
- name = raw_input("Представьтесь: ").strip()
- if not re.match(r'^[a-zA-Z0-9]+$', name):
- raise SystemExit("Разрешены только буквы латинского алфавита и цифры")
- c.execute("SELECT COUNT(login) FROM user WHERE user.login=?", (name,))
- user = c.fetchone()
- if user[0] != 1:
- ask_to_create = (raw_input("Этого имени нет в базе. Желаете его использовать? Y/N ")).capitalize()
- if ask_to_create == 'Y':
- while 1:
- name_pwd = raw_input("Придумайте пароль: ")
- name_pwd2 = raw_input("Пароль ещё раз: ")
- if name_pwd == name_pwd2:
- hash_pwd = hashlib.sha224(name_pwd).hexdigest()
- u_create = c.execute("INSERT INTO user(login, password) VALUES (?, ?)", (name, hash_pwd,))
- print "Ник - ", name, "и пароль", name_pwd, "зарегистрированы"
- print "Для авторизации, запустите ещё раз"
- conn.commit()
- raw_input("Нажми Enter")
- break
- else:
- print "Пароли не совпадают, повторите ввод."
- else:
- raise SystemExit('Пока!')
- else:
- key = raw_input('Введите секретную фразу не более 32 символов и запомните её: ')
- if not re.match(r'^[a-zA-Z0-9]+$', service):
- raise SystemExit('Только цифры и буквы латинского алфавита!')
- while len(key) < 32:
- key += '{'
- if len(key) == 32:
- break
- while 1:
- pwd = hashlib.sha224(raw_input("Введите пароль: ")).hexdigest()
- c.execute("SELECT password FROM user WHERE user.login=?", (name, ))
- pwd_db = c.fetchone()
- if pwd_db[0] == pwd:
- print "Приветствую, ", name
- while 1:
- task = (raw_input('''
- add - добавить новый сервис.
- all - посмотреть все имеющиеся.
- ls - посмотреть имеющийся.
- exit - выход.
- ''')).lower()
- if task == 'add':
- print "Допускаются латинские буквы и цифры"
- service = raw_input("Введите название сервиса: ")
- if not re.match(r'^[a-zA-Z0-9]+$', service):
- raise SystemExit('Только цифры и буквы латинского алфавита!')
- serv_login = raw_input("Введите логин: ")
- if not re.match(r'^[a-zA-Z0-9]+$', serv_login):
- raise SystemExit('Только цифры и буквы латинского алфавита!')
- service_password = raw_input("Введите пароль: ")
- print key
- aes = pyaes.AESModeOfOperationCTR(key)
- ciphertext = aes.encrypt(service_password)
- print ciphertext
- if not re.match(r'^[a-zA-Z0-9]+$', service_password):
- raise SystemExit('Только цифры и буквы латинского алфавита!')
- c.execute("INSERT INTO service(username, service_name, service_login, service_pwd) VALUES (?, ?, ?, ?)", (name, service, serv_login, ciphertext,))
- conn.commit()
- print "Сервис добавлен."
- elif task == 'ls':
- serv_name = raw_input("Введите название сервиса: ")
- c.execute("SELECT service_login,service_pwd FROM service WHERE service.username=? AND service.service_name = ?", (name, serv_name,))
- aes = pyaes.AESModeOfOperationCTR(key)
- for i in c.fetchall():
- print 'логин \t- ', i[0]
- print 'пароль \t- ', aes.decrypt(i[1]).decode('utf-8')
- elif task == 'all':
- c.execute("SELECT service_name FROM service WHERE service.username = ?", (name,))
- for i in c.fetchall():
- print i[0]
- c.execute("SELECT service_name FROM service WHERE service.username = ?", (name,))
- if c.fetchone() is None:
- print "Сервисы ещё не были добавлены"
- elif task == 'exit':
- raise SystemExit('До встречи!')
- else:
- print "Пароль не верный, повторите ввод"
- c.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement