コード例 #1
0
ファイル: command_handler.py プロジェクト: LordGhostX/PVault
def generate(args):
    # handles generation of passwords
    if len(args) >= 1:
        # If we have more arguments then we are dealing with the db here
        # request and verify the master password before proceeding
        master = hash_pass(
            getpass("Enter master password to generate password: "******"Incorrect master password")
            return
        password = None
        if len(args) >= 2:
            # A password was specified so use that
            password = args[1]
        else:
            # generate a new password because none was specified
            password = generate_password()
        account = args[0]
        success = add_password(master, account, password)
        if success:
            copy_text(password)
            print("Newly saved password copied to clipboard!")
        else:
            print("Cancelled Operation!")
    else:
        # Just generate a random password
        copy_text(generate_password())
        print("Newly generated password copied to clipboard!")
コード例 #2
0
def register():
    ds = datastore.Client()
    user_data = request.get_json()

    query = ds.query(kind='user')
    query.add_filter("email", '=', user_data["email"])
    can_be_registered = len(list(query.fetch())) == 0
    response = {"success": can_be_registered}

    if can_be_registered:
        extra_keys = [k for k in user_data if k not in __user_fields]
        for k in extra_keys:
            del user_data[k]

        new_user = datastore.Entity(key=ds.key('user'))
        user_data["dynamic_salt"] = mk_salt()
        user_data["password"] = hash_pass(user_data["password"],
                                          user_data["dynamic_salt"])
        user_data["parcels"] = json.dumps([])

        new_user.update(user_data)
        ds.put(new_user)

        del user_data["dynamic_salt"]
        del user_data["password"]
        response["user"] = user_data
    else:
        response[
            "cause"] = f"User with email {user_data['email']} is already registered"

    return json.dumps(response)
コード例 #3
0
ファイル: command_handler.py プロジェクト: LordGhostX/PVault
def delete(args):
    # handles the removing of password profiles from the database
    # request and verify the master password before proceeding
    master = hash_pass(
        getpass("Enter master password to delete account password: "******"Incorrect master password")
        return

    r = True
    if len(args) == 0:
        # if no account was specified, remove all
        confirm = input(
            "Are you sure you want to delete all password in the database (y/n)? "
        )
        # confirm first incase it was a mistake
        if confirm.lower() in ["y", "yes"]:
            delete_profile(master)
            print("Completely deleted password database")
            r = False
        else:
            r = True
    else:
        confirm = input(
            "Are you sure you want to delete the user password in the database (y/n)? "
        )
        if confirm.lower() in ["y", "yes"]:
            delete_profile(master, args[0])
            print("Completely deleted user password in the database")
            r = False
        else:
            r = True

    if r:
        print("Cancelled Operation!")
コード例 #4
0
def create_db():
    # Creates our password database initiating it with our master password
    path = detect_path()

    # Create and hash the master password
    while True:
        master_pass = getpass("Set a master password: "******"Enter master password again: ")
        if master_pass == master_pass_2:
            del master_pass_2
            break
        print("The passwords don't match!\n")
    master_pass = hash_pass(master_pass)

    # Setup DB
    conn = sqlite3.connect(path)
    with conn:
        c = conn.cursor()
        cmd = """CREATE TABLE IF NOT EXISTS passwords (
                    id integer PRIMARY KEY,
                    account text NOT NULL,
                    password text NOT NULL);"""
        c.execute(cmd)
    conn.close()
    encryptDB(path, master_pass)
コード例 #5
0
ファイル: command_handler.py プロジェクト: LordGhostX/PVault
def account(args):
    # handles getting of password from database
    # request and verify the master password before proceeding
    master = hash_pass(
        getpass("Enter master password to get account password: "******"Incorrect master password")
        return
    account = None
    if len(args) != 0:
        # an account was specified to retrieve so use that
        account = args[0]
    get_passwords(master, account)
コード例 #6
0
ファイル: command_handler.py プロジェクト: LordGhostX/PVault
def reset(args):
    # handles resetting of all passwords in the database
    # request and verify the master password before proceeding
    master = hash_pass(
        getpass("Enter master password to reset account password: "******"Incorrect master password")
        return
    # ask for confirmation before proceeding
    confirm = input(
        "Are you sure you want to reset all password in the database (y/n)? ")
    if confirm.lower() in ["y", "yes"]:
        resetDB(master)
        print("Completely reset password database")
    else:
        print("Cancelled Operation!")
コード例 #7
0
    def route_wrapper(*args, **kwargs):
        response = {}
        ds = datastore.Client()
        passed_data = request.get_json()
        email = passed_data["email"]
        password = passed_data["password"]

        query = ds.query(kind='user')
        query.add_filter("email", '=', email)
        results = list(query.fetch())
        if len(results) < 1:
            response["success"] = False
            response["cause"] = "User with given email does not exist"
        else:
            user = results[0]
            if hash_pass(password, user["dynamic_salt"]) == user["password"]:
                return route_func(ds=ds, user=user, *args, **kwargs)
            else:
                response["success"] = False
                response["cause"] = "Invalid password"
        return json.dumps(response)