Skip to content

bashだけで作るオレオレパスワード生成&マネージャ

Notifications You must be signed in to change notification settings

haturatu/ppbash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

ppbsh - ORE ORE パスワード管理スクリプト

ppbash.sh は、フレーズを元にパスワードを生成し、管理するためのシンプルなbashスクリプトです。

特徴

  • フレーズから決定論的にパスワードを生成します。
  • パスワードの元データはバイナリ形式で保存され、平文では保存されません。
  • bashの自動補完に対応しており、保存したパスワードの識別名を補完できます。
  • 複数のパスワード生成ルール(長さ、エンコード方式)を簡単に追加できます。

インストール

.bashrc.zshrc などのシェル設定ファイルに以下の行を追加し、シェルを再起動してください。

source /path/to/ppbash.sh

使い方

パスワードの生成と保存

pb<ルール名> <識別名> '<フレーズ>' の形式でコマンドを実行します。

# 例: 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.shpb から始まる名前の関数を追加します。 既存の関数をコピーして、_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など) にフレーズが保存されるため、セキュリティ上の注意が必要です。
  • パスワード自体はバイナリ化されてますが、パスワードを識別するためのファイル名は平文で保存されます。

About

bashだけで作るオレオレパスワード生成&マネージャ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages