A tool for keeping secure passwords. The database is protected with a paraphrase -at least 30 characters long- It encrypts the storage. Done in modern C++, boost and CryptoPP. Every password is identified by a unique key.
mpwd has a console interface: mpwd.app, the console app provides several commands: Init, Save, and Search.
The first step to securely store passwords is to initialize the data secure-storage.
- --p <paraphrase>
- --f <filename> (OPTIONAL)
Example 1: Initialize a secure database using a paraphrase without specifyng the filename
./mpwd.app --init --p InsecureParagrahaOnlyForDevTest12345$$Example 2: Initialize a secure database specifyng a paraphrase and a file
mpwd.app --init --p Th1sAppIsAsS3cur3AsStrongIsYourParagr@ph -f /home/john/.secure-file-dbIt add or update a account.
- --key <unique_id>
- --val <your_secret>
- --username <your_user_name>
- --service <service_name>
- --tags <tag_list>
- --url <the_url>
- --p <paragraph>
- --f <filename>
Example 1: Stores (add if doesn't exist) the entry identified by gmail with the password my_gmail_insecure_pass
mpwd.app --p InsecureParagrahaOnlyForDevTest12345$$ --save --key gmail --val my_gmail_insecure_passExample 2: Stores (add if doesn't exist) the entry identified by gmail with the password my_insecure_password with the property username with john.doe@gmail.com
mpdw.app --p InsecureParagrahaOnlyForDevTest12345$$ --save --key gmail --val my_insecure_password --username john.doe@gmail.comExample 3: Stores (add if doesn't exist) the entry identified by gmail with the password my_insecure_password with the property username with john.doe@gmail.com and the property tags with email,personal
mpdw.app --p InsecureParagrahaOnlyForDevTest12345$$ --save --key gmail --val my_insecure_password --username john.doe@gmail.com --tags email,personalExample 4: Stores (add if doesn't exist) the entry identified by gmail with the password my_insecure_password with the property username with john.doe@gmail.com and the property tags with email,personal and the propery url with https://gmail.com
mpdw.app --p InsecureParagrahaOnlyForDevTest12345$$ --save --key gmail --val my_insecure_password --username john.doe@gmail.com --tags email,personal --url https://gmail.comCheck _dummy_db_base64.sh for more examples
It searchs into the datatabase and shows the actual password if the paramater show is especified, also shows the history of changes if the parameter history is specified.
- --keyword <search_keywrod>
- --show
- --history
Example 1: Searchs for the keyword gmail
mpwd.app --search --p InsecureParagrahaOnlyForDevTest12345$$ --keyword gmailExample 2: Searches for the keyword gmail and shows the actuall password and history of changes
mpwd.app --search --p InsecureParagrahaOnlyForDevTest12345$$ --keyword gmail --show --historyExample 3: run the file _dummy_db.sh
./_dummy_db.shIt creates a dummy database with debugging options: --encoding none --encrypt none It creates 4 unique entries: JibJab, github, npm, and paypal. You can open the file VERY_INSECURE_DB with the seralized objects.
The parameters encrypt and encoding canbe used independly to debug the mpwd Options for encoding are: none (default), url (not supported), and base64 Options for encrypt are: none (debug) and salsa2
When working with the code use the encrypt parameter with the value none:
./bin/mpwd.app --init --f VERY_INSECURE_DB --p DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD --encoding none --encrypt noneThe file content is:
22 serialization::archive 17 0 0 0 -374564288 89 DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD_DUMMY_PASSWORD 0 0 0 0All the content is produced by the serialization system boost
Note: encoding and encrypt should be set when init, otherwise mpwd will throw an error.
All the test are in the folder tests, to compile the test use the command:
make build-testTo run all the test use the command:
make testClone de repository, then go to the mpwd folder and then build new image
git clone https://github.com/lemenendez/mpwd.git
cd mpwd
docker build -t mpwd .
docker run mpwd -d -v /home/YOURUSER/mpwd:/usr/src