ppbash.sh は、フレーズを元にパスワードを生成し、管理するためのシンプルなbashスクリプトです。
- フレーズから決定論的にパスワードを生成します。
- パスワードの元データはバイナリ形式で保存され、平文では保存されません。
- bashの自動補完に対応しており、保存したパスワードの識別名を補完できます。
- 複数のパスワード生成ルール(長さ、エンコード方式)を簡単に追加できます。
.bashrc や .zshrc などのシェル設定ファイルに以下の行を追加し、シェルを再起動してください。
source /path/to/ppbash.shpb<ルール名> <識別名> '<フレーズ>' の形式でコマンドを実行します。
# 例: pb20gbase91 を使ってパスワードを生成
pb20gbase91 my-service-password 'this is my secret phrase'- 成功すると、パスワードが表示され、
~/.pb20gbase91/my-service-passwordにパスワードの元となるデータが保存されます。 - フレーズに空白が含まれる場合は、必ず引用符で囲んでください。
一度生成したパスワードは、フレーズを省略して再度表示できます。
pb20gbase91 my-service-passwordコマンドの後に <Tab> キーを押すと、保存済みの識別名を補完できます。
pb20gbase91 <Tab>
# my-service-password などが補完候補として表示されるppmenu コマンドで、保存されているすべてのパスワードのファイル構造を tree コマンドで表示します。
ppmenuデフォルトで以下のコマンドが利用できます。
pb20gbase91: SHA256とBase91を使い、20文字のパスワードを生成します。pb60gbase64: SHA512とBase64を使い、60文字のパスワードを生成します。ppmenu: 保存されているパスワードのディレクトリ構造を表示します。
新しいパスワード生成ルールを追加するには、ppbash.sh に pb から始まる名前の関数を追加します。
既存の関数をコピーして、_genpass に渡す引数(ハッシュコマンド、エンコードコマンド、長さ)を変更するのが簡単です。
# 例: 30文字のbase64パスワードを生成する関数
pb30base64() {
local pass_func="$FUNCNAME"
local dir="$HOME/.$pass_func"
local filename="$1"
local phrase="$2"
_usage $pass_func "$phrase" "$filename" || return 1
_init_pass_dir "$dir"
# ハッシュ、エンコード、長さを変更
_genpass "sha256sum" "base64" "30" "$phrase" || return 1
_register_func_dir
}
# .bashrc を再読み込みするか、シェルを再起動すると新しい関数が使えるようになります。- コマンドの実行ログとしてシェルの履歴 (
~/.bash_historyなど) にフレーズが保存されるため、セキュリティ上の注意が必要です。 - パスワード自体はバイナリ化されてますが、パスワードを識別するためのファイル名は平文で保存されます。