hush

What is hush?

Hush is a simple password manager for unix based devices. It was inspired by pass. In all honesty I made it to practice programming in golang, this is my first project in golang excluding solving some questions from advent of code 2015 (the first two days and the first part of day 3).

Passwords are stored in a .hush folder in the users home directory. In specific an sqlite3 database, passwords, is created in the .hush directory. Passwords are stored in the passwords table in the passwords database which is in the .hush folder.

Although this project was inspired by pass, it does not use gpg encrypted files to store passwords, and it lacks other features like using git for version control on the stored passwords, which is honestly a genius idea but since I am not using files to store the seperate passwords I did not really see the point.

If you really want a password manager for your unix based device please use pass or one of its clients for other platforms, pass has a community of contributers and some extensions of pass even have encryption, something that hush lacks (but honestly shouldn't I was just lazy - might add it later). This was just a project for learning not use, even I don't use this so please don't either.

Using hush

We can list all the existing passwords in the database:

aarochuk@laptop ~ $ ./hush
Password Name|            Username|            Password         
_______________________________________________________   
         Bank|           WorldBank|              hfkrwf                  
        Email|          WorldEmail|       %o34Kf8{`]w30        
        Phone|          WorldPhone|        ^0p!Hy637p14
            

We can show individual passwords by searching for the passwordName/userName

aarochuk@laptop ~ $ ./hush Bank/WorldBank 
The password to Bank/WorldBank is hfkrwf
            

We can create a password by using insert, every password must have a password name but mustn't have a username, the format is always PasswordName/UserName, if there is no username the format is PasswordName/

./hush insert School/WorldSchool
Enter your password: helloschool
Successfully added password for School/WorldSchool

You can create multiline passwords by using the -m flag

./hush insert Work/Software -m 
Enter your password (press Ctrl+D or Ctrl+Z to end):
This
Is A Multiline
Password
Successfully added password for Work/Software

You can generate a password by using the generate command (original I know). When using the generate command, you have to specify the length of the password you want to be generated. In addition, there are flags that allow you to specify if you dont want numbers, letters or symbols in your password. If you dont want numbers in your password use the -nn flag, for no symbols use the -ns flag and for no letters use the -nl flag.

./hush generate MySpace/Profile 15 -ns
Successfully added password for MySpace/Profile

You can edit a password by using edit in which case you have to enter the password.

./hush edit MySpace/Profile
Enter your password: NewPassword
Successfully updated password for MySpace/Profile

To use password generation for an edited password use the -g flag. In which case you have to specify the length and any of the other password generation flags still apply.

./hush edit MySpace/Profile -g 10
Successfully updated password for MySpace/Profile

You can delete a password by using the remove command and you just specify the PasswordName/UserName to delete the password.

./hush delete School/WorldSchool
Are you sure you want to delete your password (y/n): y
Successfully deleted password from database

Installation

Really I could have generated the executable binary and provided it directly for download, but, for no reason at all you would have to get go working on your computer yourself and use go build to get the executable binary. Did I do this to discourage use? Na, I was just lazy tbh. Just clone the repo (the link is at the top of the page - click on the github icon), then run

go build hush.go