Lockbox is a command-line tool for generating and managing passwords

Overview

Lockbox

Lockbox

Lockbox is a command-line tool for generating and managing passwords. It uses strong encryption algorithms to securely store your passwords, so you can be sure that your data is safe.

codecov

Joined the Rust Lockbox discord community! Here's the Invite

Project Features

  • Secure: Lockbox uses the cutting-edge AES-GCM (Advanced Encryption Standard with Galoise Counter Mode) encryption algorithm to ensure that your passwords are always safe and secure. You can rest easy knowing that your data is protected by the best.
  • One Master Key: With Lockbox, you only need to remember one master password. The advanced PBKDF2 (Password-Based Key Derivation Function 2) key derivation function takes care of the rest, allowing you to access all your passwords with ease.
  • Command-Line Power: Lockbox comes with a fully functional command-line interface (CLI) and a Read-Eval-Print Loop (REPL), giving you complete control over your password management through the terminal.
  • Tested and Verified: Lockbox’s codebase is thoroughly tested and verified, with code coverage reports available for all to see. You can trust that Lockbox is reliable and dependable.

Install

cargo install lock_box

Usage

  • To use Lockbox, first make sure you have Rust installed on your system.
  • Then, clone this repository with git clone [email protected]:SonuBardai/lockbox.git.
  • You can run it using cargo run. Here’s an overview of the available commands:

Lockbox

Usage: lockbox <COMMAND>

Commands:
  add            Add a new password to the password manager
  generate       Generate a random password.
  list           List all passwords in the password manager
  remove         Remove a password from the password manager
  show           Show a specific password in the password manager
  update-master  Update the master password
  repl           Start an interactive REPL session
  help           Print this message or the help of the given subcommand(s)
  • You can directly trigger the lockbox REPL by simply running lockbox
$ lockbox

Welcome to L🦀CKBOX!

Please enter the master password
>> 

Enter [1] add password [2] generate random password [3] list passwords [4] remove password [5] show password [6] update master password [7] exit
>> add
[1] generate random password [2] enter your own password [3] cancel
>> 1
Please enter the service name
>> github
Please enter the username (Optional)
>> MyAwesomeGithubProfile
Random password generated and copied to clipboard
Password added successfully

Enter [1] add password [2] generate random password [3] list passwords [4] remove password [5] show password [6] update master password [7] exit
>> show
Please enter the service name
>> github
Please enter the username (Optional)
>> MyAwesomeGithubProfile
Password: RkZpFSRPHlFHpK7y

Enter [1] add password [2] generate random password [3] list passwords [4] remove password [5] show password [6] update master password [7] exit
>> exit

How it works

Store

Contributing

Contributions are welcome! If you’d like to contribute, please feel free to open an issue or submit a pull request. Checkout our CONTRIBUTING file for details on how to contribute.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Comments
  • added copy password to clipboard for `add` and `generate` commands

    added copy password to clipboard for `add` and `generate` commands

    This is related to Issue #31 . I have used clipboard crate to copy the password to clipboard.

    In case the clipboard is unavailable, default approach to only present the password is used.

    While generating multiple passwords, no password is copied to clipboard.

    opened by Manikya-Sharma 2
  • Windows glitchy output when using lockbox

    Windows glitchy output when using lockbox

    Output copied from windows command prompt

    Welcome to L🦀CKBOX!
    
    Please enter the master password
    >> 
    
    Enter [1] add password [2] generate random password [3] list passwords [4] remove password [5] show password [6] update master password [7] exit
    >> ^C
    

    This is likely due to the fact that the Windows Command Prompt does not natively support ANSI escape codes, which are used by the colored crate to produce colored output.

    Solution:

    • Try termcolor which supports cross-platform abstraction for colors. Sunset colored crate from lockbox.

    Related to Issue: https://github.com/SonuBardai/lockbox/issues/61

    bug Priority: High 
    opened by SonuBardai 1
  • Write tests for all commands and refactor code to make it more testable

    Write tests for all commands and refactor code to make it more testable

    Addresses https://github.com/SonuBardai/lockbox/issues/47

    Write tests for commands:

    • [x] add_password

    • [x] generate_password

    • [x] show_password

    • [x] remove_password

    • [x] list_passwords

    • [x] copy_to_clipboard https://github.com/SonuBardai/lockbox/issues/43

    • [x] print in PasswordStore

    opened by SonuBardai 1
  • Update about section of CLI

    Update about section of CLI

    • [x] Add help to all commands
    • [x] Add help to all command flags
    • [x] Update ASCII ART
    • [x] Center align ASCII ART on help
      • [x] Update tests for get_about
    • [x] Update README
    opened by SonuBardai 1
  • Resolve missing `lxcb` dependencies on ci workflow

    Resolve missing `lxcb` dependencies on ci workflow

    Addresses clipboard dependencies issue introduced in this PR https://github.com/SonuBardai/lockbox/pull/34

    Closes Issue https://github.com/SonuBardai/lockbox/issues/35

    opened by SonuBardai 1
  • Add tests for new print with color functions

    Add tests for new print with color functions

    Functions added in this PR https://github.com/SonuBardai/lockbox/pull/72

    These are the functions: https://github.com/SonuBardai/lockbox/blob/cba904ed7f81b5b06f2300c38c23d87a99bb3641/src/cli/io.rs#L67-L102

    help wanted good first issue testing 
    opened by SonuBardai 0
  • Immediately display

    Immediately display "Master password incorrect" message on CLI

    lockbox add --service dummy
    Please enter the master password
    >> 
    Please enter the password
    >> 
    Error: Master password incorrect. Please try again.
    

    Don't wait for user entering the password to be saved if master password is incorrect

    bug good first issue 
    opened by SonuBardai 0
  • Use password flags to pass paths to files containing passwords

    Use password flags to pass paths to files containing passwords

    Currently, the flags --password, --master, and --new-master accepts password values directly. This can be a vulnerability as the passwords can be easily read from command history. Rather, these flags should accept file paths that contain passwords.

    cargo run -- update-master --master ./current_master.txt --new-master /tmp/new_master.txt
    
    opened by SonuBardai 0
  • Show all password entries with matching service when username is not provided while searching

    Show all password entries with matching service when username is not provided while searching

    When there's multiple passwords associated with a single service, it helps organize the passwords by also adding the username which the password is linked with. A show password command looks for the exact match of [service + username]. It would be convenient if it had a broader scope where it first searched for matching services, and then go deeper into searching for specific username only if a username is provided. If there's no username provided in the search query then all password entries matching the service would make sense.

    Current behavior

    $ lockbox list
    Service: instagram, Username: myaccount, Password: jOSjoewmgnosjgo
    Service: facebook, Username: someusername-1, Password: OybNRFgdx7l5PK8f
    Service: facebook, Username: someusername-2, Password: UJRJI1d2t2IqbEkq
    
    $ lockbox show --service facebook --username someusername-1
    Password: OybNRFgdx7l5PK8f
    
    $ lockbox show --service facebook
    Password not found
    

    Desired behavior:

    $ lockbox show --service facebook --username someusername-1
    Password: OybNRFgdx7l5PK8f
    
    $ lockbox show --service facebook
    Username: someusername-1, Password: OybNRFgdx7l5PK8f
    Username: someusername-2, Password: UJRJI1d2t2IqbEkq
    
    $ lockbox show --service facebook --username someusername-1
    Password: OybNRFgdx7l5PK8f
    
    $ lockbox show --service facebook --username someusername-3
    Password not found
    
    enhancement good first issue cli repl 
    opened by SonuBardai 0
  • Create an update password command

    Create an update password command

    There is no update-password flow in the tool right now. The way we update passwords is by deleting the old one and adding a new password. This is not ideal. We need an update password flow in the CLI and REPL. It should have options similar to the add-password command.

    - User enters: service [Required]; username [Optional]
    - Search for entry in store with matching service & username
    - If found
        - User enters new password; password is updated
    - else
        - Print password not found (OR) Create a new password (trigger the add password command)
    
    enhancement good first issue cli repl 
    opened by SonuBardai 0
  • Prompt to re-enter master password on first setup of password store, and on updating master password

    Prompt to re-enter master password on first setup of password store, and on updating master password

    Problem:

    Right now we're only reading the master password once and using it to encrypt the password file. If the user mis-types the master password there's no way to gain access to the passwords stored in the password store.

    Solution:

    Ask the user to re-enter the master password and compare the two master password inputs before using the master password to encrypt the file. We want to do this in two cases:

    1. Updating master password. This feature was setup here: https://github.com/SonuBardai/lockbox/pull/57
    2. Setting up the password store for the first time (either through CLI or REPL). ie. here when we're creating a new password file when the file does not exist.
    enhancement help wanted good first issue 
    opened by SonuBardai 6
A command line tool for managing financial investment portfolios written in Rust.

A command line tool for managing financial investment portfolios written in Rust. This project is the modern successor of finance. Installation You ca

Markus Zoppelt 15 Dec 21, 2022
CLI tool for managing your 2FA authentication codes written in pure Rust.

(O)TP (VA)ULT - ova. ova is a simple CLI tool which lets you manage your TOTPs, or basically lets you get your two-way authentication code straight to

Giorgi Anakidze 3 Apr 28, 2023
🗂️ A simple, opinionated, tool, written in Rust, for declaratively managing Git repos on your machine.

gitrs ??️ A simple, opinionated, tool, written in Rust, for declaretively managing Git repos on your machine. "simple" - limited in what it supports.

Colton J. McCurdy 14 May 30, 2023
The Zero Knowledge Whitelist Tool is a powerful utility for managing an address whitelist using Zero-Knowledge (ZK) proofs.

zk_whitelist: A Zero Knowledge Whitelist Tool The Zero Knowledge Whitelist Tool is a powerful utility for managing an address whitelist using Zero-Kno

Nikos Koumbakis 4 Nov 21, 2023
Library and CLI tool for generating Radix Babylon Accounts.

Wallet Compatible Derivation This repo is a package containing two crates - a library named wallet_compatible_derivation and binary named wallet_compa

Radix DLT 3 Feb 28, 2024
tool for generating wordlists or extending an existing one using mutations.

gorilla gorilla is the ultimate wordlist tool packing a lot of amazing utilities like: building wordlists based on patterns (like crunch) building wor

andrei 348 Jan 3, 2023
Fiddi is a command line tool that does the boring and complex process of checking and processing/watching transactions on EVM compatible Blockchain.

Fiddi is a command line tool that does the boring and complex process of checking and processing/watching transactions on EVM compatible Blockchain.

Ahmad Abdullahi Adamu 7 Jan 9, 2023
A simple and secure rust command-line tool to protect your text by encrypting and decrypting it using the robust AES-256 algorithm.

Secret Keeper A simple and secure command-line tool to protect your text by encrypting and decrypting it using the robust AES-256 algorithm. Built wit

Kunal Bagaria 9 May 11, 2023
Dexios-Core is a library used for managing cryptographic functions and headers that adhere to the Dexios format.

What is it? Dexios-Core is a library used for managing cryptographic functions and headers that adhere to the Dexios format. Security Dexios-Core uses

brxken 3 Jul 4, 2022
Elegant and simple software for managing personal finance.

kash Elegant and simple software for managing personal finance. ⚠️ This project is still a work-in-progress. Author Kees van Voorthuizen License Licen

Kees van Voorthuizen 4 Oct 17, 2022
A command-line tool to export FoundationDB stored protocol buffers to ClickhouseDB

fdb-ch-proto-export A command-line tool to export FoundationDB stored Protocol buffers to ClickhouseDB. Installation N/A Usage fdb-ch [command] fdb-c

Enlay 7 May 26, 2022
Kubernetes controller written in Rust for automatically generating and updating secrets

Kubernetes controller written in Rust for automatically generating and updating secrets

Loc Mai 6 Nov 8, 2022
A Rust library for generating cryptocurrency wallets

Table of Contents 1. Overview 2. Build Guide 2.1 Install Rust 2.2a Build from Homebrew 2.2b Build from Crates.io 2.2c Build from Source Code 3. Usage

Aleo 552 Dec 29, 2022
Common protocol for generating ZK proofs for blocks on different blockchains.

Proof Protocol Decoder A flexible protocol that clients (eg. full nodes) can use to easily generate block proofs for different chains. Specification I

Polygon Zero 3 Oct 5, 2023
Easily and securely share files from the command line. A fully featured Firefox Send client.

Notice: the default Send host is provided by @timvisee (info). Please consider to donate and help keep it running. ffsend Easily and securely share fi

Tim Visée 6.3k Dec 25, 2022
RGB smart contracts: client-facing library & command-line for desktop and mobile

RGB smart contracts RGB is confidential & scalable client-validated smart contracts for Bitcoin & Lightning. It embraces the concepts of private & mut

RGB: scalable & private smart contracts for bitcoin & lightning 4 Mar 15, 2023
Cardano Command Line Interface (CLI) (Deprecated)

Deprecated Note: This repository implements supports for Cardano Byron, and will not be updated to works on Cardano Shelley and further. cardano-cli T

Input Output 87 Oct 9, 2022
Trustworthy encrypted command line authenticator app compatible with multiple backups.

cotp - command line totp authenticator I believe that security is of paramount importance, especially in this digital world. I created cotp because I

Reply 71 Dec 30, 2022
Rust command line program for Bitcoin brainwallet

brainwallet Rust command line program for Bitcoin brainwallet as implemented at https://www.bitaddress.org. To run it, first install Rust, e.g. from h

Frank Buss 3 Dec 30, 2021