checkpsw — ターミナル向けパスワード強度チェッカー兼ジェネレーター

Security

概要

checkpswはターミナルで使うことを想定したパスワード強度チェッカー兼ジェネレーターです。与えたパスワードに対しスコアと「何が問題か」を分かりやすく出力し、改善方法まで案内してくれます。検出対象としては流出データベースとの照合やキーボード配列パターン、よくある数字・日付の付加、leet表記(o→0、a→4等)、文字種の偏りなど多面的なチェックを行います。コマンドラインから即座に強度診断を行えるため、開発者やセキュリティ意識の高いユーザーの手元ツールとして便利です。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 3
  • ファイル数: 5
  • メインの言語: Python

主な特徴

  • コマンドラインでパスワードを評価し、スコアと人間向けの改善アドバイスを表示
  • 流出パスワードデータベースや辞書的な弱パターンに対する照合(READMEに記載)
  • キーボードパターン、日付トリック、leet変換など複数の脆弱性パターンを検出
  • 暗号学的に安全なパスワードをオンデマンドで生成

技術的なポイント

checkpswはPython製の小さなツールで、主要実装はcheckpsw_2.pyにまとまっている構成が見て取れます。pyproject.tomlとsetup.pyが含まれているため、パッケージ化・配布を念頭に置いた設計であり、エントリポイントを登録してコマンドラインからcheckpswとして呼び出せることが想定されます。

解析ロジックは複数のルールベース検出器から構成されるのが一般的で、本ツールも以下のような観点で評価している点がREADMEから読み取れます。

  • 長さ評価(短すぎる/長いが容易に推測されるなど)
  • 文字種の多様性(大文字・小文字・数字・記号の混在度)
  • キーボードパターン(隣接キーの連続: qwerty等)
  • 日付/年号の付加(1988、1990等の末尾付与)
  • leetや典型的な置換によるバイパス試行の検出(e→3、a→4等)
  • 流出データベース照合(READMEに「checks your passwords against breach databases」とあるため、ローカル辞書や外部APIを用いた照合処理が含まれている可能性が高い)

パスワード生成は「cryptographically secure」と明記されており、Python標準のsecretsモジュールやos.urandomを利用した実装であることが想定されます。これにより、ランダム性と予測困難性が担保されます。スコアリングは10点満点のような簡潔な数値と、視覚的なゲージ(例: TERRIBLEなどのラベル)で結果を示すため、ユーザーが直感的に理解できます。

パッケージの小規模さ(ファイル数5、コミット数が少ない)から、依存関係は軽量でセルフコンテインドな実装である可能性が高く、導入・運用が容易です。一方で、リアルタイムの流出データベース参照や大規模辞書照合を行う場合は、ネットワーク接続や大きなデータファイルが必要になり得るため、実運用ではプライバシーやAPI利用制限(レート制限)に注意が必要です。

開発観点では、拡張ポイントが明確で、ルールの追加やカスタム辞書の導入、出力フォーマット(JSON等)対応、CIでのテスト追加などを容易に行える設計に見えます。パッケージ化が行われているため、pip経由のインストールや、システムのPATHに置いての日常利用も想定しやすいです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • checkpsw_2.py: file
  • pyproject.toml: file
  • setup.py: file

まとめ

軽量で即戦力になるターミナル向けパスワード診断ツール。導入が簡単で日常的なチェックに向く。

リポジトリ情報:

READMEの抜粋:

checkpsw

terminal password strength checker and generator. checks your passwords against breach databases, keyboard patterns, leet speak tricks, date patterns, character diversity, and more — then tells you exactly what’s wrong and how to fix it.

also generates cryptographically secure passwords on demand.

demo

$ checkpsw "jessica1998"

  password:  jessica1998
  strength:  ░░░░░░░░░░ TERRIBLE
  score:     0/10

  problems:
    ✗ 11 chars is okay but not great
    ✗ it's basically "...