Advertisement
j7sx

pwdhelper v.0.2

Jul 25th, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.96 KB | None | 0 0
  1. #-*-coding: cp1251 -*-
  2. __author__ = 'Sergey aka j7sx'
  3. __email__ = "admin@mobipayer.ru"
  4. __name__= 'pwdhelper'
  5. __title__ = 'password helper with sqllite3'
  6. __version__ = '0.2'
  7. __python_version__ = '2.7.10'
  8.  
  9. import sqlite3 as db
  10. import hashlib
  11. import base64
  12. import re
  13.  
  14. #создаём базу и таблицы, если не существует
  15. conn = db.connect('main.db')
  16. c = conn.cursor()
  17. c.execute('''CREATE TABLE IF NOT EXISTS user
  18. (login text, password text)''')
  19.  
  20. c.execute('''CREATE TABLE IF NOT EXISTS service
  21. (username text, service_name text, service_login text, service_pwd text)''')
  22.  
  23. print "Добро пожаловать в менеджер паролей"
  24. name = raw_input("Представьтесь: ").strip()
  25. if not re.match(r'^[a-zA-Z0-9]+$', name):
  26.     raise SystemExit("Разрешены только буквы латинского алфавита и цифры")
  27.     raw_input()
  28. c.execute("SELECT COUNT(login) FROM user WHERE user.login=?", (name,))
  29. user = c.fetchone()
  30.  
  31. if user[0] != 1:
  32.     ask_to_create =  (raw_input("Этого имени нет в базе. Желаете его использовать? Y/N ")).capitalize()
  33.     if ask_to_create == 'Y':
  34.         while 1:
  35.             name_pwd = raw_input("Придумайте пароль: ")
  36.             name_pwd2 = raw_input("Пароль ещё раз: ")
  37.             if name_pwd == name_pwd2:
  38.                 hash_pwd = hashlib.sha224(name_pwd).hexdigest()
  39.                 u_create = c.execute("INSERT INTO user(login, password) VALUES (?, ?)", (name, hash_pwd,))
  40.                 print "Ник - ", name, "и пароль", name_pwd, "зарегистрированы"
  41.                 print "Для авторизации, запустите ещё раз"
  42.                 conn.commit()
  43.                 raw_input("Нажми Enter")
  44.                 break
  45.             else:
  46.                 print "Пароли не совпадают, повторите ввод."
  47.     else:
  48.         raise SystemExit('Пока!')
  49.  
  50. else:
  51.     while 1:
  52.         pwd = hashlib.sha224(raw_input("Введите пароль: ")).hexdigest()
  53.         c.execute("SELECT password FROM user WHERE user.login=?", (name, ))
  54.         pwd_db = c.fetchone()
  55.         if  pwd_db[0] == pwd:
  56.             print "Приветствую, ", name, "Что будем делать? "
  57.             while 1:
  58.                 task = (raw_input('''
  59.                        add - добавить новый сервис.
  60.                        all - посмотреть все имеющиеся.
  61.                        ls  - посмотреть имеющийся.
  62.                        exit -выход.
  63.                ''')).lower()
  64.                 if task == 'add':
  65.                     service = raw_input("Введите название сервиса: ")
  66.                     if not re.match(r'^[a-zA-Z0-9]+$', service):
  67.                         raise SystemExit('Только цифры и буквы латинского алфавита!')
  68.                     serv_login = raw_input("Введите логин: ")
  69.                     if not re.match(r'^[a-zA-Z0-9]+$', serv_login):
  70.                         raise SystemExit('Только цифры и буквы латинского алфавита!')
  71.                     service_password = raw_input("Введите пароль: ")
  72.                     enc_sp = base64.b32encode(service_password)
  73.                     if not re.match(r'^[a-zA-Z0-9]+$', service_password):
  74.                         raise SystemExit('Только цифры и буквы латинского алфавита!')
  75.                     c.execute("INSERT INTO service(username, service_name, service_login, service_pwd) VALUES (?, ?, ?, ?)", (name, service, serv_login, enc_sp,))
  76.                     conn.commit()
  77.                     print "Сервис добавлен."
  78.                 elif task == 'ls':
  79.                     serv_name = raw_input("Введите название сервиса: ")
  80.                     c.execute("SELECT service_login,service_pwd FROM service WHERE service.username=? AND service.service_name = ?", (name, serv_name,))
  81.                     for i in c.fetchall():
  82.                         print 'логин \t- ', i[0]
  83.                         print 'пароль \t- ', base64.b32decode(i[1])
  84.                 elif task == 'all':
  85.                     c.execute("SELECT service_name FROM service WHERE service.username = ?", (name,))
  86.                     for i in c.fetchall():
  87.                             print i[0]
  88.                     c.execute("SELECT service_name FROM service WHERE service.username = ?", (name,))
  89.                     if c.fetchone() is None:
  90.                         print "Сервисы ещё не были добавлены"
  91.                 else:
  92.                     task == 'exit'
  93.                     raise SystemExit('До встречи!')
  94.         else:
  95.             print "Пароль не верный, повторите ввод"
  96.  
  97. c.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement