https://github.com/yamnikov-oleg/pss
Simple cli password manager
https://github.com/yamnikov-oleg/pss
cli cli-app cli-application encryption password-manager password-storage
Last synced: about 1 year ago
JSON representation
Simple cli password manager
- Host: GitHub
- URL: https://github.com/yamnikov-oleg/pss
- Owner: yamnikov-oleg
- License: mit
- Created: 2016-05-07T18:51:50.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2017-11-02T15:33:12.000Z (over 8 years ago)
- Last Synced: 2025-03-25T01:51:36.172Z (about 1 year ago)
- Topics: cli, cli-app, cli-application, encryption, password-manager, password-storage
- Language: Go
- Size: 41 KB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# pss [](https://goreportcard.com/report/github.com/yamnikov-oleg/pss) [](https://travis-ci.org/yamnikov-oleg/pss)
Simple but secure CLI password manager written in Go.
## Building
* Install latest version of Go from [golang.org](https://golang.org/).
* Make sure you have $GOPATH setup.
* Add $GOPATH/bin to your $PATH.
* `go get github.com/yamnikov-oleg/pss`
* PROFIT
## Usage
Before using pss you must initialize password storage with `pss init`.
It will promt for *master password*, which will be used to encrypt your storage. Please, make a strong master password, but remember it! If you lose it, you will *lose all your passwords*.
```
$ pss init
Enter master-password:
Repeat:
Successfully created new password storage at /home/oleg/.pss_storage/storage
```
You can add new password record to the storage with `pss insert` or `pss i`:
```
$ pss i github.com yamnikov-oleg
Master-password:
Password for yamnikov-oleg at github.com:
Repeat:
Successfully saved the record
```
To view all the passwords you have ever saved, type `pss list` or `pss ls`:
```
$ pss ls
Master-password:
Contents of the storage:
yamnikov-oleg @ github.com
workjob @ gmail.com
workjob@gmail.com @ twitter.com
```
To retrieve a password and use it for logging in or something else, type `pss retrieve` or `pss r`:
```
$ pss r twitter
Master-password:
Password for:
workjob@gmail.com @ twitter.com
has been copied to your clipboard.
Use Ctrl-V or 'Paste' command to use it.
```
Notice that the password is copied directly into the clipboard and not showed on the screen. Therefore, your account won't be compromised by your terminal history.
You can always view all the available commands by calling `pss` without arguments:
```
$ pss
Usage: pss
Available commands:
dump Dump storage contents into json file.
Usage: dump
gen Generate random password of given length (default 12).
Alises: g
Usage: gen [length]
init Make a new password storage.
Usage: init
insert Put a new password record into the storage.
Alises: ins, i
Usage: insert
list Print list of saved records, filtred by optional search query.
Alises: ls, l
Usage: list [search query]
load Load dump from json file into the storage.
Usage: load
modify Modify a record in the storage.
Alises: mod, m, update, upd, u
Usage: modify [username]
remove Remove specific record from storage.
Alises: rm
Usage: remove [username]
retrieve Load a password from storage to clipboard
Alises: r, checkout, co
Usage: retrieve [username]
```
## Encryption
You password storage is encrypted using [AES-256](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard) cryptography argorithm with [cipher feedback mode](https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Cipher_Feedback_.28CFB.29). Master password is also hashed with [SHA256](https://en.wikipedia.org/wiki/SHA-2) before using as a cipher key.
## Security
You can pass your password storage file whereever you want, but with caution. While it's not practically possible to decrypt it without knowing the *encryption key*, *master password* is usually much shorter and predictable, so it would be enough to bruteforce all the short passwords than 32-byte keys to break your storage.
But with a strong master password it's much safer.
If an attacker has bruteforce rate of one million combinations per second, he would crack the 10-symbol password in 18 thousand years.
12-symbol - in 74 million years.
20-symbol - in 10^22 years.